Πολυμορφικές μέθοδοι

Ξεκίνησε από ChrisSpa, 24 Μαΐου 2022, 10:44:35 ΠΜ

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

ChrisSpa

Καλημέρα σας, θα ήθελα την γνώμη σας με την ορθότητα των παρακάτω προτάσεων (προφανώς είναι αλληλοσυγκρουόμενες) :

α) Η κλάση Τρίγωνο έχει συνολικά 3 μεθόδους.
β) Η κλάση Τρίγωνο έχει συνολικά 2 μεθόδους.
Screenshot_20220524-094912__01.jpg

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

Ευχαριστώ

petrosp13

H πολυμορφική μέθοδος είναι κληρονομούμενη από την υπερκλάση, αλλά μιλάμε ουσιαστικά για την ίδια μέθοδο
Αυτό το νόημα βγαίνει από το σχολικό βιβλίο, αλλά είναι μεγάλη συζήτηση...
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

dpa2006

Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

Καρκαμάνης Γεώργιος

Για να απαντήσουμε στα ερώτηματα αυτα πρέπει να σταθούμε μόνο στις πληροφορίες του σχολικού βιβλίου και όχι στο τι ισχύει στις υπαρκτές γλώσσες προγραμματισμού.
Το σχολικό βιβλίο δεν αναφέρει ξεκάθαρα τι ακριβώς γίνεται με.την κληρονομικότητα μιας πολυμορφικη μεθόδου. Βλέπουμε όμως  όταν υλοποιεί τις πολυμορφικες μεθόδους με γλώσσα, υλοποιεί μόνο αυτές που είναι στις υποκλασεις. Μπορούμε από εδώ να βγάλουμε το συμπέρασμα ότι στην πραγματικότητα η μέθοδος Υπολογισμός εμβαδού στην υπερκλαση δεν υλοποιείται, απλά αναγράφεται για να δηλώσει τον πολυμορφισμο με τις υποκλασεις.
Άρα η κλασηη Τρίγωνο έχει δύο μεθοδους.

gpapargi

Για αντικείμενο της κλάσης τρίγωνο, υπάρχει τρόπος να εκτελέσεις τη μέθοδο της κλάσης γεωμετρικό σχήμα; Δηλαδή αν ΑΒΓ είναι αντικείμενο της κλάσης τρίγωνο, η εντολή ΑΒΓ.ΥπολογισμόςΕμβαδού(); τι θα εκτελέσει;
Προφανώς τη μέθοδο της υποκλάσης.

Άρα νομίζω ότι είναι 2 οι μέθοδοι και η όποια παρεξήγηση αφορά το να ξεκαθαρίσουμε τι μετράμε.

George Eco

Στα πλαίσια του μαθήματος, όπως κι οι δύο προλαλήσαντες είπαν, οι μέθοδοι είναι δύο.
Όπως στα πλαίσια του μαθήματος οι πίνακες είναι στατικές δομές.

evry

Παράθεση από: Καρκαμάνης Γεώργιος στις 29 Μαΐου 2022, 11:52:33 ΠΜΓια να απαντήσουμε στα ερώτηματα αυτα πρέπει να σταθούμε μόνο στις πληροφορίες του σχολικού βιβλίου και όχι στο τι ισχύει στις υπαρκτές γλώσσες προγραμματισμού.

Με αφορμή το παραπάνω πολύ εύστοχο σχόλιό σου Γιώργο η ερώτηση που μου έρχεται στο μυαλό είναι:
Τι στο καλό μαθαίνουν τα παιδιά σε αυτό το μάθημα;
Ανύπαρκτο αντικειμενοστρεφή προγραμματισμό σε μια ανύπαρκτή γλώσσα;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

#7
Παράθεση από: gpapargi στις 29 Μαΐου 2022, 12:26:37 ΜΜΓια αντικείμενο της κλάσης τρίγωνο, υπάρχει τρόπος να εκτελέσεις τη μέθοδο της κλάσης γεωμετρικό σχήμα; Δηλαδή αν ΑΒΓ είναι αντικείμενο της κλάσης τρίγωνο, η εντολή ΑΒΓ.ΥπολογισμόςΕμβαδού(); τι θα εκτελέσει;
Προφανώς τη μέθοδο της υποκλάσης.

Άρα νομίζω ότι είναι 2 οι μέθοδοι και η όποια παρεξήγηση αφορά το να ξεκαθαρίσουμε τι μετράμε.
Πολύ σωστά Γιώργο, αυτό ήθελα να γράψω κι εγώ. Οποιοι (λανθασμένα) ισχυρίζονται ότι οι μέθοδοι είναι τρεις πρέπει να εξηγήσουν πώς θα ξεχωρίσουν οι ομώνυμες μεθοδοι

Και για να είμαστε δίκαιοι, ενώ το βιβλίο έχει πολλά κακά και η αντικείμενοστρεφης σχεδίαση (όχι προγραμματισμός) είναι ακατάλληλη για το Λύκειο, πρέπει να παραδεχτούμε ότι το πρόβλημα εδω δεν οφείλεται σε αυτα, αλλά στη λάθος απάντηση που δόθηκε από τα θέματα ΟΕΦΕ (αν ισχύουν τα όσα γράφτηκαν εδώ και σε άλλα site).

Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

pgrontas

#8
Παράθεση από: evry στις 29 Μαΐου 2022, 12:59:04 ΜΜΜε αφορμή το παραπάνω πολύ εύστοχο σχόλιό σου Γιώργο η ερώτηση που μου έρχεται στο μυαλό είναι:
Τι στο καλό μαθαίνουν τα παιδιά σε αυτό το μάθημα;
Ανύπαρκτο αντικειμενοστρεφή προγραμματισμό σε μια ανύπαρκτή γλώσσα;
Μαθαίνουν αντικείμενοστρεφη σχεδίαση. Το έχουν δηλώσει οι συγγραφείς του συγκεκριμένου κομματιού.
Προσωπικά  αντικείμενοστρεφη σχεδίαση διδάχθηκα στο 4ο έτος και αφού είχα δει C++ και Java. Και νομίζω αυτός είναι ο κανόνας σε όλες τις σχολές - bottom up.
Πως γινεται τώρα οι μαθητές να τα κάνουν ανάποδα και μισά - είναι ερώτημα για την ιστορία...
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

Foto

Παράθεση από: ChrisSpa στις 24 Μαΐου 2022, 10:44:35 ΠΜΚαλημέρα σας, θα ήθελα την γνώμη σας με την ορθότητα των παρακάτω προτάσεων (προφανώς είναι αλληλοσυγκρουόμενες) :

α) Η κλάση Τρίγωνο έχει συνολικά 3 μεθόδους.
β) Η κλάση Τρίγωνο έχει συνολικά 2 μεθόδους.
Screenshot_20220524-094912__01.jpg

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

Ευχαριστώ
Η κλάση Τρίγωνο έχει αυτό που περιγράφει το πλαίσιο και ότι άλλο είναι. Επειδή είναι Γεωμετρικό σχήμα έχει ότι και αυτό.

Η συνάρτηση (ή μέθοδος) ΥπολογισμόςΕμβαδού() για το αντικείμενο που δημιουργείται από τη κλάση Τρίγωνο είναι μια, αυτή που περιέχει το μπλοκ Τρίγωνο. Η ΥπολογισμοςΕμβαδού() στη κλάση Γεωμετρικό σχήμα θα είναι abstract αλλιώς δεν έχει νόημα (δεν υπάρχει ένας υπολογισμός εμβαδού για οποιοδήποτε σχήμα). Άρα η απάντηση είναι η β, η κλάση έχει 2 μεθόδους.
Ουσιαστικά μόνο η ΑλλαγήΧρωματος() κληρονομείται.
Πολυμορφικες μέθοδοι είναι αυτές που έχουν κοινό όνομα αλλά διαφορετική υπογραφή, πχ μια ζητάει ακέραιους ενώ μια άλλη πραγματικούς,, και δεν έχουν σχέση με τη κληρονομικότητα. Και γενικά δεν έχουν σχέση και με τα αντικείμενα. Είναι θέμα γλώσσας η υποστήριξη πολυμορφικών συναρτήσεων 

Foto

Να συμπληρώσω ότι πολυμορφισμός αντικειμένων είναι στην ουσία η χρήση διεπαφών, ώστε ένα αντικείμενο να μπορεί να έχει περισσότερες από μία διεπαφές. Η διεπαφή είναι ένα σύνολο μεθόδων. Η σχέση κλάσης και υποκλασης σε κάποιες γλώσσες είναι σαν να έχουμε δύο διεπαφές όπου η κάθε μία έχει το όνομα της αντίστοιχης κλάσης. Όταν η υποκλαση έχει ίδια μέθοδο με την αρχική τόσο σε όνομα όσο και σε τύπους και αριθμό παραμέτρων τότε ισχύει αυτή της υποκλάσης. Σε κάποιες γλώσσες γίνεται αν επιλεχθεί το αντικείμενο με την διεπαφή της βάσης (αρχικής κλάσης) τότε θα κληθεί αυτή της αρχικής. Οι abstract μέθοδοι υποχρεώνουν να γίνει το αντίθετο, δηλαδή αν επιλεχθεί η διεπαφή της αρχικής κλάσης θα κληθεί αυτή της υποκλάσης. Έτσι όταν μια κλάση έχει έστω και μια abstract μέθοδο τότε όλη η κλάση λέγεται abstract που σημαίνει ότι δεν μπορεί να δώσει αντικείμενα τύπου αυτής της κλάσης. Θα πρέπει να έχουμε μια υποκλάση που θα υλοποιεί όλες τις abstract κλάσεις της βάσης. Όμως κατά τη χρήση θα μπορούμε να επιλέγουμε διεπαφή, ακόμα και αυτή της abstract κλάσης. Έτσι μπορούμε να έχουμε ένα. Πίνακα με γεωμετρικές επιφάνειες, που στην ουσία θα είναι συνάμα και κάποιου τύπου από μια από τις υποκλασεις όπως το Τρίγωνο και ο Κύκλος.
Αυτός είναι ο πολυμορφισμός αντικειμένων.

gpapargi

Παράθεση από: evry στις 29 Μαΐου 2022, 12:59:04 ΜΜΜε αφορμή το παραπάνω πολύ εύστοχο σχόλιό σου Γιώργο η ερώτηση που μου έρχεται στο μυαλό είναι:
Τι στο καλό μαθαίνουν τα παιδιά σε αυτό το μάθημα;
Ανύπαρκτο αντικειμενοστρεφή προγραμματισμό σε μια ανύπαρκτή γλώσσα;

Περιγράφουν οι συγγραφείς  κάποια χαρακτηριστικά με βάση τις υπάρχουσες γλώσσες. Κάποια πράγματα δεν περιγράφονται με απόλυτη σαφήνεια και άρα προσπαθούμε να καταλάβουμε τι συμβαίνει με βάση τις υπάρχουσες γλώσσες.  Ωστόσο δεν το έχουμε αυτό το δικαίωμα γιατί οι υπάρχουσες γλώσσες δεν είναι σημείο αναφοράς παρά μόνο το σχολικό βιβλίο το οποίο εμπνεύστηκε από αυτές. 
Δηλαδή μιλάμε στον αέρα. 
Μέγα λάθος η είσοδος του αντικειμενοστρεφούς στην ύλη χωρίς αντίστοιχη υποστήριξη από το περιβάλλον. Μπορούσε να μπει το κεφάλαιο 5 διορθωμένο και η ανάδρομή. Θα ήταν και πιο ασκησιακό το μάθημα. Τώρα έβαλαν κάτι που μόνο ως θεωρία ανάπτυξης μπορεί να εξεταστεί με ασφάλεια και άρα το μάθημα ωθήθηκε προς την κατεύθυνση της παπαγαλίας. Ας παπαγαλίσει κάποιος τους όρους χωρίς να τους έχει υλοποιήσει ποτέ σε κάποια γλώσσα. 

akalest0s

Παράθεση από: gpapargi στις 01 Ιουν 2022, 08:58:15 ΠΜΑς παπαγαλίσει κάποιος τους όρους χωρίς να τους έχει υλοποιήσει ποτέ σε κάποια γλώσσα.
Ακόμη και έτσι, η παπαγαλία είναι σημαντικά δυσκολότερη από άλλα σημεία θεωρίας. Οι έννοιες είναι ολότελα αφηρημένες για το δικό τους εμπειρικό πλαίσιο, έως απρόσληπτες.
"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

kLee

Τα είπατε όλα φίλοι μου, απαράδεκτα πράγματα γίνονται στο μάθημα και αστείοι αυτοι εκεί στον ΟΕΦΕ.

Υγεία σε όλους και δύναμη!
Ανδροκλής Πολυμένης

Πληροφορικός