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/02/18 13:06]
gthanos [Διεπαφές - Interfaces]
oop:introduction [2015/07/05 07:30]
gthanos
Line 7: Line 7:
  
 Τα "​αντικείμενα"​ στον πραγματικό κόσμο έχουν δύο βασικά χαρακτηριστικά:​ Τα "​αντικείμενα"​ στον πραγματικό κόσμο έχουν δύο βασικά χαρακτηριστικά:​
-  - **Κατάσταση (state):** Κάθε αντικείμενο διέπεται από συγκεκριμένα χαρακτηριστικά που ορίζουν την κατάσταση του. Για παράδειγμα ένα αυτοκίνητο έχω συγκεκριμένο χρώμα, ανήκει σε συγκεκριμένο μοντέλο και κάθε χρονική στιγμή έχει μία ταχύτητα και μία κατεύθυνση κίνησης. Τα παραπάνω χαρακτηριστικά διέπουν όλα τα αυτοκίνητα,​ αλλά κάθε αυτοκίνητο έχει τις δικές του τιμές οι οποίες μπορεί να διαφέρουν από τις τιμές άλλων αυτοκινήτων.+  - **Κατάσταση (state):** Κάθε αντικείμενο διέπεται από συγκεκριμένα χαρακτηριστικά που ορίζουν την κατάσταση του. Για παράδειγμα ένα αυτοκίνητο έχει συγκεκριμένο χρώμα, ανήκει σε συγκεκριμένο μοντέλο και κάθε χρονική στιγμή έχει μία ταχύτητα και μία κατεύθυνση κίνησης. Τα παραπάνω χαρακτηριστικά διέπουν όλα τα αυτοκίνητα,​ αλλά κάθε αυτοκίνητο έχει τις δικές του τιμές οι οποίες μπορεί να διαφέρουν από τις τιμές άλλων αυτοκινήτων.
   - **Συμπεριφορά (behaviour)**:​ Κάθε αντικείμενο διέπεται από συγκεκριμένους κανόνες συμπεριφοράς. Για παράδειγμα σε ένα αυτοκίνητο εάν στρίψουμε το τιμόνι στα αριστερά το αυτοκίνητο κινείται αριστερά. __Ο παραπάνω γενικός κανόνας ισχύει για όλα τα αυτοκίνητα__. Η σχέση μεταξύ της γωνίας στροφής του τιμονιού του αυτοκινήτου και της αλλαγή πορείας που αυτή συνεπάγεται μπορεί να διαφέρει μεταξύ διαφορετικών μοντέλων.   - **Συμπεριφορά (behaviour)**:​ Κάθε αντικείμενο διέπεται από συγκεκριμένους κανόνες συμπεριφοράς. Για παράδειγμα σε ένα αυτοκίνητο εάν στρίψουμε το τιμόνι στα αριστερά το αυτοκίνητο κινείται αριστερά. __Ο παραπάνω γενικός κανόνας ισχύει για όλα τα αυτοκίνητα__. Η σχέση μεταξύ της γωνίας στροφής του τιμονιού του αυτοκινήτου και της αλλαγή πορείας που αυτή συνεπάγεται μπορεί να διαφέρει μεταξύ διαφορετικών μοντέλων.
  
 Σε αναλογία των παραπάνω,​ τα αντικείμενα στον αντικειμενοστραφή προγραμματισμό διαθέτουν:​ Σε αναλογία των παραπάνω,​ τα αντικείμενα στον αντικειμενοστραφή προγραμματισμό διαθέτουν:​
   * **Δεδομένα //​(μεταβλητές)//:​** Τα δεδομένα περιγράφουν την κατάσταση του κάθε αντικειμένου και μπορεί η τιμή τους να διαφέρει από αντικείμενο σε αντικείμενο.   * **Δεδομένα //​(μεταβλητές)//:​** Τα δεδομένα περιγράφουν την κατάσταση του κάθε αντικειμένου και μπορεί η τιμή τους να διαφέρει από αντικείμενο σε αντικείμενο.
-  * **Μεθόδους //​(συναρτήσεις)//:​** Οι μέθοδοι περιγράφουν την συμπεριφορά του αντικειμένου και είναι κοινές για όλα τα αντικείμενα ενός συγκεκριμένου τύπου. Για παράδειγμα όλα τα αυτοκίνητα ενός συγκεκριμένου μοντέλου διέπονται απο΄την ίδια σχέση μεταξύ της γωνίας στροφής του τιμονιού και της γωνίας στροφής των δύο μπροστινών τροχών.+  * **Μεθόδους //​(συναρτήσεις)//:​** Οι μέθοδοι περιγράφουν την συμπεριφορά του αντικειμένου και είναι κοινές για όλα τα αντικείμενα ενός συγκεκριμένου τύπου. Για παράδειγμα όλα τα αυτοκίνητα ενός συγκεκριμένου μοντέλου διέπονται από την ίδια σχέση μεταξύ της γωνίας στροφής του τιμονιού και της γωνίας στροφής των δύο μπροστινών τροχών.
  
 ===== Η Κλάση ===== ===== Η Κλάση =====
Line 28: Line 28:
 Ανάλογα,​ στον αντικειμενοστραφή προγραμματισμό,​ μία κλάση μπορεί να δώσει διαφοροποιημένα αντικείμενα. Κάθε αντικείμενο υλοποιείται από μία μέθοδο που καλείται κατασκευαστής (//​constructor//​). Ο κατασκευαστής της κλάσης υλοποιεί το κάθε αντικείμενο με βάση το σχέδιο της κλάσης μπορεί να κληθεί για διαφορετικά αντικείμενα με διαφορετικές παραμέτρους,​ οδηγώντας τελικά σε διαφοροποιημένα αντικείμενα ως προς τα χαρακτηριστικά τους. ​ Ανάλογα,​ στον αντικειμενοστραφή προγραμματισμό,​ μία κλάση μπορεί να δώσει διαφοροποιημένα αντικείμενα. Κάθε αντικείμενο υλοποιείται από μία μέθοδο που καλείται κατασκευαστής (//​constructor//​). Ο κατασκευαστής της κλάσης υλοποιεί το κάθε αντικείμενο με βάση το σχέδιο της κλάσης μπορεί να κληθεί για διαφορετικά αντικείμενα με διαφορετικές παραμέτρους,​ οδηγώντας τελικά σε διαφοροποιημένα αντικείμενα ως προς τα χαρακτηριστικά τους. ​
  
-Mια κλάση μπορεί να έχει περισσότερους του ενός κατασκευαστές. ​ +Mία κλάση μπορεί να έχει ​**περισσότερους του ενός** κατασκευαστές. Οι κατασκευαστές ​είναι συναρτήσεις (μέθοδοι) που ​κάνουν τα εξής:
- +
-Οι κατασκευαστές κάνουν τα εξής:+
   * Δεσμεύουν την απαραίτητη μνήμη για το νέο αντικείμενο.   * Δεσμεύουν την απαραίτητη μνήμη για το νέο αντικείμενο.
   * Αρχικοποιούν το αντικείμενο με βάση τις αρχικές τιμές των παραμέτρων με τις οποίες καλείται ο κατασκευαστής.   * Αρχικοποιούν το αντικείμενο με βάση τις αρχικές τιμές των παραμέτρων με τις οποίες καλείται ο κατασκευαστής.
Line 56: Line 54:
   - κατεύθυνση κίνησης   - κατεύθυνση κίνησης
   - ταχύτητα περιστροφής των πεταλιών   - ταχύτητα περιστροφής των πεταλιών
-Παράλληλα η κλάση μας έχει και κάποιες συναρτήσεις για την μεταβολή της τιμής των παραπάνω μεταβλητών στις οποίες δεν θα επεκταθούμε σε αυτό το σημείο. Ας υποθέσουμε τώρα ότι θέλουμε να σχεδιάσουμε το ποδήλατο με ταχύτητες. Θα χρειαστεί να προσθέσουμε μία νέα μεταβλητή που αντιπροσωπεύει την θέση ​(αριθμό) ​της αλυσίδας στο γρανάζι. Η ιδιότητα της κληρονομικότητας μας επιτρέπει να δημιουργήσουμε τη νέα κλάση του ποδηλάτου με ταχύτητες,​ επεκτείνοντας την κλάση του κλασσικού ποδηλάτου και προσθέτοντας την επιπλέον μεταβλητή και ανάλογη λειτουργικότητα μέσω συναρτήσεων. Η κληρονομικότητα μας επιτρέπει να μην γράψουμε την νέα κλάση από την αρχή αλλά να πατήσουμε πάνω σε ένα υφιστάμενο σχέδιο.+Παράλληλαη κλάση μας ​θα πρέπει να έχει και κάποιες συναρτήσεις για την μεταβολή της τιμής των παραπάνω μεταβλητών στις οποίες δεν θα επεκταθούμε σε αυτό το σημείο. Ας υποθέσουμε τώρα ότι θέλουμε να σχεδιάσουμε το ποδήλατο με ταχύτητες. Θα χρειαστεί να προσθέσουμε μία νέα μεταβλητή που αντιπροσωπεύει την θέση της αλυσίδας στο γρανάζι ​μέσω ενός ακεραίου (π.χ. 1-5 για ένα ποδήλατο με 5 ταχύτητες). Η ιδιότητα της κληρονομικότητας μας επιτρέπει να δημιουργήσουμε τη νέα κλάση του ποδηλάτου με ταχύτητες,​ επεκτείνοντας την κλάση του κλασσικού ποδηλάτου και προσθέτοντας την επιπλέον μεταβλητή ​για την θέση της αλυσίδας στο γρανάζι ​και ανάλογη λειτουργικότητα μέσω συναρτήσεων. Η κληρονομικότητα μας επιτρέπει να μην γράψουμε την νέα κλάση από την αρχή αλλά να πατήσουμε πάνω σε ένα υφιστάμενο σχέδιο.
  
 Επεκτείνοντας την παραπάνω συλλογιστική μπορούμε να έχουμε πολλαπλές ιεραρχίες κλάσεων. Για παράδειγμα,​ από το ποδήλατο με ταχύτητες μπορεί να οριστεί το ποδήλατο για δύο επιβάτες με ταχύτητες ή το ποδήλατο για δύο επιβάτες με ταχύτητες και αμορτισέρ. Επεκτείνοντας την παραπάνω συλλογιστική μπορούμε να έχουμε πολλαπλές ιεραρχίες κλάσεων. Για παράδειγμα,​ από το ποδήλατο με ταχύτητες μπορεί να οριστεί το ποδήλατο για δύο επιβάτες με ταχύτητες ή το ποδήλατο για δύο επιβάτες με ταχύτητες και αμορτισέρ.
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos