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 Both sides next revision
oop:introduction [2015/02/18 12:54]
gthanos [Διεπαφές - Interfaces]
oop:introduction [2015/02/18 13:02]
gthanos [Διεπαφές - Interfaces]
Line 74: Line 74:
 Ανάλογη είναι η λειτουργία της **διεπαφής** για τον αντικειμενοστραφή προγραμματισμό. Ορίζουμε μία **διεπαφή**,​ ως ένα σύνολο από μεθόδους,​ δίνοντας μόνο τους ορισμούς των μεθόδων,​ χωρίς την υλοποίηση τους. Εάν μία κλάση υλοποιεί ΟΛΕΣ τις μεθόδους μιας διεπαφής,​ τότε η κλάση είναι σύμφωνη με την συγκεκριμένη διεπαφή. Ο τρόπος που υλοποιεί κάθε κλάση τις μεθόδους της διεπαφής,​ είναι εσωτερικό θέμα της κλάσης και δεν ελέγχεται από την διεπαφή. Επιπλέον,​ μία κλάση μπορεί να υλοποιεί μία ή περισσότερες διεπαφές. Ανάλογη είναι η λειτουργία της **διεπαφής** για τον αντικειμενοστραφή προγραμματισμό. Ορίζουμε μία **διεπαφή**,​ ως ένα σύνολο από μεθόδους,​ δίνοντας μόνο τους ορισμούς των μεθόδων,​ χωρίς την υλοποίηση τους. Εάν μία κλάση υλοποιεί ΟΛΕΣ τις μεθόδους μιας διεπαφής,​ τότε η κλάση είναι σύμφωνη με την συγκεκριμένη διεπαφή. Ο τρόπος που υλοποιεί κάθε κλάση τις μεθόδους της διεπαφής,​ είναι εσωτερικό θέμα της κλάσης και δεν ελέγχεται από την διεπαφή. Επιπλέον,​ μία κλάση μπορεί να υλοποιεί μία ή περισσότερες διεπαφές.
  
-Επανερχόμενοι στο παράδειγμα του ποδηλάτου,​ ας υποθέσουμε ότι ορίζεται η διεπαφή ''​MotorPropelled''​ η οποία περιγράφει ένα σύνολο μεθόδων που πρέπει να υλοποιούνται από μία κλάση προκειμένου τα αντικείμενα τις κλάσης αυτής να είναι ''​MotorPropelled''​ (δηλαδή να κινούνται και με χρήση μηχανής εσωτερικής καύσης). Ας υποθέσουμε ότι οι μέθοδοι που χρειαζόμαστε είναι οι παρακάτω +Ας υποθέσουμε ότι ορίζεται η διεπαφή ''​MotorPropelled''​ η οποία περιγράφει ένα σύνολο μεθόδων που πρέπει να υλοποιούνται από μία κλάση προκειμένου τα αντικείμενα της κλάσης αυτής να είναι ''​MotorPropelled''​ (δηλαδή να κινούνται και με χρήση μηχανής εσωτερικής καύσης). Ας υποθέσουμε ότι οι μέθοδοι που χρειαζόμαστε είναι οι παρακάτω: 
-  * %%engineStart%% +  * engineStart 
-  * %%engineStop%% +  * engineStop 
-  * %%accelerate%% +  * accelerate 
-  * %%applyBrake%%+  * getFuelConsumption 
 +  * addFuel
  
-<WRAP tip> Στη γλώσσα Java o μεταγλωτιστής απαιτεί τη υλοποίηση ​όλων των ​μεθόδων ​που ορίζει η διεπαφή από την κλάση ​που την υλοποιεί</​WRAP>​+Αν οποιαδήποτε κλάση υλοποιεί τις παραπάνω ​μεθόδους ​τότε μπορούμε να πούμε ότι υλοποιεί το συγκεκριμένο interface, δηλ τα αντικείμενα της κλάσης αυτής ​είναι MotorPropelled. Η νέα κλάση μπορεί να είναι κάποια υποκλάση μιας ήδη γνωστής κλάσης (π.χ. μία ​υποκλάση της κλάσης ''​Bicycle''​) αλλά μπορεί να είναι και οποιαδήποτε άλλη κλάση ​αυτοκινούμενου οχήματος ακόμη και μία κλάση ​που ορίζεται εξ' αρχής
  
-Για παράδειγμα στη γλώσσα Java μπορεί ​να οριστεί η παρακάτω διεπαφή+Όσες κλάσεις υλοποιούν όλες τις παραπάνω ​μεθόδους,​ υλοποιούν συνολικά το interface. Ως εκ τούτου υποστηρίζουν ​τις ιδιότητες του interface ​αυτού.
  
-<code java> +<WRAP tipΣτη γλώσσα Java o μεταγλωτιστής απαιτεί τη υλοποίηση όλων των μεθόδων που ορίζει η διεπαφή από ​την κλάση ​που την ​υλοποιεί</WRAP>
-interface Bicycle {  +
-  void changeCadence(int newValue);  +
-  void changeGear(int newValue);  +
-  void speedUp(int increment);  +
-  void applyBrakes(int decrement);  +
-+
-</​code>​ +
- +
-Η παρακάτω κλάση υλοποιεί ​το interface Bicycle ως εξής: +
- +
-<code java> +
-class ACMEBicycle implements Bicycle {+
  
-    int cadence = 0; int speed = 0; int gear = 1; 
-    
-    void changeCadence(int newValue) { 
-         ​cadence = newValue; 
-    } 
-    void changeGear(int newValue) { 
-         gear = newValue; 
-    } 
-    void speedUp(int increment) { 
-         speed = speed + increment; ​   
-    } 
-    void applyBrakes(int decrement) { 
-         speed = speed - decrement; 
-    } 
-    void printStates() { 
-         ​System.out.println("​cadence:"​ + 
-             ​cadence + " speed:"​ +  
-             speed + " gear:" + gear); 
-    } 
-} 
-</​code>​ 
  
 ==== Πλεονεκτήματα του Αντικ/​στραφούς Προγραμματισμού ==== ==== Πλεονεκτήματα του Αντικ/​στραφούς Προγραμματισμού ====
oop/introduction.txt · Last modified: 2017/02/16 08:34 by gthanos