Ειδικά Θέματα Προγραμματισμού

Σχετικά έγγραφα
Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Αντικειμενοστρεφής Προγραμματισμός

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οντοκεντρικός Προγραμματισμός

Κλάσεις και Αντικείµενα

Οντοκεντρικός Προγραμματισμός

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Δομημένος Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

(Διαφάνειες Νίκου Βιδάκη)

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

2.1 Αντικειµενοστρεφής προγραµµατισµός

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Εισαγωγή στον Προγραμματισμό με C++

Αντικειµενοστραφής Προγραµµατισµός

Υπολογιστικά Συστήματα

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός Διαδικτύου

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βάση Δεδομένων. User Interface - 1 User Interface - 2

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)

Βασικά της γλώσσας JAVA

Οντοκεντρικός Προγραμματισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Γενικά (για τις γραπτές εξετάσεις)

Οντοκεντρικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 8: Πακέτα (Packages)

Αντικειμενοστραφής Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Οντοκεντρικός Προγραμματισμός

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Οντοκεντρικός Προγραμματισμός

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

Ειδικά Θέματα Προγραμματισμού

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Οντοκεντρικός Προγραμματισμός

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Βασικά Στοιχεία της Java

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός Η/Υ 1 (Εργαστήριο)


Αντικειμενοστρεφής Προγραμματισμός

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Προγραμματισμός Διαδικτύου

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Δομημένος Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Transcript:

Ειδικά Θέματα Προγραμματισμού Ενότητα 2: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό

Σκοποί ενότητας Σε αυτό το κεφάλαιο θα ασχοληθούμε με τον αντικειμενοστραφή προγραμματισμό. Θα κατανοήσουμε τους όρους: Κλάσεις και αντικείμενα, Κληρονομικότητα (inheritance), Υπερκάλυψη (overriding), Υπερφόρτωση (overloading), Κατασκευαστές κλάσεων (constructors), Προσδιοριστές πρόσβασης (access specifiers), Τροποποιητές (modifiers), Διασυνδέσεις (interfaces), Πακέτα (packages). 5

Περιεχόμενα ενότητας (1/2) Κλάσεις και αντικείμενα. Κληρονομικότητα (inheritance). Υπερκάλυψη (overriding). Υπερφόρτωση (overloading). Κατασκευαστές κλάσεων (constructors). Προσδιοριστές πρόσβασης (access specifiers). 6

Περιεχόμενα ενότητας (2/2) Τροποποιητές (modifiers). Διασυνδέσεις (interfaces). Πακέτα (packages). 7

Κλάσεις (1/2) Σε αντικειμενοστραφείς γλώσσες προγραμματισμού δίνεται η δυνατότητα σχεδίασης νέων και σύνθετων τύπων δεδομένων. Κλάση: σύνθετη δομή δεδομένων σχεδιασμένη από τον προγραμματιστή. Μια κλάση περιέχει ως μέλη της μεταβλητέςπεδία (member variables) και συναρτήσειςμέθοδοι (member functions). 8

Ορισμός κλάσης: Κλάσεις (2/2) 9

Κλάσεις και Αντικείμενα (1/2) Μια κλάση είναι το αντίστοιχο των τύπων δεδομένων για τις μεταβλητές (στον δομημένο προγραμματισμό). Μια η κλάση είναι απλώς ένα πρότυπο για την δημιουργία αντικειμένων. Το αντικείμενο αυτό καθ' εαυτό είναι μια οντότητα στη μνήμη η οποία περιέχει δεδομένα καθώς και μεθόδους. 10

Κλάσεις και Αντικείμενα (2/2) Μέσω των μεθόδων μπορούμε να επικοινωνήσουμε με το αντικείμενο και να αλλάξουμε τα δεδομένα του. Οι γνωστοί τύποι δεδομένων int, float, double, char θεωρούνται πρωτογενείς τύποι δεδομένων. 11

Ένα παράδειγμα κλάσης (μητρώο Πρότυπο δημιουργίας μητρώου εργαζομένων: Ονοματεπώνυμο Διεύθυνση Μηνιαίες αποδοχές εργαζομένων) Το πρότυπο (κλάση) καθορίζει τη δομή του μητρώου κάθε εργαζομένου (αντικείμενο) 12

Πρόσβαση σε δεδομένα και μεθόδους αντικειμένων (1/2) Πρόσβαση σε public μεταβλητές μέλη: <object>.<member variable>. Π.χ. someemployeerecord.salary = 1500; (ανάθεση της τιμής 1500 στη μεταβλητή salary). 13

Πρόσβαση σε δεδομένα και μεθόδους αντικειμένων (2/2) Κλήση μεθόδων: <object>.<member function>. Π.χ. 1. income=someemployeerecord.getsalary( ); (Η μεταβλητή income λαμβάνει την τιμή που επιστρέφει η getsalary ()). 2. someemployeerecord.setsalary(1500); (εκτέλεση της μεθόδου setsalary περνώντας ως όρισμα την τιμή 1500). 14

Παράδειγμα (1/2) 15

Παράδειγμα (2/2) Employee John; John = new Employee ( ); //Sos αγνοείτε πάντα τις εντολές με κόκκινο!!!!!!!!! //Είναι απαραίτητες αλλά εξηγούνται σε επόμενες διαφάνειες!!! John.setSalary (1200); John.bonus = 500; int somesalary = John.getSalary ( ); 16

Κληρονομικότητα (inheritance) Συχνά δημιουργούμε κλάσεις που εμπεριέχουν πεδία και μεθόδους που έχουν οριστεί σε προϋπάρχουσες κλάσεις. Βολική η δημιουργία μιας νέας κλάσης (υποκλάση) που εμπεριέχει τη λειτουργικότητα μιας της προϋπάρχουσας κλάσης (υπερκλάση). Ορισμός μιας υποκλάσης: με τη χρήση της δεσμευμένης λέξης extends. 17

Ένα παράδειγμα κληρονομικότητας Σχήμα 1. Ένα παράδειγμα κληρονομικότητας, (πηγή: διδάσκων, 2014). Child mychild; mychild = new Child( ); // Αγνοείστε προσωρινά αυτή τη γραμμή mychild.foo(); Έγκυρες κλήσεις, εφόσον η κλάση Child κληρονομεί μεταβλητές και mychild.a = someinteger ; μεθόδους της κλάσης Parent. 18

Υπερκάλυψη μεταβλητών και μεθόδων (overriding) Child mychild; mychild = new Child(); //Αγνοείστε το mychild.foo(); Εκτελείται η συνάρτηση foo() πουορίστηκε στο σώμα της υποκλάσης Child. Η συνάρτηση foo() που ορίστηκε στην κλάση Parent παρακάμπτεται. Πώς καλούμε μέσα από την κλάση Child τη foo() της κλάσης Parent; 19

Η λέξη super Η δεσμευμένη λέξη super προσφέρει πρόσβαση σε μεταβλητές και μεθόδους της υπερκλάσης. 20

Η δεσμευμένη λέξη this Η δεσμευμένη λέξη this αποτελεί έναν τρόπο αναφοράς στο τρέχον αντικείμενο. Χρήσιμη για τον διαχωρισμό μεταβλητών-μελών από ορίσματα συναρτήσεων σε περίπτωση που τα ονόματά τους ταυτίζονται. 21

Υπερφόρτωση (overloading) Στις object oriented γλώσσες επιτρέπεται ο ορισμός μίας μεθόδου με τo ίδιο όνομα δύο ή περισσότερες φορές αρκεί να έχουν διαφορετικές λίστες παραμέτρων. Number N1, N2; N1 = new number(); N2 = new number(); N1.add(3); // καλεί την 1η add N1.add(3, 5); // καλεί την 2η add N1.add(N2); // καλεί την 3η add 22

Σχέση κλάσεων-αντικειμένων (1/2) Πίνακας 1. Σχέση τύπου int με μεταβλητή int. Τύπος δεδομένων int Ορισμός μεταβλητής αντίστοιχου τύπου int a Κλάση: Σύνθετος τύπος δεδομένων. 23

Σχέση κλάσεων-αντικειμένων (2/2) Πίνακας 2. Ορισμός κλάσης αντικειμένου. Ορισμός κλάσης Class employee {..} Αρχικοποίηση αντικειμένου κλάσης Employee John = new Employee () Αντικείμενο: Στιγμιότυπο (instance) μίας κλάσης. 24

Κατασκευαστές (Constructors) Συναρτήσεις που εκτελούνται κατά την αρχικοποίηση του αντικειμένου μιας κλάσης. Χρησιμοποιούνται για την δέσμευση μνήμης για την κατασκευή του αντικειμένου καθώς και την απόδοση τιμών στις μεταβλητές-πεδία ενός αντικειμένου κατά τη δημιουργία του. Έχουν το ίδιο όνομα με την κλάση την οποία αρχικοποιούν. Οι κατασκευαστές ΔΕΝ ΕΠΙΣΤΡΕΦΟΥΝ ΤΙΜΗ. 25

Παραδείγματα κατασκευαστών 26

Πολλαπλοί κατασκευαστές Για μια κλάση μπορούν να οριστούν περισσότεροι του ενός κατασκευαστές και να επιλεγεί ένας από αυτούς κατά την αρχικοποίηση (constructor overloading). Αν ο προγραμματιστής δεν ορίσει κατασκευαστή, υφίσταται ο default constructor (κατασκευαστής χωρίς ορίσματα). Υλοποίηση ενός κατασκευαστή από τον προγραμματιστή αυτομάτως αναιρεί τον default constructor. 27

Παράδειγμα πολλαπλών κατασκευαστών myclass Test1 = new myclass(); Καλείται ο constructor χωρίς ορίσματα (default constructor), συνεπώς: a = 0 b = 0 myclass Test2 = new myclass( 2, 3 ); a = 2 b = 3 28

Διαδικασία αρχικοποίησης υποκλάσης Επιτελείται διαδοχική εκτέλεση των κατασκευαστών με τρόπο ιεραρχικό (από τις υπερκλάσεις προς τις υποκλάσεις). Κατά τη δημιουργία ενός νέου αντικειμένου μιας υποκλάσης. Πχ. Child Nik = new Child( ); Εκτελείται αρχικά πάντα ο default constructor της υπερκλάσης (εκτός κι αν ο προγραμματιστής αλλάξει τη συμπεριφορά του constructor της υποκλάσης). 29

Αρχικοποίηση υποκλάσεων (πολλαπλοί κατασκευαστές) class Child extends Parent { Child( ) { } Child (int alpha, int beta) { super (alpha,beta); } } Child mychild = new Child(); Καλεί τον default constructor του Parent, άρα α = b = 0 Child mychild = new Child (1, 2 ); a = 1, b = 2 30

Καταστροφή αντικειμένων Σε αντίθεση με τη γλώσσα C, στη Java η κατάργηση αντικειμένων δεν επιτελείται από το χρήστη αλλά από το rutime system της Java. Garbage collector: Εντοπίζει αντικείμενα που δεν πρόκειται να ξαναχρησιμοποιηθούν στο μέλλον και τα καταργεί, αποδεσμεύοντας τη μνήμη που καταλαμβάνουν. 31

Προσδιοριστές πρόσβασης Καθορίζουν τα δικαιώματα πρόσβασης στις μεταβλητές και στις μεθόδους της κλάσης. public: ορατά από οποιασδήποτε κλάση. private: ορατά μόνο από την κλάση στην οποία ανήκουν. protected: ορατά από την κλάση στην οποία ανήκουν και από υποκλάσεις της. Χωρίς δήλωση: ορατά από κλάσεις που ανήκουν στο ίδιο package. 32

Παράδειγμα προσδιοριστών πρόσβασης (1/2) 33

Παράδειγμα προσδιοριστών Παρατηρήσεις: πρόσβασης (2/2) Αν και η μεταβλητή a είναι private, η τιμή της μπορεί να παραληφθεί από την κλάση B μέσω της public συνάρτησης getint (). Συνήθως οι μεταβλητές δηλώνονται private και οι όποιες τροποποιήσεις των τιμών τους επιτελούνται από μεθόδους που ορίζονται public. Δηλαδή οι public μέθοδοι ορίζουν ένα interface, αποκρύπτοντας την εσωτερική δομή της κλάσης. 34

Προσδιοριστές πρόσβασης σε κλάσεις public: κλάση ορατή από οποιαδήποτε άλλη κλάση. Χωρίς δήλωση: κλάση ορατή μόνο από κλάσεις που ανήκουν στο ίδιο package. 35

Ο τροποποιητής final Για μεταβλητές: Δεν αλλάζει η τιμή τους μετά την αρχικοποίησή τους. Για μεθόδους: Δεν παρακάμπτονται σε υποκλάσεις. Για κλάσεις: Δεν κληρονομούνται. 36

Παραδείγματα (final) 37

Ο τροποποιητής abstract (1/2) Σε κλάσεις που κληρονομούνται (παρέχουν κοινό εννοιολογικό υπόβαθρο στις υποκλάσεις τους), συχνά ορίζουμε κενές συναρτήσεις που υλοποιούνται στις υποκλάσεις. abstract <returned type> methodname( ) ; Οι abstract συναρτήσεις παρακάμπτονται σε υποκλάσεις. 38

Ο τροποποιητής abstract (2/2) Κλάσεις μέσα στις οποίες δηλώνεται έστω και μία abstract μέθοδος, χαρακτηρίζονται επίσης abstract. ΔΕΝ μπορούμε να αρχικοποιήσουμε abstract κλάσεις. 39

Παράδειγμα (abstract) 40

Ο τροποποιητής static Κάθε αντικείμενο έχει τις δικές του μεταβλητές και μεθόδους. ΟΜΩΣ: Μεταβλητές και μέθοδοι που δηλώνονται ως static είναι κοινές για όλα τα αντικείμενα της ίδιας κλάσης. Για τη χρήση static μεταβλητών και μεθόδων ΔΕ χρειάζεται η δημιουργία στιγμιότυπου κλάσης. Μέθοδοι που έχουν δηλωθεί static βλέπουν και τροποποιούν ΜΟΝΟ static μεταβλητές. 41

Παράδειγμα (static) class myclass { public static int a = 1; } myclass first = new myclass ( ); myclass second = new myclass ( ); first.a = 2 ; Η μεταβλητή a παίρνει την τιμή 2 και στα δύο αντικείμενα δηλ. ισχύει first.a = 2 KAI second.a = 2 42

Interfaces (1/2) Ορισμός ενός interface: <access specifier> interface myinterface { <access specifier> <returned type> functionone( ); <access specifier> <returned type> functiontwo( ); //Δεν είναι αναγκαίο να δηλωθούν ρητά ως abstract. } Ορισμός υποκλάσης που υλοποιεί ένα interface: class myclass extends someparentclass implements myinterface. 43

Interfaces (2/2) Υποκλάση που υλοποιεί ένα interface πρέπει να υλοποιεί όλες τις μεθόδους που ορίζονται σε αυτό. Πολλαπλή κληρονομικότητα: Σχηματισμός μιας υποκλάσης χρησιμοποιώντας περισσότερες από μία υπερκλάσεις. ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΤΑΙ ΣΤΗ JAVA. class Child extrends Parent1 extends Parent2 ΛΑΘΟΣ. Εναλλακτική προσέγγιση: η χρήση των interfaces ( κλάσεις που περιέχουν μόνο abstract μεθόδους). Οι abstract μέθοδοι των interfaces υλοποιούνται στις υποκλάσεις που τα υλοποιούν. 44

Παράδειγμα (Interfaces) 45

Πακέτα (1/2) Kλάσεις συναφούς λειτουργικότητας ομαδοποιούνται σε πακέτα (packages). Κλάσεις του ίδιου πακέτου βρίσκονται στο ίδιο directory. Η δήλωση του πακέτου στο οποίο ανήκει μια κλάση γίνεται στην αρχή του πηγαίου κώδικα. package <packagename>; 46

Πακέτα (2/2) Ένα πακέτο έχει το ίδιο όνομα με το όνομα του directory στο οποίο αποθηκεύονται οι κλάσεις του. Κλάσεις ενσωματωμένες σα packages προσαρτώνται στον κώδικα άλλων κλάσεων με τη δήλωση. import <packagename>.<classname>; 47

Παράδειγμα (Πακέτα) 48

Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. Απόλυτη Java, Savitch, Εκδόσεις ΙΩΝ, 2008. 3. Πλήρες εγχειρίδιο της Java 6, Lemay Cadenhead, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 49

Τέλος Ενότητας