ΙΔΙΟΤΗΤΕΣ ΑΝΤΙΚΕΙΜΕΝΟΥ

Ξεκίνησε από parsenopoulou, 12 Μαΐου 2023, 01:43:14 ΜΜ

« προηγούμενο - επόμενο »

parsenopoulou

Συνάδελφοι καλησπέρα. 
Θα ήθελα τη γνώμη σας πάνω σε μια πρόταση που πρέπει να χαρακτηριστεί Σωστή ή Λανθασμένη :
<<Δύο αντικείμενα μιας κλάσης μπορούν να έχουν διαφορετικές μεθόδους>>. 
Ήταν απορία ενός μαθητή στο σχολείο. Αρχικά απάντησα ότι η πρόταση είναι Λάθος. Μου απάντησε  όμως ότι στο σχολικό βιβλίο στο παράδειγμα με τα λουλούδια, το αντικείμενο Μαμά έχει μέθοδο ΚΑΝΕΙΠΑΡΑΓΓΕΛΙΑ() και το αντικείμενο Άννα έχει μέθοδο ΛΑΜΒΑΝΕΙΠΑΡΑΓΓΕΛΙΑ(), που σημαίνει ότι 2 αντικείμενα της ίδιας κλάσης (ΠΕΛΑΤΗΣ ) έχουν μεταξύ τους διαφορετικές ιδιότητες. 
Θα εκτιμούσα τη γνώμη σας γιατί ομολογώ ότι προβληματίστηκα.

Καραμαούνας Πολύκαρπος

Καταλαβαίνω ότι και οι δύο μέθοδοι: ΚΑΝΕΙΠΑΡΑΓΓΕΛΙΑ() και ΛΑΜΒΑΝΕΙΠΑΡΑΓΓΕΛΙΑ() είναι μέθοδοι της κλάσης ΠΕΛΑΤΗΣ άρα και των αντικειμένων της Μαμά και Άννα. Επομένως η πρόταση είναι όντως Λάθος.

kdimitris

Μια κλάση περιγράφει γενικά το αντικείμενο (πχ πελάτης). Όλα τα αντικείμενα που προέρχονται από την κλάση έχουν όλες τις ιδιότητες και όλες τις μεθόδους της κλάσης, απλά μπορεί να μην τα χρησιμοποιούν όλα ανάλογα με τον ρόλο τους στην εφαρμογή. Πχ αν η παραγγελία γίνει ανάποδα (η Αννα θέλει να στείλει λουλούδια στην Μαμά) τότε το κάθε αντικείμενο θα χρησιμοποιήσει τις αντίστοιχες μεθόδους που του χρειάζονται.
Άρα λοιπόν το σενάριο απλά αναφέρει τις ιδιότητες και τις μεθόδους του κάθε αντικειμένου που απαιτείται εκείνη την στιγμή.
Ένα παράδειγμα φαντάσου είναι ένας πελάτης σε ένα e-shop. Μπορεί ο κύριος Α (αντικείμενο της κλάσης Πελάτης) να έχει καταχωρήσει μόνο μια διεύθυνση παράδοσης και ο κύριος Β (αντικείμενο και αυτός της ίδιας κλάσης) να έχει 3 διευθύνσεις παράδοσης. Στον Α θα φαίνεται μόνο μία στον Β και οι 3. Δεν σημαίνει ότι επειδή ο Β θα έχει άλλες ιδιότητες (επιπλέον διευθύνσεις που δεν έχει ο Α) προήρθε από άλλη κλάση

akalest0s

Ο αντίλογος σε αυτό που σου είπε ο μαθητής, είναι σελ. 92, συμπληρωματικό μαθητή:
"Μια κλάση (...) μπορεί να παράγει ένα απεριόριστο πλήθος δομικά ίδιων αντικειμένων."
Εξηγείς ότι το διάγραμμα των αντικειμένων που αναφέρει ο μαθητής, παρουσιάζει (και βασίζεται) στο σενάριο "αποστολή λουλουδιών", οπότε δεν είναι πλήρες, αλλά παρουσιάζει την ανάλυση της μεθόδου της §4.2.1, όπως αυτή προέκυψε. Υπάρχει ένας συνειρμός σε εξέλιξη σε αυτές τις σελίδες του βιβλίου.
Δες επίσης και το διάγραμμα κλάσεων, του ίδιου παραδείγματος, σελ. 95. Στην κλάση πελάτης ανήκουν και οι δύο μέθοδοι.

Φυσικά δεν είναι επαρκές αυτό, όφειλε διευκρίνιση το βιβλίο σε αυτό το σημείο. Αλλά.. γνωστά και χιλιοειπωμένα.
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK

parsenopoulou

Συνάδελφοι ευχαριστώ πολύ για τις απαντήσεις και το χρόνο σας! 

Γιαννούλης Γιώργος

Νομίζω το μεγαλύτερο πρόβλημα σε αυτή την ερώτηση το έχουμε όταν μιλάμε για ιεραρχίες κλάσεων όπως π.χ.:


Τότε αν έχω ένα αντικείμενο της κλάσης Α έστω αντΑ και ένα αντικείμενο της κλάσης Β έστω αντΒ, τότε αφού μας λέει ότι ένα αντικείμενο της κλάσης Β είναι ένα Α άρα έχω το αντΑ που είναι της κλάσης Α και το αντΒ που έιναι κλάσης Α. Τα δύο αυτά αντικείμενα όμως έχουν και έχουν διαφορετικές μεθόδους.

Ευτυχώς νομίζω δεν μπαίνουμε σε τέτοιες λεπτομέρειες και το αντικειμενοστρεφή τον αντιμετωπίζει 'επιφανειακά' το μάθημα κυρίως για να προστεθεί νέα ύλη, μιας και δεν υπάρχει κωδικόποιηση.

Foto

Ένα αντικείμενο κλάσης ΑντΑ και ΑντΒ, λέμε ότι είναι (is a) ΑντΑ και ΑντΒ. Το ρήμα Έχω το λέμε για το αντοκειμενο που έχει ένα άλλο αντικείμενο, όπως μια ιδιότητα,, πχ το ΑντΑ έχει το ΑντΓ (has a). Η διαφορά του είναι με το έχει, είναι μεγάλη. Στη περίπτωση του είναι, σημαίνει ότι η διεπαφή που ορίζει η κλάση ΑντΑ υπάρχει σε ένα αντικείμενο που είναι ΑντΑ ανεξάρτητα από αλλά αντικείμενα που μπορεί να είναι ανεξάρτητα από άλλες διεπαφές (interfaces) που μπορεί να έχει. Στη περίπτωση που έχουμε το Έχει, το αντικείμενο πχ ΑντΑ να έχει το αντικείμενο ΑντΓ, σημαίνει ότι δεν είναι ΑντΓ, δηλαδή δεν έχει τέτοια διεπαφή, απλά μια ιδιότητα του είναι ένα αντικείμενο ΑντΓ.. θα μπορούσε να υπάρξει ένα αντικείμενο Βιβλιοθήκη με 100 αντικείμενα Βιβλία, δηλαδή η Βιβλιοθήκη Έχει Βιβλία, ως ιδιότητα, πίνακα Βιβλίων . Κανείς δεν θα έφτιαχνε ένα αντικείμενο με δύο διεπαφές Βιβλιοθήκη και Βιβλίο, αυτά τα δύο δεν μπορούν να Είναι ένα αντικείμενο.