oop:introduction

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
oop:introduction [2015/01/20 10:59]
gthanos created
oop:introduction [2015/01/20 13:50]
gthanos [Περιεχόμενα της Κλάσης]
Line 16: Line 16:
 ===== Η Κλάση ===== ===== Η Κλάση =====
  
-Τα αντικείμενα που περιγράψαμε παραπάνω αποτελούν (εναλλακτικές) υλοποιήσεις ενός βασικού μοντέλου ή σχεδίου. ​Για παράδειγμα όταν αγοράζει κάποιος ένα αυτοκίνητο,​ αυτό αποτελεί υλοποίηση ενός ​βασικού σχεδίου. ​Μέρος του **σχεδίου** είναι ​η ύπαρξη κάποιων παραμέτρων όπως το χρώμα ή το επίπεδο του εξοπλισμού.+Τα αντικείμενα που περιγράψαμε παραπάνω αποτελούν (εναλλακτικές) υλοποιήσεις ενός βασικού ​σχεδίου. Για παράδειγμα, όταν αγοράζει κάποιος ένα αυτοκίνητο,​ αυτό αποτελεί υλοποίηση του βασικού σχεδίου του αυτοκινήτου, ​έτσι όπως αυτό υλοποιείται από το εργαστάσιο κατασκευής. Μέρος του **σχεδίου** είναι η ύπαρξη κάποιων παραμέτρων όπως το χρώμα ή το επίπεδο του εξοπλισμού. 
 + 
 +| Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του συγκεκριμένου τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. Τα αντικείμενα μιας κλάσης διέπονται από τις ίδιες //​εσωτερικές μεταβλητές//​ (δεδομένα) και από τις ίδιες //​συμπεριφορές//​ (συναρτήσεις). Τα αντικείμενα της ίδιας κλάσης μπορεί να διαφέρουν ως προς το περιεχόμενο των //​εσωτερικών τους μεταβλητών//​. ​ | {{ :​oop:​class-object.png ?200|}} | 
 + 
 +| Το διπλανό σχήμα απεικονίζει διαφορετικές υλοποιήσεις ενός αυτοκινήτου με βάση το αρχικό σχέδιο του συγκεκριμένου μοντέλου. Αντιστρέφοντας το παράδειγμα του αυτοκινήτου,​ όλα τα αυτοκίνητα του συγκεκριμένου μοντέλου αποτελούν υλοποιήσεις του ίδιου αρχικού σχεδίου. | {{:​oop:​car-class-object.jpg?​100 }} | 
 + 
 +==== Κατασκευαστές της Κλάσης (Class Constructors) ==== 
 + 
 +Στον πραγματικό κόσμο μπορούμε να έχουμε διαφορετικές υλοποιήσεις ενός σχεδίουδιαφοροποιώντας κάποιες αρχικές παραμέτρους στο σχέδιο ​αυτό. Για παράδειγμα,​ μπορούμε να έχουμε διαφορετικές ​εκδόσεις για τα αυτοκίνητα ενός μοντέλου (π.χ. διαφοροποίηση στο ​επίπεδο του εξοπλισμού ή στο χρώμα).  
 + 
 +Ανάλογα,​ στον αντικειμενοστραφή ​προγραμματισμό,​ μία κλάση μπορεί να δώσει διαφοροποιημένα αντικείμενα. Κάθε αντικείμενο υλοποιείται από μία μέθοδο που καλείται κατασκευαστής (//​constructor//​). Ο κατασκευαστής της κλάσης υλοποιεί το κάθε αντικείμενο με βάση το σχέδιο της κλάσης μπορεί να κληθεί για ​διαφορετικά αντικείμενα με διαφορετικές παραμέτρους, οδηγώντας τελικά σε διαφοροποιημένα αντικείμενα ως προς τα χαρακτηριστικά τους 
 + 
 +Mια κλάση μπορεί να έχει περισσότερους του ​ενός κατασκευαστές.  
 + 
 +Οι κατασκευαστές κάνουν τα εξής: 
 +  ​Δεσμεύουν την απαραίτητη μνήμη για το νέο αντικείμενο. 
 +  ​Αρχικοποιούν το αντικείμενο με βάση τις αρχικές τιμές των παραμέτρων με τις οποίες καλείται ​ο κατασκευαστής. 
 + 
 +==== Περιεχόμενα της Κλάσης ==== 
 + 
 +Κάθε κλάση περιέχει κατά βάση τρία (3) πράγματα:​ 
 +  - **Δεδομένα**. Τα δεδομένα διακρίνονται σε: 
 +    * Βασικούς τύπους δεδομένων (Primitive Types), char, int, long, float, double, arrays κλπ 
 +    * Σύνθετους τύπους δεδομένων (Reference Types), Strings, Arrays, Objects κλπ 
 +  - **Kατασκευαστές αντικειμένων**. 
 +  - **Μεθόδους** (συναρτήσεις στην γλώσσα C) 
 + 
 +==== Κληρονομικότητα ==== 
 + 
 +Στον πραγματικό κόσμο πολλά πράγματα μοιράζονται κοινά χαρακτηριστικά. Για ​παράδειγμα
 +  * Υπάρχουν επιμέρους ​τύποι ποδηλάτων,​ όπως mountain, street, bmx κλπ 
 +  * Υπάρχουν επιμέρους τύποι αυτοκινήτων, sport, 4x4, sedan, coupe, supercars, luxury cars. 
 + 
 +Γενικά,​ μπορούμε να ορίσουμε κλάσεις που περιγράφουν γενικότερες έννοιες και στην συνέχεια να τις εξειδικεύσουμε ​περιγράφοντας έννοιες πιο ειδικές. Για παράδειγμα,​ για ένα τζιπ επιβατικό αυτοκίνητο μπορεί να οριστεί η παρακάτω ιεραρχία. 
 + 
 +//​**Αυτοκινούμενο όχημα** --> **Τετράτροχο αυτοκινούμενο όχημα** --> **Επιβατικό τετράτροχο αυτοκινούμενο όχημα** -> **Επιβατικό τετράτροχο αυτοκινούμενο όχημα για χρήση εκτός δρόμου (τζιπ)** --> **Επιβατικό τετράτροχο αυτοκινούμενο όχημα για ​χρήση εκτός δρόμου (τζιπ) - συγκεκριμένο μοντέλο **//. 
 + 
 +Με βάση την παραπάνω ιεραρχία,​ μπορούμε να ορίσουμε την αρχική κλάση ​του αυτοκινούμενου οχήματος,​ την οποία στη συνέχεια να εξειδικεύσουμε σε πιο ειδικές κλάσεις. Οι γλώσσες αντικειμενοστραφούς προγραμματισμού δίνουν την δυνατότητα να δημιουργηθούν ιεραρχίες κλάσεων (//​σχεδίων//​),​ όπου οι πιο ειδικές κλάσεις (**υποκλάσεις - __Sub Classes__**) κληρονομούν τα χαρακτηριστικά των **γονικών (__Super Classes__)** κλάσεων,​ τα οποία ​εξειδικεύουν περαιτέρω.  
 + 
 +| Στο διπλανή εικόνα παρουσιάζεται το παράδειγμα κληρονομικότητας της κλάσης του ποδηλάτου. Από την γενική κλάση του ποδηλάτου προκύπτουν δύο επιμέρους κλάσεις **α)** το ποδήλατο για δύο επιβάτες **β)** το ποδήλατο με ταχύτητες. | {{:​oop:​bicycle-hierarchy.png?200 |}} |
  
-Τον ρόλο του **σχεδίου** με την έννοια που αναφέρεται παραπάνω τον παίζει η **κλάση**. Η κλάση αποτελεί το σχέδιο με βάση το οποίο αντικείμενα του τύπου της κλάσης υλοποιούνται σε ένα πρόγραμμα. 
  
  
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos