oop:introduction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
oop:introduction [2016/02/15 13:48]
gthanos [Κατασκευαστές της Κλάσης (Class Constructors)]
oop:introduction [2016/02/17 10:27]
doufexi
Line 60: Line 60:
 //​**ποδήλατο** --> **ποδήλατο με ταχύτητες** --> **ποδήλατο με ταχύτητες για δύο επιβάτες** -> **ποδήλατο με ταχύτητες και αμορτισέρ για δύο επιβάτες**//​. //​**ποδήλατο** --> **ποδήλατο με ταχύτητες** --> **ποδήλατο με ταχύτητες για δύο επιβάτες** -> **ποδήλατο με ταχύτητες και αμορτισέρ για δύο επιβάτες**//​.
  
-Για το **ποδήλατο με ταχύτητες** η κλάση **ποδήλατο** αποτελεί την γονική κλάση (__Super ​Classes__). Αντίστοιχα για το **ποδήλατο**,​ το **ποδήλατο με ταχύτητες** αποτελεί υποκλάση (__Sub Class__) αυτού.+Για το **ποδήλατο με ταχύτητες** η κλάση **ποδήλατο** αποτελεί την γονική κλάση (__Super ​Class__). Αντίστοιχα για το **ποδήλατο**,​ το **ποδήλατο με ταχύτητες** αποτελεί υποκλάση (__Sub Class__) αυτού.
  
 | Στο διπλανή εικόνα παρουσιάζεται εποπτικά ένα παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες (χωρίς ταχύτητες) **β)** το ποδήλατο με ταχύτητες. <WRAP todo round>​Μπορείτε να προτείνετε κάποια άλλη ιεραρχία κλάσεων για κάποια άλλη οντότητα (π.χ. το αυτοκίνητο) σε αναλογία με αυτή που περιγράψαμε για το ποδήλατο;</​WRAP>​| {{:​oop:​bicycle-hierarchy.png?​300 |}} | | Στο διπλανή εικόνα παρουσιάζεται εποπτικά ένα παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες (χωρίς ταχύτητες) **β)** το ποδήλατο με ταχύτητες. <WRAP todo round>​Μπορείτε να προτείνετε κάποια άλλη ιεραρχία κλάσεων για κάποια άλλη οντότητα (π.χ. το αυτοκίνητο) σε αναλογία με αυτή που περιγράψαμε για το ποδήλατο;</​WRAP>​| {{:​oop:​bicycle-hierarchy.png?​300 |}} |
 +
  
 ==== Διεπαφές - Interfaces ==== ==== Διεπαφές - Interfaces ====
Line 71: Line 72:
   * Η σέλα, το τιμόνι,​ τα πετάλια και τα φρένα ορίζουν τις δυνατότητες αλληλεπίδρασης με ένα ποδήλατο.   * Η σέλα, το τιμόνι,​ τα πετάλια και τα φρένα ορίζουν τις δυνατότητες αλληλεπίδρασης με ένα ποδήλατο.
  
-Ανάλογη είναι η λειτουργία της **διεπαφής** για τον αντικειμενοστραφή προγραμματισμό. Ορίζουμε μία **διεπαφή**,​ ως ένα σύνολο από μεθόδους (δηλ τρόπους αλληλεπίδρασης με τα αντικείμενα),​ δίνοντας μόνο τους ορισμούς των μεθόδων,​ χωρίς την υλοποίηση τους. Εάν μία κλάση υλοποιεί ΟΛΕΣ τις μεθόδους μιας διεπαφής,​ τότε η κλάση είναι σύμφωνη με την συγκεκριμένη διεπαφή. Ο τρόπος που υλοποιεί κάθε κλάση τις μεθόδους της διεπαφής είναι εσωτερικό θέμα της κλάσης και δεν ελέγχεται από την διεπαφή. Επιπλέον,​ μία κλάση μπορεί να υλοποιεί μία ή περισσότερες διεπαφές.+Ανάλογη είναι η λειτουργία της **διεπαφής** ​(interface) ​για τον αντικειμενοστραφή προγραμματισμό. Ορίζουμε μία **διεπαφή**,​ ως ένα σύνολο από μεθόδους (δηλ τρόπους αλληλεπίδρασης με τα αντικείμενα),​ δίνοντας μόνο τους ορισμούς των μεθόδων,​ χωρίς την υλοποίηση τους. Εάν μία κλάση υλοποιεί ΟΛΕΣ τις μεθόδους μιας διεπαφής,​ τότε η κλάση είναι σύμφωνη με την συγκεκριμένη διεπαφή. Ο τρόπος που υλοποιεί κάθε κλάση τις μεθόδους της διεπαφής είναι εσωτερικό θέμα της κλάσης και δεν ελέγχεται από την διεπαφή. Επιπλέον,​ μία κλάση μπορεί να υλοποιεί μία ή περισσότερες διεπαφές.
  
 Ας υποθέσουμε ότι ορίζεται η διεπαφή ''​MotorPropelled''​ η οποία περιγράφει ένα σύνολο μεθόδων που πρέπει να υλοποιούνται από μία κλάση προκειμένου τα αντικείμενα της κλάσης αυτής να είναι ''​MotorPropelled''​ (δηλαδή να κινούνται και με χρήση μηχανής εσωτερικής καύσης). Ας υποθέσουμε ότι οι μέθοδοι που χρειαζόμαστε είναι οι παρακάτω:​ Ας υποθέσουμε ότι ορίζεται η διεπαφή ''​MotorPropelled''​ η οποία περιγράφει ένα σύνολο μεθόδων που πρέπει να υλοποιούνται από μία κλάση προκειμένου τα αντικείμενα της κλάσης αυτής να είναι ''​MotorPropelled''​ (δηλαδή να κινούνται και με χρήση μηχανής εσωτερικής καύσης). Ας υποθέσουμε ότι οι μέθοδοι που χρειαζόμαστε είναι οι παρακάτω:​
Line 97: Line 98:
   * Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας.   * Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας.
  
-| Επόμενο:​ [[:java:class Η κλάση]]|+| Επόμενο:​ [[:java:install ​Εγκατάσταση του περιβάλλοντος ανάπτυξης JDK ]]|
  
  
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos