Κλάσεις και αντικείμενα Java – Βοηθητικό Υλικό
Κλάσεις και αντικείμενα (1/2) Είναι μια γενική φόρμα για την κατασκευή αντικειμένων που έχουν παρόμοια χαρακτηριστικά Όλα τα αντικείμενα έχουν τα γενικά χαρακτηριστικά της κλάσης και το καθένα έχει και κάποιες ιδιαίτερες ιδιότητες Η java διαθέτει και τις δικές της κλάσεις αλλά και ο ίδιος ο χρήστης μπορεί να δημιουργήσει και τις δικές του
Κλάσεις και αντικείμενα (2/2) Δύο είναι τα στοιχεία που συμπεριλαμβάνονται στον ορισμό μιας κλάσης: Μεταβλητές Διαφοροποιούν το ένα αντικείμενο της κλάσης από το άλλο Μέθοδοι Καθορίζουν τι μπορούμε να κάνουμε στα αντικείμενα της κλάσης
Ορισμός κλάσης class myClass { }
1ο Παράδειγμα class Circle { static double Pi=3.14; static int count=0; double radius; double x; double y; } Μεταβλητές κλάσης: Pi, count Έχουν την ίδια τιμή από αντικείμενο σε αντικείμενο Μεταβλητές στιγμιοτύπου Radius,x,y Έχουν διαφορετική τιμή από αντικείμενο σε αντικείμενο
Κατηγορίες μεθόδων Ανάλογα με τις μεταβλητές υπάρχουν και δυο κατηγορίες μεθόδων Μέθοδοι κλάσης Δηλώνονται με τη λέξη static και μπορούν να εκτελεστούν ακόμα και να δεν έχει δημιουργηθεί κανένα αντικείμενο της κλάσης Μέθοδοι στιγμιότυπου Αν δεν υπάρχει αντικείμενο δεν έχει νόημα να εκτελεστεί μια τέτοια μέθοδος
Παραδείγματα μεθόδων static int countCircle() { return count; } double area() return Pi*radius*radius;
This Κάθε μέθοδος στιγμιότυπου διαθέτει μια αναφορά με το όνομα this, η οποία αναφέρεται στο τρέχον αντικείμενο για το οποίο έχει κληθεί η μέθοδος Χρησιμοποιείται μόνο με τις μεθόδους στιγμιότυπου και όχι με τις μεθόδους κλάσης
Κατασκευαστές Ειδικές μέθοδοι που πρέπει να υπάρχουν στον ορισμό της κλάσης Ίδιο όνομα με αυτό της κλάσης Δίνει αρχικές τιμές στις μεταβλητές ενός νέου αντικειμένου Πραγματοποιεί όποιες ενέργειες χρειάζεται για να προετοιμαστεί σωστά το νέο αντικείμενο
Τι διαφοροποιεί τους κατασκευαστές από τις μεθόδους Δεν επιστρέφει ποτέ τιμή και δεν βάζουμε μπροστά του τύπο επιστροφής Έχει το ίδιο όνομα με την κλάση
2ο Παράδειγμα Circle (double r1, double x1, double y1) { radius=r1; x=x1; y=y1; ++count; }
Παρατηρήσεις Μπορεί να έχει όσους παραμέτρους θέλουμε Μια κλάση μπορεί να έχει περισσότερους από έναν κατασκευαστές καθένας από τους οποίους να έχει διαφορετική λίστα παραμέτρων Εάν δεν δημιουργήσουμε κατασκευαστή για μια κλάση, η Java δημιουργεί από μόνη της Ο κατασκευαστής αυτός δεν κάνει τίποτα
Δήλωση αντικειμένου Circle troxos;
Δημιουργία αντικειμένου troxos – new Circle (20.0, 3.0, 4.0); Δημιουργία ενός αντικειμένου της κλάσης Circle
Αναφορά στα αντικείμενα Όταν εκχωρούμε αντικείμενα σε μεταβλητές, οι μεταβλητές δείχνουν στα αντικείμενα, δεν τα περιλαμβάνουν Όταν δημιουργούμε ένα νέο στιγμιότυπο ρυθμίζουμε τη μεταβλητή να δείχνει σε αυτό.
Πολλαπλοί κατασκευαστές Ανάγκη δημιουργίας διαφορετικών αντικειμένων (διαφορετικά χαρακτηριστικά) Ίδιο όνομα Διαφορετική λίστα ορισμάτων
Παράδειγμα circle (double r2) { x=0.0; y=0.0; radius=r2; ++count; }
Βασική ιδέα αντικειμενοστραφούς προγραμματισμού Ενθυλάκωση Κληρονομικότητα Πολυμορφισμός
Ενθυλάκωση Παρουσιάζει την εξωτερική όψη ενός αντικειμένου Παρουσιάζει την εξωτερική όψη ενός αντικειμένου Αποκρύπτει την πολύπλοκη λογική που υπάρχει μέσα του Ο προγραμματιστής έχει τη δυνατότητα να τροποποιεί ή να βελτιώνει τους αλγόριθμους
Προσδιοριστές προσπέλασης Public Μπορούν να προσπελαστούν από οποιαδήποτε άλλη κλάση, όπου και αν βρίσκεται αυτή Private Προσπέλαση και χρήση μόνο από το ίδιο το αντικείμενο Protected Από όλες τις κλάσεις που βρίσκονται στο ίδιο πακέτο (συλλογή από κλάσεις, βιβλιοθήκη κώδικα)
Πολυμορφισμός Η ίδια μέθοδος ή ο ίδιος ο τελεστής χρησιμοποιείται με διαφορετικούς τύπους δεδομένων (+): συνένωση αλφαριθμητικών και τελεστής πρόσθεσης
Υπερφόρτωση κατασκευαστή Η κατάσταση στην οποία μπορούμε να έχουμε περισσότερους από έναν κατασκευαστές με το ίδιο όνομα αλλά με διαφορετικά ορίσματα Το ίδιο ισχύει και για τις μεθόδους
Υπογραφή κατασκευαστή Το όνομα του κάθε κατασκευαστή σε συνδυασμό με τον αριθμό, τον τύπο και τη σειρά των ορισμάτων του
Κληρονομικότητα Επαναχρησιμοποίηση κώδικα Ακολουθείται μια ιεραρχία Κάθε κλάση έχει μια υπερκλάση, η οποία βρίσκεται ιεραρχικά πάνω από αυτή Επίσης μπορεί να έχει μια ή περισσότερες υποκλάσεις οι οποίες βρίσκονται σε κατώτερο επίπεδο ιεραρχίας Στην κορυφή όλων των κλάσεων βρίσκεται η κλάση Object
Παράδειγμα class Car { string manufacturer; string model; int maximumSpeed; int price; int numDoors; int numWheels=4; } class motorCycle { string manufacturer; string model; int maximumSpeed; int price; int numWheels=2; }
Συνέχεια… class motorVehicle { string manufacturer; string model; int maximumSpeed; int price; int numWheels; } class Car extends motorVehicle { int numDoors; int numWheels=4; } class motorCycle extends motorVehicle int numWheels=2;
Παράκαμψη μεθόδου Αρκετές φορές σε μια υποκλάση ορίζεται ξανά μια μέθοδος η οποία είχε οριστεί και σε μια κλάση ανωτέρου επιπέδου, επειδή ο αρχικός ορισμός της δεν κάνει αυτό ακριβώς που θέλουμε Η μέθοδος στην υποκλάση έχει την ίδια υπογραφή με αυτήν την υπερκλάσης (όνομα, αριθμό και τύπο ορισμάτων)