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

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

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

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

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

Διαγράμματα Κλάσεων στη Σχεδίαση

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

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

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

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

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

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

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

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιεπαφές και Εσωτερικές κλάσεις Interfaces and Inner Classes. ιεπαφές - Interfaces

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

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

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

Σύνθεση και Κληρονομικότητα

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

Σύνθεση και Κληρονομικότητα

Εισαγωγή στον Προγ/μό Η/Υ

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


Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Τεχνολογία Λογισμικού

8. Μέθοδοι (Methods)

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

Διάλεξη Εισαγωγή στη Java, Μέρος Α

Από τη UML στον Κώδικα. Μέρος Β

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

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

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

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

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

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

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Τύποι δεδομένων, τελεστές, μεταβλητές

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Διδάσκων: Παναγιώτης Ανδρέου

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Τα διαγράµµατα συστατικών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Επιστημονικός Υπεύθυνος: Γιάννης Τζίτζικας Επίκουρος Καθηγητής, Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

Transcript:

Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr

Εργαστήριο 8 Πακέτα (Packages) Access Modifiers Java Non-Access Modifiers Διεπαφες (Interfaces)

Πακέτα (Packages) Ένα Πακέτο (Package) προσφέρει οµαδοποίηση κλάσεων. Ένα Package µπορεί να περιέχει οποιαδήποτε αριθµό κλάσεων. Οι περισσότερες υλοποιήσεις της Java µέσω των πακέτων προσφέρουν ιεραρχική δοµή από φακέλους και αρχεία για τη διαχείριση πηγαίου κώδικα και κλάσεων.

Πακέτα (Packages) Παράδειγµα Πακέτων και Κλάσεων:

Πακέτα (Packages) Αποτέλεσµα:

Access Modifiers Public: Ορατά από οποιαδήποτε κλάση. [Lab 3] Private: Μέθοδοι και πεδία ορατά µόνο µέσα στη κλάση στην οποία ανήκουν. [Lab 3] Protected: Προσβάσιµες µέθοδοι και πεδία από τις κλάσεις που ανήκουν στο ίδιο πακέτο ή στις υποκλάσεις. Default: έλλειψη των παραπάνω access modifiers συνυποδηλώνει πρόσβαση µεθόδων και πεδίων από όλες τις κλάσεις που βρίσκονται στο ίδιο πακέτο. [Lab 3]

Access Modifiers com.unipi.common com.unipi.test com.unipi.core

Πακέτα (Packages) & Access Modifiers Προσαρµόστε το lab 7 ώστε να έχει την µορφή: Ποιους Modifiers πρέπει να τροποποιήσετε ώστε η αλλαγές να µην επηρεάζουν τα αποτελέσµατα του Lab 7?

Java Non-Access Modifiers Η Java παρέχει τελεστές, οι οποίοι δε χρησιµοποιούνται για τον ορισµό της προσβασιµότητας των χαρακτηριστικών των κλάσεων (πεδία, µέθοδοι): Ο τελεστής abstract χρησιµοποιείται για τη δήλωση αφηρηµένων µεθόδων. [Lab 7] Ο τελεστής static χρησιµοποιείται για τη δήλωση στατικών µεθόδων και πεδίων. Οι static µεθόδου και πεδία ανήκουν στην κλάση και όχι σε ένα στιγµιότυπο της κλάσης. Εξαιτίας της προσβασιµότητας µεθόδων και πεδίων σε επίπεδο κλάσεων δεν είναι απαραίτητη η δηµιουργία αντικειµένων για την κλήση τους. Ο τελεστής final χρησιµοποιείται για την οριστικοποίηση των δηλώσεων κλάσεων, µεθόδων και µεταβλητών.

Τελεστής static Παράδειγµα χρήσης του τελεστή static στα πεδία:

Τελεστής static Παράδειγµα χρήσης του τελεστή static σε µεθόδους:

Τελεστής static Παράδειγµα χρήσης του τελεστή static σε µεθόδους: Δεν είναι δυνατή η χρήση ενός instance πεδίου ή η κλήση µιας instance µεθόδου από µια static µέθοδο

Τελεστής final Παράδειγµα χρήσης του τελεστή static σε πεδία: Ενώ είναι δυνατή η κλήση µια static µέθοδο ή η χρήση ενός static πεδίου σε µια instance µέθοδο.

Τελεστής final Παράδειγµα χρήσης του τελεστή final σε πεδία: Τα πεδία final πρέπει οπωσδήποτε να αρχικοποιούνται, είτε στη δήλωση του πεδίου, είτε στους κατασκευαστές.

Τελεστής final Παράδειγµα χρήσης του τελεστή final σε πεδία: Στα πεδία final δεν µπορεί να µεταβάλλεται η τιµή τους κατά τη διάρκεια εκτέλεσης του προγράµµατος.

Τελεστής final Παράδειγµα χρήσης του τελεστή final σε µεθόδους: Δεν είναι δυνατό µια final µέθοδος να γίνει override

Τελεστής final Παράδειγµα χρήσης του τελεστή final σε µεθόδους: Δεν είναι δυνατό να γίνει extend µια κλάση που έχει δηλωθεί ως final.

Τελεστής final & static Παράδειγµα χρήσης του τελεστή final & static σε πεδία: Στα πεδία final δεν µπορεί να µεταβάλλεται η τιµή τους κατά τη διάρκεια εκτέλεσης του προγράµµατος.

Διεπαφες (Interfaces) Το Java Interface είναι µια συλλογή από abstract µεθόδους. Μια κλάση υλοποιεί (implements) ένα Interface υπό την έννοια ότι υλοποιεί όλες τις abstract µεθόδους που ορίζονται µέσα στο Interface. Τα Interfaces δεν είναι κλάσεις. Παρόλο που η σύνταξή του µοιάζει µε αυτή των κλάσεων, χρησιµοποιούνται για διαφορετικό σκοπό: Οι κλάσεις περιγράφουν τα χαρακτηριστικά και τη συµπεριφορά ενός αντικειµένου Τα Interfaces ορίζουν τη συµπεριφορά των κλάσεων που επιλέγουν να τα υλοποιούν

Διεπαφες (Interfaces) Για τη δηµιουργία ενός Java Interface, χρησιµοποιείται η λέξη κλειδί interface :

Διεπαφες (Interfaces) Παράδειγµα Interface και Υλοποίηση Μεθόδου: Οι µέθοδοι µέσα σε ένα interface, θεωρούνται public abstract.

Διεπαφες (Interfaces) Παράδειγµα Υλοποίηση Μεθόδων πολλαπλών Interface και πεδίων: Τα πεδία µέσα σε ένα interface, θεωρούνται public static και final.

Java Interface vs Abstract Java Class Java Interface Θεωρείται πάντα abstract και δεν μπορεί να έχει υλοποιήσεις μεθόδων. Τα πεδία θεωρούνται πάντα public static final. Abstract Java Class Μπορεί να έχει υλοποιήσεις μεθόδων. Μπορεί να μην περιέχει final/public/static πεδία. Υλοποιείται με τη χρήση της λέξης κλειδί implements. Μπορεί να κάνει exten μόνο άλλα interfaces (οποιοδήποτε πλήθος από interfaces). Κληρονομείται με τη χρήση της λέξης κλειδί exten. Μπορεί να κάνει exten μια άλλη κλάση και implements οποιοδήποτε πλήθος από interfaces. Δεν μπορεί να δημιουργηθεί αντικείμενο με χρήση μόνο του interface. Δεν μπορεί να δημιουργηθεί αντικείμενο με χρήση μόνο του abstract class.