Java A Crash Course in (Προσέγγιση μέσω UML)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Από τη C στη C++ Hy240b project 2014 Phase 1.
Advertisements

Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Αντικειμενοστραφής Προγραμματισμός
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
Επανάληψη βασικών αρχών του αντικειμενοστρεφούς προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
Σύγκριση Java και C++ Μεταπτυχιακό Εφαρμοσμένης Πληροφορικής - Αλέξανδρος Χατζηγεωργίου, Νοέμβριος 2004.
ΣΥΝΑΡΤΗΣΕΙΣ.
Πρότυπα Σχεδίασης Design Patterns Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Ποιότητα Λογισμικού Ενότητα 2: Παραμετρικοί έλεγχοι στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Εισαγωγή στη JAVΑ (μέρος Α’)
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Αντικειμενοστραφής Προγραμματισμός Ι
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Οντοκεντρικός Προγραμματισμός
Κατανεμημένα Συστήματα
Πίνακες και αλφαριθμητικά
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
Εφαρμογή Μεθοδολογίας ICONIX
Προγραμματισμός κινητών συσκευών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

Java A Crash Course in (Προσέγγιση μέσω UML) ΠΛΣ61 – Μέλος ΣΕΠ: Αλέξανδρος Χατζηγεωργίου

Java (Εισαγωγή σε μία διαφάνεια…) H Java είναι μία αντικειμενοστρεφής γλώσσα προγραμματισμού που αναπτύχθηκε από την Sun Microsystems 1η έκδοση το 1995. Σήμερα έχουμε την έκδοση 6 (Java 1.6) Δωρεάν διάθεση από http://java.sun.com Το συντακτικό βασίζεται σε C / C++ Αναφέρουμε ότι είναι platform-independent: ο πηγαίος κώδικας μεταγλωττίζεται σε bytecode (ενδιάμεση μορφή εντολών μεταξύ γλώσσας υψηλού επιπέδου και γλώσσας μηχανής) ένα πρόγραμμα σε bytecode μπορεί να εκτελεστεί σε οποιονδήποτε Η/Υ έχει εγκατεστημένη τη Java Virtual Machine

Eclipse και Java Ένα πολύ καλό και ευρέως διαδεδομένο περιβάλλον ανάπτυξης (IDE) για Java είναι το Eclipse Διατίθεται δωρεάν όπως και η Java "Κατεβάζετε" και εγκαθιστάτε πρώτα το Java SE Development Kit από τη διεύθυνση: http://java.sun.com/javase/downloads "Κατεβάζετε" την τελευταία έκδοση του Eclipse Classic από τη διεύθυνση: http://www.eclipse.org Εκτελώντας το eclipse.exe : File->New->Java Project Δημιουργία κλάσεων: δεξί κλικ επί του project -> New -> Class Τα αρχεία μεταγλωττίζονται κάθε φορά που αποθηκεύονται Εκτέλεση: Run -> Run As -> Java Application

Τεκμηρίωση Εξαιρετική τεκμηρίωση για την Java από την Sun: http://java.sun.com/docs/books/tutorial/ Για οποιαδήποτε κλάση βιβλιοθηκών της Java (Java API) μία αναζήτηση στο Google του τύπου: όνομαΚλάσης Java (π.χ. ArrayList Java) Συνήθως επιστρέφει ως πρώτο αποτέλεσμα την αντίστοιχη σελίδα από την επίσημη τεκμηρίωση των βιβλιοθηκών της Java (πλήρης περιγραφή μεθόδων και ιδιοτήτων)

Μετατροπή UML σε Java Κάθε κλάση κατά προτίμηση τοποθετείται σε ξεχωριστό αρχείο .java με όνομα το όνομα της κλάσης public class Order { }

Μετατροπή UML σε Java Μετατροπή μελών δεδομένων : ιδιοτήτων και μεθόδων : ιδιωτική ορατότητα (private) +: δημόσια ορατότητα (public) public class Order { private String code; public double getTotalPrice() { //σώμα της μεθόδου //σχόλιο μιας γραμμής /* σχόλιο πολλών γραμμών με αυτό το σύμβολο */ }

Κατασκευαστές Κάθε κλάση διαθέτει μία «ειδική» μέθοδο που καλείται κατά την κατασκευή αντικειμένου της κλάσης (κατασκευαστής – constructor) Αν δεν δηλωθεί κατασκευαστής, δημιουργείται εξ’ορισμού κατασκευαστής που απλώς δημιουργεί το αντικείμενο χωρίς να αρχικοποιεί τις τιμές των ιδιοτήτων Ένας κατασκευαστής πρέπει υποχρεωτικά να έχει το όνομα της κλάσης Σε έναν κατασκευαστή με παραμέτρους μπορούμε να αποδώσουμε αρχικές τιμές σε ιδιότητες Οι κατασκευαστές δεν απεικονίζονται πάντοτε (χάριν απλότητας) στα διαγράμματα κλάσεων της UML

Μετατροπή UML σε Java public class Order { private String code; public Order(String text) { code = text; }

Δημιουργία Αντικειμένων Δημιουργούμε ένα αντικείμενο κλάσης στην Java με χρήση της δεσμευμένης λέξης new και κλήση του κατασκευαστή της κλάσης Το νεοδημιουργηθέν αντικείμενο το αναθέτουμε σε μία αναφορά (reference) του τύπου της κλάσης: Order firstOrder = new Order(“ΧΥ3542”); To firstOrder είναι μία αναφορά τύπου Οrder. Κατ’ ουσίαν πρόκειται για έναν δείκτη (pointer) προς αντικείμενο τύπου Order Αντικείμενο Order code = “XY3542” firstOrder Καταχρηστικά, αναφερόμαστε συνήθως στο ίδιο το αντικείμενο ως firstOrder

Δημιουργία Αντικειμένων Στη Java, τα πάντα είναι αντικείμενα (και κατά συνέπεια τα χειριζόμαστε μέσω αναφορών σε αυτά) πλην ορισμένων στοιχειωδών τύπων. String name = “Babis”; το name είναι αναφορά προς αντικείμενο τύπου String int[] anArray = new int[10]; το anArray είναι αναφορά προς αντικείμενο τύπου int[], δηλ. πίνακας ακεραίων 8 Στοιχειώδεις τύποι που δεν είναι αντικείμενα: byte, short, int, long, float, double, boolean, char

Δημιουργία Αντικειμένων Όλα τα προγράμματα Java πρέπει να περιλαμβάνουν μία μέθοδο main από την οποία ξεκινά η εκτέλεση του προγράμματος Η μέθοδος είναι στατική: υφίσταται ακόμα και όταν δεν υπάρχουν αντικείμενα της κλάσης στην οποία ανήκει Στη main μπορούμε να δημιουργήσουμε αντικείμενα των υπολοίπων κλάσεων public class Main{ public static void main(String[] args) { //Δημιουργία αντικειμένων }

Συσχετίσεις μεταξύ κλάσεων Οι συσχετίσεις είναι η «κόλλα» ενός αντικειμενοστρεφούς συστήματος. Παρέχουν την υποδομή για την επικοινωνία μεταξύ αντικειμένων Υλοποιούνται ως αναφορές από μία κλάση προς μία άλλη

Συσχετίσεις μεταξύ κλάσεων public class Order { private Dish myDish; //αναφορά προς την κλάση Dish //υλοποιεί τη συσχέτιση private String code; public Order(String text) { code = text; }

Συσχετίσεις μεταξύ κλάσεων - ATTENTION Μία συσχέτιση παρέχει την «υποδομή» ώστε αντικείμενα δύο κλάσεων να μπορούν να επικοινωνήσουν (ανταλλάξουν μηνύματα) Μία αναφορά (που υλοποιεί μια συσχέτιση) πρέπει κατά τη διάρκεια εκτέλεσης να λάβει συγκεκριμένη τιμή προς αντικείμενο της συσχετιζόμενης κλάσης Κατά τη διάρκεια της εκτέλεσης δημιουργούνται συνδέσεις (links) μεταξύ αντικειμένων που μπορούν να τροποποιηθούν ή να καταστραφούν Εάν σε μία αναφορά (που υλοποιεί μία συσχέτιση) δεν δοθεί τιμή κατά τη διάρκεια εκτέλεσης, οποιαδήποτε κλήση μεθόδου μέσω αυτής της αναφοράς είναι άνευ νοήματος (πρόκειται για pointer που δεν «δείχνει» πουθενά) Οδηγεί σε σφάλμα Null Pointer Exception

Αντικείμενο ο1 τύπου Order Αντικείμενο d1 τύπου Dish Συσχετίσεις μεταξύ κλάσεων - Συνδέσεις myDish Αντικείμενο ο1 τύπου Order Αντικείμενο d1 τύπου Dish “Συνδέουμε” το αντικείμενο o1 με το αντικείμενο d1, δίνοντας στην ιδιότητα myDish του αντικειμένου ο1 την τιμή d1 Ενδεχομένως να χρειαστεί κατάλληλη μέθοδος set( ) στην κλάση Order

Αντικείμενο ο1 τύπου Order Αντικείμενο d1 τύπου Dish Συσχετίσεις μεταξύ κλάσεων - Συνδέσεις myDish Αντικείμενο ο1 τύπου Order Αντικείμενο d1 τύπου Dish public class Order { private Dish myDish; //αναφορά προς την κλάση Dish public void setDish(dish aDish) { myDish = aDish; } public static void main(String[] args) { Order o1 = new Order(“XY3542”); Dish d1 = new Dish(“Arakas”); o1.setDish(d1); //εδώ δημιουργείται η σύνδεση //το αντικείμενο ο1 μπορεί πλέον //να αποστείλει μηνύματα στο d1 }

Συσχετίσεις με πολλαπλότητα Η πολλαπλότητα “ 0..* ” στο άκρο της κλάσης Dish, υποδηλώνει ότι ένα αντικείμενο τύπου Order μπορεί να συσχετιστεί με πολλά αντικείμενα τύπου Dish Υλοποιείται ως μία δομή δεδομένων στην κλάση Order που περιλαμβάνει αναφορές προς αντικείμενα τύπου Dish Η πιο ευρέως διαδεδομένη και εύκολη στη χρήση δομή δεδομένων της Java είναι η ArrayList

ArrayList Περιγραφή: http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html Για να χρησιμοποιηθεί πρέπει πρώτα να συμπεριληφθεί το πακέτο (κατάλογος) στο οποίο είναι δηλωμένη import java.util.*; (συμπερίληψη όλων των κλάσεων του πακέτου) Αποτελεί ουσιαστικά έναν δυναμικό πίνακα που μπορεί να φιλοξενήσει στοιχεία οποιοδήποτε τύπου Δημιουργία αντικειμένου ArrayList ArrayList dishes = new ArrayList(); Από την Java 1.5 μπορούμε να δηλώσουμε τον τύπο των στοιχείων που φιλοξενούνται στη δομή (π.χ. αντικείμενα Dish) ως εξής: ArrayList<Dish> dishes = new ArrayList<Dish>();

ArrayList Εισαγωγή στοιχείου στη δομή καλώντας τη μέθοδο add(): Dish d1 = new Dish(“Steak”); dishes.add(d1); Λήψη του στοιχείου που βρίσκεται στη θέση i με τη μέθοδο get(): Dish d = dishes.get(i); Διαγραφή του στοιχείου d1 από τη δομή: dishes.remove(d1);

Συσχετίσεις με πολλαπλότητα public class Order { private ArrayList<Dish> myDishes = new ArrayList<Dish>(); public void addDish(dish aDish) { myDishes.add(dish); } public Dish getDish(int i) { myDishes.get(i);

Σχέσεις Περιεκτικότητας Μια σχέση περιεκτικότητας (π.χ. συσσωμάτωση) υλοποιείται στη Java ακριβώς όπως και μια απλή συσχέτιση

Κληρονομικότητα public class PhDStudent extends Student { private String supervisor; }

Κληρονομικότητα H υποκλάση (PhDStudent) κληρονομεί τις ιδιότητες και τις μεθόδους της υπερκλάσης (Student) (o κατασκευαστής δεν κληρονομείται) Η υποκλάση μπορεί να δηλώσει επιπλέον μεθόδους ή ιδιότητες Η υποκλάση μπορεί να επαναορίσει (επικαλύψει) μεθόδους που έχουν οριστεί στην υπερκλάση

Αρχή της Υποκατάστασης Σε μία αναφορά προς την υπερκλάση είναι απολύτως έγκυρο να αναθέσουμε ως τιμή ένα αντικείμενο οποιασδήποτε υποκλάσης ... Student p; p = new Student(); //επιτρεπτό p = new PhDStudent(); //επιτρεπτό

Πολυμορφισμός το γεγονός ότι η μέθοδος printRecord() σημειώνεται και στην κλάση PhDStudent υποδηλώνει ότι η μέθοδος επαναορίζεται στην υποκλάση . . . Student p; p = new PhDStudent(); p.printRecord(); //παρόλο που η αναφορά p είναι //δηλωμένη ως αναφορά τύπου Student //η μέθοδος που καλείται είναι η //printRecord() της PhDStudent

Πολυμορφισμός (2) το γεγονός ότι η μέθοδος printRecord() σημειώνεται και στην κλάση PhDStudent υποδηλώνει ότι η μέθοδος επαναορίζεται στην υποκλάση . . . Student p; p = new PhDStudent(); p.printRecord();//η Java αναμένει μέχρι την εκτέλεση //του προγράμματος για να δεί που //"δείχνει" η αναφορά p // = δυναμική ή καθυστερημένη διασύνδεση // = ΠΟΛΥΜΟΡΦΙΣΜΟΣ

Πολυμορφισμός (3) Πρόγραμμα – πελάτης Ο πολυμορφισμός είναι εξαιρετικά σημαντικός για τη συντήρηση του λογισμικού διότι: ένα πρόγραμμα πελάτης έχει γραφεί ώστε να φαίνεται ότι χρησιμοποιεί αντικείμενα τύπου Student (και κατά συνέπεια καλεί τη μέθοδο printRecord ) αλλά το ίδιο πρόγραμμα πελάτης μπορεί να λειτουργήσει με οποιοδήποτε αντικείμενο υποκλάσης της Student (ακόμα και κλάσεων που δεν υπάρχουν ακόμα αλλά θα δημιουργηθούν στο μέλλον) ΧΩΡΙΣ ΚΑΜΜΙΑ ΑΠΟΛΥΤΩΣ ΑΛΛΑΓΗ ΣΤΟΝ ΚΩΔΙΚΑ ΤΟΥ ΠΕΛΑΤΗ

Στατικά μέλη κλάσεων Όλα τα αντικείμενα μιας κλάσης έχουν τις ίδιες ιδιότητες αλλά κάθε αντικείμενο έχει διαφορετική τιμή για μια ιδιότητα Υπάρχουν περιπτώσεις όπου όλα τα αντικείμενα μιας κλάσης θέλουμε να μοιράζονται την ίδια τιμή για μία ιδιότητα Π.χ. ιδιότητα "πλήθος Υπαλλήλων" για μια κλάση Υπάλληλος Θα ήταν πλεονασμός κάθε αντικείμενο τύπου Υπάλληλος να έχει την ίδια τιμή για το "πλήθος Υπαλλήλων" και επιπλέον κάθε φορά που προστίθεται ένας νέος υπάλληλος να πρέπει να ενημερωθούν όλα τα αντικείμενα

Στατικά μέλη κλάσεων (2) Στις περιπτώσεις αυτές αξιοποιούμε τις στατικές ιδιότητες Μία στατική ιδιότητα: υφίσταται σε επίπεδο κλάσης (ίδια τιμή για όλα τα αντικείμενα) υπάρχει ακόμα και όταν δεν έχουν δημιουργηθεί αντικείμενα της κλάσης (π.χ. πλήθοςΥπαλλήλων = 0) Δηλώνουμε ότι μια ιδιότητα είναι στατική με το προσδιοριστικό static Για να μπορεί μια μέθοδος να προσπελάσει μια στατική ιδιότητα θα πρέπει να είναι και η μέθοδος στατική που σημαίνει ότι η μέθοδος μπορεί να κληθεί και επί της κλάσης (χωρίς να έχουμε στα χέρια μας αντικείμενο της)

Στατικά μέλη κλάσεων (3) class Employee { private static int count = 0; public Employee() { count++; } public static int getCount () { return count; … System.out.println(Employee.getCount()); // = 0 Employee E1 = new Employee(); System.out.println(E1.getCount()); // = 1

Περισσότερες πληροφορίες μπορείτε να αντλήσετε από: την τεκμηρίωση της Java από τη Sun το βιβλίο του κ. Θραμπουλίδη (Γλώσσες Προγραμματισμού ΙΙ) δεκάδες online δωρεάν βιβλία δεκάδες online δωρεάν διαθέσιμα μαθήματα για Java πειραματιζόμενοι με το Eclipse και τη Java !! ΠΛΣ61