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 14:48]
gthanos [Διεπαφές - Interfaces]
oop:introduction [2015/02/15 08:36]
gthanos [Περιεχόμενα της Κλάσης]
Line 16: Line 16:
 ===== Η Κλάση ===== ===== Η Κλάση =====
  
-Τα αντικείμενα που περιγράψαμε παραπάνω αποτελούν (εναλλακτικές) υλοποιήσεις ενός βασικού σχεδίου. Για παράδειγμα,​ όταν αγοράζει κάποιος ​ένα αυτοκίνητο,​ αυτό αποτελεί υλοποίηση του βασικού σχεδίου του αυτοκινήτου,​ έτσι όπως αυτό υλοποιείται από το εργαστάσιο κατασκευής. Μέρος του **σχεδίου** είναι η ύπαρξη κάποιων παραμέτρων όπως το χρώμα ή το επίπεδο του εξοπλισμού.+Τα αντικείμενα που περιγράψαμε παραπάνω αποτελούν (εναλλακτικές) υλοποιήσεις ενός βασικού σχεδίου. Για παράδειγμα,​ όταν ​παράγεται ένα αυτοκίνητο,​ αυτό αποτελεί υλοποίηση του βασικού σχεδίου του αυτοκινήτου,​ έτσι όπως αυτό υλοποιείται από το εργαστάσιο κατασκευής. Μέρος του **σχεδίου** είναι η ύπαρξη κάποιων παραμέτρων όπως το χρώμα ή το επίπεδο του εξοπλισμού.
  
 | Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του συγκεκριμένου τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. Τα αντικείμενα μιας κλάσης διέπονται από τις ίδιες //​εσωτερικές μεταβλητές//​ (δεδομένα) και από τις ίδιες //​συμπεριφορές//​ (συναρτήσεις). Τα αντικείμενα της ίδιας κλάσης μπορεί να διαφέρουν ως προς το περιεχόμενο των //​εσωτερικών τους μεταβλητών//​. ​ | {{ :​oop:​class-object.png ?200|}} | | Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του συγκεκριμένου τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. Τα αντικείμενα μιας κλάσης διέπονται από τις ίδιες //​εσωτερικές μεταβλητές//​ (δεδομένα) και από τις ίδιες //​συμπεριφορές//​ (συναρτήσεις). Τα αντικείμενα της ίδιας κλάσης μπορεί να διαφέρουν ως προς το περιεχόμενο των //​εσωτερικών τους μεταβλητών//​. ​ | {{ :​oop:​class-object.png ?200|}} |
Line 41: Line 41:
     * Σύνθετους τύπους δεδομένων (Reference Types), Strings, Arrays, Objects κλπ     * Σύνθετους τύπους δεδομένων (Reference Types), Strings, Arrays, Objects κλπ
   - **Kατασκευαστές αντικειμένων**.   - **Kατασκευαστές αντικειμένων**.
-  - **Μεθόδους** (συναρτήσεις στην γλώσσα C)+  - **Μεθόδους** (το αντίστοιχο των ​συναρτήσεων στην γλώσσα C)
  
 ==== Κληρονομικότητα ==== ==== Κληρονομικότητα ====
Line 111: Line 111:
   * **Επεκτασιμότητα:​** Η κλάση μπορεί να επεκταθεί μέσω της κληρονομικότητας σε πιο ειδικές κλάσεις.   * **Επεκτασιμότητα:​** Η κλάση μπορεί να επεκταθεί μέσω της κληρονομικότητας σε πιο ειδικές κλάσεις.
   * **Ευκολότερη αποσφαλμάτωση:​** Κατά την αποσφαλμάτωση ο αρχικός έλεγχος μπορεί να γίνει σε επίπεδο κλάσης (**Unit testing**). Αλλαγές σε μία κλάση δεν συνεπάγονται αλλαγές και σε άλλα σημεία του προγράμματος που χρησιμοποιούν την κλάση αυτή.   * **Ευκολότερη αποσφαλμάτωση:​** Κατά την αποσφαλμάτωση ο αρχικός έλεγχος μπορεί να γίνει σε επίπεδο κλάσης (**Unit testing**). Αλλαγές σε μία κλάση δεν συνεπάγονται αλλαγές και σε άλλα σημεία του προγράμματος που χρησιμοποιούν την κλάση αυτή.
 +  * **Μία ομάδα προγραμματιστών μπορεί να εργαστεί παράλληλα:​**
 +    * Ορίζονται τα κατάλληλα interfaces που πρέπει να υλοποιηθούν
 +    * Κάθε προγραμματιστής ή ομάδα υλοποιεί τις επιμέρους κλάσεις που του/​της ανατίθενται.
 +    * Ο έλεγχος και η αποσφαλμάτωση του κώδικα σε μεγάλο βαθμό γίνεται διακριτά ανά κλάση ή ομάδα κλάσεων.
 +    * Εάν μία κλάση δεν είναι καλά σχεδιασμένη ή υλοποιημένη μπορούμε να την ξαναγράψουμε από την αρχή χωρίς να επηρεαστεί ο υπόλοιπος κώδικας.
 +  * Στον αντικειμενοστραφή προγραμματισμό η φάση του σχεδιασμού είναι εξαιρετικά σημαντική. Καλός σχεδιασμός σημαίνει συντηρήσιμος,​ ευκολότερος στην ανάπτυξη κώδικας.
 +
 +| Επόμενο:​ [[:​java:​class | Η κλάση]]|
 +
 +
  
  
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos