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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

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

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

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

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

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

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

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

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

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

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

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

Εισαγωγή στα Αντικείμενα

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

Προγράμματα με δομή Κληρονομικότητας

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

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

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance)

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

Μάθημα 1 [3/11/2015].

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

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

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

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

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

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

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

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

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

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


9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

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

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

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

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

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

Προγράμματα με δομή Κληρονομικότητας

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

Transcript:

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

JAVA Inheritance Εβδομάδα Νο. 3 2

Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό Τι είναι κλάση? Περιγραφή αντικειμένων Σύνταξη κλάσεων Κατασκευαστές (Constructors) Setters, Getters Υπερφόρτωση μεθόδων (Method Overload) Δημιουργία Αντικειμένων 3

Προηγούμενο μάθημα (2/2) 1. Όνομα Κλάσης 2. Πεδία - Καταστάσεις 3. Constructors 4. Getters 5. Setters 6. Μέθοδοι -Συμπεριφορές 4

Σημερινό μάθημα Access modifiers public private Ενθυλάκωση (Encapsulation) Instance and Class members static final Κληρονομικότητα (Inheritance) super/this keywords Πολυμορφισμός (Polymorphism) method overriding Interfaces Αφηρημένες κλάσεις / μέθοδοι (Abstract classes/methods) 5

Access modifiers Καθορίζουν το επίπεδο προσβασιμότητας μιας μεταβλητής ή μιας μεθόδου μίας κλάσης από άλλες κλάσεις. public η μεταβλητή / μέθοδος είναι προσβάσιμη από όλες τις κλάσεις private η μεταβλητή / μέθοδος είναι προσβάσιμη μόνο μέσα στην ίδια την κλάση 6

Ενθυλάκωση (encapsulation) H τεχνική κατά την οποία αποκρύπτεται η εσωτερική κατάσταση της κλάσης και η αλληλεπίδραση μαζί της γίνεται μέσω των μεθόδων. Δηλώνουμε τα fields ως private και κάνουμε προσπέλαση (ανάγνωση ή αλλαγή τιμής) στις μεταβλητές μιας κλάσης μέσω μεθόδων(π.χ. setters, getters). Class ο κόσμος Fields setgear getgear int gear; int speed; setspeed getspeed Methods 7

Instance and Class Members (1/3) Instance Variable/Method Κάθε αντικείμενο της κλάσης έχει το δικό του στιγμιότυπο (αντίγραφο) αυτής της μεταβλητής/μεθόδου. Class Variable/Method Όλα τα αντικείμενα της κλάσης έχουν κοινή αυτήν την μεταβλητή/μέθοδο. Για παράδειγμα: Θέλουμε σε κάθε ποδήλατο να κρατάμε ένα μοναδικό σειριακό αριθμό. Στο πρώτο ποδήλατο αυτός θα είναι το 1 στο δεύτερο το 2 κ.ο.κ. Το κάθε ποδήλατο λοιπόν έχει τον δικό του σειριακό αριθμό και γι` αυτό είναι instance variable private int id ; Θα πρέπει όμως να κρατάμε κάπου τον αριθμό των ποδηλάτων που έχει δημιουργηθεί για να ξέρουμε ποιόν σειριακό αριθμό να δώσουμε στον επόμενο. Έτσι το κρατάμε σε μια class variable private static int numberofbicycles; 8

Instance and Class Members (2/3) Η κλάση Bicycle με instance και class members 9

Instance and Class Members (3/3) Η main όπου κάνουμε κλήσεις τόσο των instance methods όσο και των class methods Το output αφού τρέξουμε την παραπάνω main 10

Κληρονομικότητα Inheritance (1/3) Κάποιες κλάσεις αντικειμένων έχουν κοινά χαρακτηριστικά με άλλες κλάσεις Κληρονομικότητα είναι η δυνατότητα της κλάσης να κληρονομεί καταστάσεις και συμπεριφορές από μία άλλη Μια κλάση που κληρονομεί τα χαρακτηριστικά μια άλλης κλάσης (υπερκλάσης) ονομάζεται υποκλάση της κλάσης αυτής Κάθε κλάση περιέχει όλα τα χαρακτηριστικά της υπερκλάσης της και κάποια επιπλέον Κάθε κλάση μπορεί να έχει πολλές υποκλάσεις αλλά μόνο μια υπερκλάση Έτσι δημιουργείται η ιεραρχία της Java στην κορυφή της οποίας βρίσκεται η κλάση Object 11

Κληρονομικότητα Inheritance (2/3) Bicycle Υπερκλάση των κλάσεων Mountain Bike, Road Bike και Tandem Bike Mountain Bike Road Bike Tandem Bike Υποκλάση της κλάσης Bicycle Υποκλάση της κλάσης Bicycle Υποκλάση της κλάσης Bicycle 12

Κληρονομικότητα Inheritance (3/3) Bicycle Mountain Bike extends extends Road Bike extends Tandem Bike 13

super / this keywords super Χρησιμοποιείται μέσα σε μία κλάση και μας δίνει πρόσβαση στα πεδία, τους κατασκευαστές ή τις μεθόδους της υπερκλάσης this Χρησιμοποιείται μέσα σε μία κλάση και μας δίνει πρόσβαση στα πεδία, τους κατασκευαστές ή τις μεθόδους της ίδια της κλάσης Κλήση του constructor της υπερκλάσης Κλήση του field αυτής της κλάσης Κλήση μεθόδου της υπερκλάσης 14

Πολυμορφισμός Polymorphism Πολυμορφισμός ονομάζεται η ιδιότητα των υποκλάσεων τόσο να ορίζουν δικές τους συμπεριφορές όσο και ταυτόχρονα να διατηρούν κάποιες άλλες όπως έχουν οριστεί στις υπερκλάσεις τους. Η διαδικάσια αυτή λέγεται method overriding και δίνει την δυνατότητα σε μία κλάση να διαφοροποιεί μία μέθοδο που κληρονομεί από την υπερκλάση της, διατηρώντας ίδια την υπογραφή της (όνομα μεθόδου, αριθμός και τύπος παραμέτρων) 15

Άσκηση Δημιουργήστε την κλάση «Άνθρωπος» και 2 υποκλάσεις του έτσι ώστε κάθε κλάση να έχει τουλάχιστον ένα κατασκευαστή, δύο μεταβλητές, όλες τις μεθόδους setters και getters και άλλη μία μέθοδο(εκτός setters-getters). Επίσης, να φαίνεται στην άσκηση ο τρόπος με τον οποίο μια κλάση μπορεί να κάνει κλήση των μεταβλητών και μεθόδων του εαυτού της και της υπερκλάσης της, με την χρήση των this και super. Στην συνέχεια να υλοποιήσετε μια κλάση Main (η οποία θα έχει μέθοδο main() ) στην οποία θα δημιουργήσετε στιγμιότυπα (instances) των κλάσεων σας και θα καλείτε τις μεθόδους τους. 16

Interfaces (1/3) Ένα interface είναι ένα «συμβόλαιο» που ορίζει σε μία κλάση αντικειμένων το πώς θα αλληλεπιδράει με άλλες κλάσεις και τον υπόλοιπο κόσμο Αποτελεί μια δομή η οποία δηλώνεται με το keyword interface και περιέχει μία συλλογή από μη υλοποιημένες μεθόδους. Οι μέθοδοι αυτοί ορίζουν στην ουσία τις συμπεριφορές που θα πρέπει οπωσδήποτε να έχει ένα αντικείμενο που «υλοποιεί» το συγκεκριμένο interface. Ορίζεται ως μέσο προτυποποίησης (standardization) του τρόπου επικοινωνίας διαφορετικών τύπων αντικειμένων. Αποτελεί μια κατευθυντήρια γραμμή (guideline) που υποβοηθά τον προγραμματιστή να αναπτύξη μια κλάση.

Interfaces (2/3) Δηλώνουμε το όνομα του interface και μέσα δηλώνουμε τις μεθόδους που θα πρέπει να υλοποιεί κάθε κλάση που κάνει implement αυτό το interface! Χρησιμοποιούμε το keyword implements για να δηλώσουμε ότι η κλάση αυτή θα υλοποιήσει το interface Vehicle. Η κλάση θα πρέπει οπωσδήποτε τώρα να περιέχει υλοποίηση των μεθόδων που τις έχει ορίσει το interface!

Interfaces (3/3) Επειδή οι μέθοδοι ενός interface είναι πάντα public, θα πρέπει να δηλωθούν ως public όταν υλοποιηθούν μέσα σε μία κλάση Τα interface έχουν σταθερές μεταβλητές και μεθόδους χωρίς σώμα Ένα interface μπορεί να κάνει extends άλλα (ένα ή περισσότερα) interfaces και να κληρονομήσει τις μεθόδους του Μια κλάση μπορεί να κάνει implements πολλά interfaces (αλλά extends μόνο μία κλάση) Κάθε κλάση που κάνει implements ένα interface είναι αναγκασμένη να υλοποιήσει όλες τις μεθόδους του.

Αφηρημένες Κλάσεις Μέθοδοι (1/3) Με το keyword abstract όρίζουμε αφηρημένες κλάσεις και μεθόδους Μια αφηρημένη κλάση μπορεί να έχει ή όχι αφηρημένες μεθόδους. Οι αφηρημένες κλάσεις ΔΕΝ μπορούν να δημιουργηθούν, μπορούν όμως να κληρονομηθούν. Γι` αυτό το λόγo μπορεί να διαθέτει constructors Εάν μία κλάση περιέχει αφηρημένες μεθόδους, τότε η κλάση πρέπει να δηλωθεί αφηρημένη Όταν μια αφηρημένη κλάση κληρονομηθεί, τότε η υποκλάση της είναι υποχρεωμένη να υλοποιήσει όλες τις αφηρημένες μεθόδους της. Αν δεν το κάνει τότε θα πρέπει και η υποκλάση της να δηλωθεί ως abstract κ.ο.κ. Ιδιότητες όπως method override κτλ παραμένουν στης αφηρημένες κλάσεις Μια αφηρημένη μέθοδος δηλώνεται χωρίς σώμα και χωρίς αγκύλες

Αφηρημένες Κλάσεις Μέθοδοι (2/3) Αφού είναι abstract κλάση δεν μπορεί να δημιουγηθεί κάποιο instance της. Δηλαδή δεν μπορεί να καλεστεί ο constructor της μετά το new στην main. Η κλάση Bicycle έχει κάποιες υλοποιημένες μεθόδους αλλά έχει και κάποιες abstract και γι`αυτό δηλώνεται ως abstract. Αυτές οι μεθόδοι θα πρέπει να υλοποιηθούν από την υποκλάση της

Αφηρημένες Κλάσεις Μέθοδοι (3/3) Παρόλο που η υπερκλάση της είναι abstract (δεν μπορούν να δημιουργηθούν instance της) ο constructor της μπορεί να καλεστεί μέσω αυτής της υποκλάσης H υποκλάση MountainBike της abstract class Bicycle υλοποιεί όλες τις abstract μεθόδους της.

Διαφορές μεταξύ Interface και Abstract Class Οι αφηρημένες κλάσεις μπορούν να περιέχουν και fields που δεν είναι σταθερές (static final) ενώ τα Interface όχι Οι αφηρημένες κλάσεις μπορούν να περιέχουν υλοποιημένες μεθόδους ενώ τα Interface δεν μπορούν. Αν μια αφηρημένη κλάση περιέχει μόνο abstract methods θα έπρεπε να δηλωθεί σαν Interface Οι αφηρημένες κλάσεις περιέχουν μέρος της υλοποίησης και αφήνουν στις υποκλάσεις την υπόλοιπη. Τα Interfaces δεν έχουν καθόλου υλοποίηση παρά μόνο δηλώσεις Τα Interfaces υλοποιούνται οπουδήποτε στην ιεραρχία κλάσεων ενώ οι abstract classes όχι Μια αφηρημένη κλάση χωρίζεται συνήθως σε πολλές παρόμοιες υποκλάσειςπου έχουν πολλά κοινά στοιχεία (υλοποιημένες μέθοδοι) αλλά και κάποιες διαφορές (αφηρημένες μέθοδοι)

Προαιρετικές ασκήσεις Δημιουργήστε την κλάση (class) του αντικειμένου «Τηλέφωνο». Η κλάση αυτή να έχει μία υπερκλάση και δύο υποκλάσεις που θεωρείτε κατάλληλες. Όλες οι κλάσεις που θα δημιουργήσετε να έχουν τουλάχιστον ένα κατασκευαστή, δύο μεταβλητές, όλες τις μεθόδους setters και getters και άλλη μία μέθοδο(εκτός setters-getters). Επίσης, να φαίνεται στην άσκηση ο τρόπος με τον οποίο μια κλάση μπορεί να κάνει κλήση των μεταβλητών και μεθόδων του εαυτού της και της υπερκλάσης της, με την χρήση των this και super. Στην συνέχεια να υλοποιήσετε μια κλάση Main (η οποία θα έχει μέθοδο main() ) στην οποία θα δημιουργήσετε στιγμιότυπα (instances) των κλάσεων σας και θα καλείτε τις μεθόδους τους. 24

Υποχρεωτική Άσκηση 2 (1/2) 1. Κατασκευάστε το Interface Drink με τις μεθόδους settype και gettype. 2. Κατασκεύασε την αφηρημένη κλάση AlcoholDrink(Ποτό) με έναν constructor που να υλοποιεί το interface Drink. Η κλάση πρέπει να περιέχει για κάθε ποτό τον τύπο του σε String και έναν μετρητή ποτών, καθώς και τον getter του μετρητή και μία tostring(). 3. Κατασκεύασε τις συγκεκριμένες υποκλάσεις του AlchoholDrink: Whiskey και Vodka που πρέπει να περιέχουν: Το είδος του ποτού(string), το ποσοστό αλκοόλ του (double) και μετρητή ποτών(int) Να υπάρχουν για κάθε κλάση δύο κατασκευαστές που να καλούν ο ένας τον άλλο, μία tostring() και μία getcount(). 25

Υποχρεωτική Άσκηση 2 (2/2) 4. Κατασκεύασε την κλάση TryDrink με main. Να κατασκευαστούν δύο ανώνυμα ποτά από την κάθε υποκλάση και να τοποθετηθούν σε πίνακα mydrinks[], διατρέχοντας τον οποίο, να τυπωθούν όλα τα στοιχεία τους. 5. Σώσε ότι έκανες σε συμπιεσμένο αρχείο, με την παρακάτω μορφή ονόματος: EpwnymoOnomaAM.zip με λατινικούς χαρακτήρες και ανέβασε το στο e-class, ανάλογα με την ημέρα στην οποία πέφτει το εργαστήριο στο οποίο είσαι γραμμένος/η. 26

Χρήσιμα Links The Java Tutorials - Trail: Learning the Java Language Lesson: Object-Oriented Programming Concepts What Is Inheritance? http://download.oracle.com/javase/tutorial/java/concepts/index.html Object-Oriented Programming Concepts teaches you the core concepts behind objectoriented programming: objects, messages, classes, and inheritance. This lesson ends by showing you how these concepts translate into code. Feel free to skip this lesson if you are already familiar with object-oriented programming. The Java Tutorials - Trail: Learning the Java Language Lesson: Interface and Inheritance Inheritance http://download.oracle.com/javase/tutorial/java/iandi/subclasses.html This section describes the way in which you can derive one class from another. That is, how a subclass can inherit fields and methods from a superclass. You will learn that all classes are derived from the Object class, and how to modify the methods that a subclass inherits from superclasses. 27

Χρήσιμα Links The Java Tutorials - Trail: Learning the Java Language Lesson: Object-Oriented Programming Concepts What Is an Interface? http://download.oracle.com/javase/tutorial/java/concepts/index.html Object-Oriented Programming Concepts teaches you the core concepts behind objectoriented programming: objects, messages, classes, and inheritance. This lesson ends by showing you how these concepts translate into code. Feel free to skip this lesson if you are already familiar with object-oriented programming. The Java Tutorials - Trail: Learning the Java Language Lesson: Interface and Inheritance Interface http://download.oracle.com/javase/tutorial/java/iandi/subclasses.html This section describes the way in which you can derive one class from another. That is, how a subclass can inherit fields and methods from a superclass. You will learn that all classes are derived from the Object class, and how to modify the methods that a subclass inherits from superclasses. 28

Τέλος διαφανειών See you next time! The end 29