Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
Η λέξη‐κλειδί ‘this’. Σε μια μέθοδο αν θέλουμε να αναφερθούμε στο αντικείμενο που την κάλεσε (τρέχον αντικείμενο) αντί του ονόματος του αντικειμένου μπορούμε να γράψουμε τη λέξη κλειδί this Το this το χρησιμοποιούμε μέσα στις μεθόδους για να αναφερθούμε σε ένα οποιοδήποτε αντικείμενο μπορεί να παραχθεί από την κλάση στην οποία βρισκόμαστε Σημαίνει απλά: this object here ! Το this χρησιμοποιείται συνήθως είτε για να περάσουμε το τρέχον αντικείμενο ως παράμετρο σε μεθόδους άλλων κλάσεων είτε για να καλέσουμε, μέσα από ένα κατασκευαστή της τρέχουσας κλάσης έναν άλλο κατασκευαστή
Υπερφόρτωση Μεθόδων Δύο μέθοδοι με το ίδιο όνομα αλλά διαφορετικά ορίσματα είναι διαφορετικές μέθοδοι Δεν πρέπει αναγκαστικά να επιστρέφουν τον ίδιο τύπο, πρέπει να έχουν διαφορετικά ορίσματα Η τεχνική αυτή, λέγεται υπερφόρτωση μεθόδων (method overloading) Συνήθως επιλέγουμε οι μέθοδοι αυτές να κάνουν την ίδια δουλειά αλλά με διαφορετικό τρόπο
Υπερφόρτωση Μεθόδων: Παράδειγμα Η μέθοδος indexOf της κλάσης String: public int indexOf (String str) public int indexOf (int ch) public int indexOf (String str, int fromIndex) public int indexOf (int ch, int fromIndex)
Υπερφορτωμένοι κατασκευαστές public class Circle { private double radius; public Circle(double radius) { this.radius = radius; } public Circle() { this(1.0); public double getArea() { return this.radius * this.radius * Math.PI;
Μετατροπείς πρόσβασης [Access Modifiers] Οι μετατροπείς πρόσβασης καθορίζουν την ορατότητα [visibility] ενός πεδίου ή μεθόδου. Παραδείγματα: private int number; protected String name; public void changeAddress(Address newAddress) { ... } private int calculateResult(int parameter) Μετατροπείς πρόσβασης: private, protected, public.
“private” client 1 a class client 2 subclass 1 subclass 2 Ορατά/προσπελάσιμα μόνο από το εσωτερικό της κλάσης Ένα “private” πεδίο client 1 Περιοχή ορατότητας a class client 2 subclass 1 subclass 2
“public” client 1 a class client 2 subclass 1 subclass 2 Ορατά/προσπελάσιμα από το εσωτερικό της κλάσης και από κάθε άλλη κλάση client 1 Ένα “public” πεδίο a class Περιοχή ορατότητας client 2 subclass 1 subclass 2
“protected” client 1 a class client 2 subclass 1 subclass 2 Ορατά/προσπελάσιμα από το εσωτερικό της κλάσης και από κάθε υποκλάση της Ένα “protected” πεδίο client 1 Περιοχή ορατότητας a class client 2 subclass 1 subclass 2
Συνήθεις οδηγίες χρήσης μετατροπέων πρόσβασης Χρησιμοποιείτε πάντοτε ένα μετατροπέα πρόσβασης. Περιορίστε την πρόσβαση όσο το δυνατό περισσότερο. Μη χρησιμοποιείτε public πεδία H πρόσβαση σε private πεδία θα πρέπει να γίνεται μέσω public μεθόδων