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 [2015/01/20 15:06]
gthanos [Η Κλάση]
oop:introduction [2015/02/18 10:32]
gthanos [Η Κλάση]
Line 20: Line 20:
 | Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του συγκεκριμένου τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. Τα αντικείμενα μιας κλάσης διέπονται από τις ίδιες //​εσωτερικές μεταβλητές//​ (δεδομένα) και από τις ίδιες //​συμπεριφορές//​ (συναρτήσεις). Τα αντικείμενα της ίδιας κλάσης μπορεί να διαφέρουν ως προς το περιεχόμενο των //​εσωτερικών τους μεταβλητών//​. ​ | {{ :​oop:​class-object.png ?200|}} | | Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του συγκεκριμένου τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. Τα αντικείμενα μιας κλάσης διέπονται από τις ίδιες //​εσωτερικές μεταβλητές//​ (δεδομένα) και από τις ίδιες //​συμπεριφορές//​ (συναρτήσεις). Τα αντικείμενα της ίδιας κλάσης μπορεί να διαφέρουν ως προς το περιεχόμενο των //​εσωτερικών τους μεταβλητών//​. ​ | {{ :​oop:​class-object.png ?200|}} |
  
-| Το διπλανό σχήμα απεικονίζει διαφορετικές υλοποιήσεις ενός αυτοκινήτου με βάση το αρχικό σχέδιο του συγκεκριμένου μοντέλου. Αντιστρέφοντας το παράδειγμα του αυτοκινήτου,​ όλα τα αυτοκίνητα του συγκεκριμένου μοντέλου αποτελούν υλοποιήσεις του ίδιου αρχικού σχεδίου. | {{:oop:car-class-object.jpg?100 }} |+| Το διπλανό σχήμα απεικονίζει διαφορετικές υλοποιήσεις ενός αυτοκινήτου με βάση το αρχικό σχέδιο του συγκεκριμένου μοντέλου. Αντιστρέφοντας το παράδειγμα του αυτοκινήτου,​ όλα τα αυτοκίνητα του συγκεκριμένου μοντέλου αποτελούν υλοποιήσεις του ίδιου αρχικού σχεδίου. | {{:oop:astra-class-object.png?150 }} |
  
 ==== Κατασκευαστές της Κλάσης (Class Constructors) ==== ==== Κατασκευαστές της Κλάσης (Class Constructors) ====
Line 41: Line 41:
     * Σύνθετους τύπους δεδομένων (Reference Types), Strings, Arrays, Objects κλπ     * Σύνθετους τύπους δεδομένων (Reference Types), Strings, Arrays, Objects κλπ
   - **Kατασκευαστές αντικειμένων**.   - **Kατασκευαστές αντικειμένων**.
-  - **Μεθόδους** (συναρτήσεις στην γλώσσα C)+  - **Μεθόδους** (το αντίστοιχο των ​συναρτήσεων στην γλώσσα C)
  
 ==== Κληρονομικότητα ==== ==== Κληρονομικότητα ====
Line 55: Line 55:
 Με βάση την παραπάνω ιεραρχία,​ μπορούμε να ορίσουμε την αρχική κλάση του αυτοκινούμενου οχήματος,​ την οποία στη συνέχεια να εξειδικεύσουμε σε πιο ειδικές κλάσεις. Οι γλώσσες αντικειμενοστραφούς προγραμματισμού δίνουν την δυνατότητα να δημιουργηθούν ιεραρχίες κλάσεων (//​σχεδίων//​),​ όπου οι πιο ειδικές κλάσεις (**υποκλάσεις - __Sub Classes__**) κληρονομούν τα χαρακτηριστικά των **γονικών (__Super Classes__)** κλάσεων,​ τα οποία εξειδικεύουν περαιτέρω. ​ Με βάση την παραπάνω ιεραρχία,​ μπορούμε να ορίσουμε την αρχική κλάση του αυτοκινούμενου οχήματος,​ την οποία στη συνέχεια να εξειδικεύσουμε σε πιο ειδικές κλάσεις. Οι γλώσσες αντικειμενοστραφούς προγραμματισμού δίνουν την δυνατότητα να δημιουργηθούν ιεραρχίες κλάσεων (//​σχεδίων//​),​ όπου οι πιο ειδικές κλάσεις (**υποκλάσεις - __Sub Classes__**) κληρονομούν τα χαρακτηριστικά των **γονικών (__Super Classes__)** κλάσεων,​ τα οποία εξειδικεύουν περαιτέρω. ​
  
-| Στο διπλανή εικόνα παρουσιάζεται το παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες **β)** το ποδήλατο με ταχύτητες. | {{:​oop:​bicycle-hierarchy.png?​200 |}} |+| Στο διπλανή εικόνα παρουσιάζεται το παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες **β)** το ποδήλατο με ταχύτητες. | {{:​oop:​bicycle-hierarchy.png?​300 |}} | 
 + 
 +=== Επαναχρησιμοποίηση κώδικα με βάση την ιδιότητα της κληρονομικότητας === 
 + 
 +Η ιδιότητα της κληρονομικότητας μας επιτρέπει να επαναχρησιμοποιούμε και να επεκτείνουμε υφιστάμενο κώδικα,​ δημιουργώντας πιο σύνθετες κλάσεις. Στο παράδειγμα του παραπάνω σχήματος η βασική κλάση του ποδηλάτου επεκτείνεται στην κλάση του ποδηλάτου με ταχύτητες προσθέτοντας  
 +  - μία μεταβλητή που αποθηκεύει την τρέχουσα ταχύτητα του ποδηλάτου 
 +  - και 3 μεθόδους:​ μία μέθοδο που αυξάνει την ταχύτητα του ποδηλάτου κατά μία θέση στο γρανάζι,​ μία μέθοδο που μειώνει την ταχύτητα ποδηλάτου κατά μία θέση στο γρανάζι και μία μέθοδο που επιστρέφει την τρέχουσα ταχύτητα ποδηλάτου. 
  
 ==== Διεπαφές - Interfaces ==== ==== Διεπαφές - Interfaces ====
Line 117: Line 124:
     * Εάν μία κλάση δεν είναι καλά σχεδιασμένη ή υλοποιημένη μπορούμε να την ξαναγράψουμε από την αρχή χωρίς να επηρεαστεί ο υπόλοιπος κώδικας.     * Εάν μία κλάση δεν είναι καλά σχεδιασμένη ή υλοποιημένη μπορούμε να την ξαναγράψουμε από την αρχή χωρίς να επηρεαστεί ο υπόλοιπος κώδικας.
   * Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας.   * Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας.
 +
 +| Επόμενο:​ [[:​java:​class | Η κλάση]]|
 +
  
  
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos