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

Σχετικά έγγραφα
(Διαφάνειες Νίκου Βιδάκη)

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

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

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

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

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee

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

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

Βασικές Έννοιες ΟΟΡ, Κληρονομικότητα, Σύνθεση (Inheritance - Composition)

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

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

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

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

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

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

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

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

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

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

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

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

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

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

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

παράδοση έως: Παρασκευή 11 Ιανουαρίου 2019

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

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

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

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


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

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

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

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

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

(Απλή) Κληρονομικότητα

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

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

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

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

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

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Κλάσεις και αντικείμενα #include <iostream.h<

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ποιότητα Λογισμικού. Μετρικές Αντικειμενοστραφούς Σχεδίασης

Διάγραμμα Κλάσεων. Class Diagram

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

ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΠΠΑΙΚ ΑΝΑ ΠΟΛΗ ΣΕΙΡΑ ΚΑΤΑΤΑΞΗΣ ΕΙΣΑΓΩΓΗ ΟΝΟΜΑ ΕΠΩΝΥΜΟ ΠΑΤΡΩΝΥΜΟ ΠΟΛΗ ΕΠΙΛΟΓΗΣ 1 NAI ΔΗΜΗΤΡΙΟΣ ΚΑΡΒΟΥΝΗΣ ΝΙΚΟΛΑΟΣ ΑΘΗΝΑ 2 NAI ΒΑΣΙΛΕΙΟΣ

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

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

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

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

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

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

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

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

Κληρονομικότητα. 1 Γενικά. 2 Απλή κληρονομικότητα. 15 Ιανουαρίου 2013

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

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

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

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

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

ΑΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής

Παράδειγμα Σύνθεσης: Class Name

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships)

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

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

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

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

Transcript:

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance) ΑΣΚΗΣΗ-1 η κληρονομεί μια λειτουργικότητα της υπερκλάσης. Π.χ. ορίστε την υπερκλάση Superclass με χαρακτηριστικά (1) το γένος gender (String) και (2) την ηλικία age (int), και μία μέθοδο την getgenderandage() που εμφανίζει τα ανωτέρω χαρακτηριστικά. Η υποκλάση Subclass κληρονομεί από την Superclass την ανωτέρω λειτουργικότητα. Χρησιμοποιείστε επίσης την παραμετρική super() για αρχικοποίηση των χαρακτηριστικών (κλήση του δομητή) της υπερκλάσης. ΑΣΚΗΣΗ-2 η κληρονομεί ένα χαρακτηριστικό της υπερκλάσης. Π.χ. ορίστε την υπερκλάση Superclass1 με χαρακτηριστικό το όνομα name(string) και μία μέθοδο την display() που εμφανίζει τo όνομα. Η υποκλάση Subclass1 κληρονομεί από την Superclass1 το ανωτέρω χαρακτηριστικό. Χρησιμοποιείστε επίσης την super.<πεδιο> για πρόσβαση στο πεδίο της υπερκλάσης, αλλά και αντικείμενο της υποκλάσης για κλήση της μεθόδου display(). ΑΣΚΗΣΗ-3 η κληρονομεί χαρακτηριστικά και μεθόδους της υπερκλάσης. Π.χ. ορίστε την υπερκλάση Employee με private χαρακτηριστικά (1) το όνομα name(string), (2) την ηλικία int, καθώς setter() και αντίστοιχες getter(). Η υποκλάση Manager κληρονομεί από την Employee και στην main() ορίστε ένα αντικείμενο της Manager και με τις getter() εμφανίστε τα ανωτέρω χαρακτηριστικά. ΑΣΚΗΣΗ-4 η Να γραφεί το πρόγραμμα Java που ελέγχει την κληρονομικότητα σε μια κληρονομικότητα (Animal, Mamal, Reptile, Cat, Dog) με χρήση της instanceof. Η σύνταξη: if (<objectreference> instanceof <type>) 1

ΑΣΚΗΣΗ-5 η Να γραφεί ένα πρόγραμμα Java που δείχνει την υπέρβαση μεθόδου. Το πρόγραμμα ορίζει την υπερκλάση Human με δύο μεθόδους (1) void eat() και (2) void drink() με απλά αντίστοιχα μηνύματα και την υποκλάση Boy που κληρονομεί την Human αλλά υλοποιεί τις ανωτέρω μεθόδους με τα αντίστοιχα μηνύματα. Με αντικείμενο της υποκλάσης δείξτε την υπέρβαση των μεθόδων. ΑΣΚΗΣΗ-6 η (Κληρονομικότητα και υπέρβαση μεθόδων) Η μισθοδοσία των υπαλλήλων μιας εταιρείας περιλαμβάνει 2 κατηγορίες υπαλλήλων (1) τους Διοικητικούς και (2) τους Τεχνικούς. Για τις 2 κατηγορίες υπάρχουν δύο τύποι μισθοδοσίας (α) 0=Μισθωτός και (β) 1=Ωρομίσθιος. Ο βασικός μισθός για τους Διοικητικούς είναι 1200 Ευρώ και για τους Τεχνικούς 800 Ευρώ, ενώ και οι 2 κατηγορίες μπορούν να λάβουν και ένα bonus (X)- Ευρώ. Ο μισθός υπολογίζεται με την σχέση: Μισθός = Βασικός + Βonus, για τους μισθωτούς και για τους ωρομίσθιους με τη σχέση: Μισθός = Ώρες Εργασίας * Τιμή Ώρας (όπου για τον Διοικητικό είναι 12 Ευρώ την ώρα, και για τον Τεχνικό 10 Ευρώ/ώρα). Κατασκευαστικά: Η υπερκλάση: Employee, θα ορίζει 4 χαρακτηριστικά που είναι κοινά και για τις δύο κατηγορίες (1) Name, (2) Bonus, (3) Hours (για τους ωρομίσθιους) και (4) Τύπος Υπάλληλου (0=Διοικητικός, 1=Τεχνικός) και θα υλοποιεί δύο σημαντικές μεθόδους (α) getpaytype() που επιστρέφει τα μηνύματα Μισθός ή Με την Ώρα ανάλογα του τύπου μισθοδοσίας, (β) getemptype() που επιστρέφει το μήνυμα Employee, και (γ) calcsalary(), που υπολογίζει τον μισθό του Employee. Οι υποκλάσεις: Administrator και Technical θα κληρονομούν τα 4-χαρακτηριστικά και την μέθοδο getpaytype() από την υπερκλάση, ενώ θα υπερβαίνουν (override) τις μεθόδους getemptype() και calcsalary(). Χρησιμοποιήστε μια βοηθητική κλάση την Company στην οποία αρχικοποιείται ένας πίνακας 4-αντικειμένων όλων των τύπων και επιπλέον 2 μεθόδους (α) setemployee(), που ειάγει τα αντικείμενα στον πίνακα και (β) printall() που εμφανίζει τα στοιχεία του κάθε υπάλληλου και τον μισθό του. ΑΣΚΗΣΗ-7 η (Σύνθεση) Η κλάση Job περιέχει τα πεδία: (1) perigrafi (String), (2) misthos(int), (3) kodikos(int) και τις αντίστοιχες setter() και getter(). Η κλάση Person δημιουργεί και αρχικοποιεί στον δομητή της ένα σύνθετο αντικείμενο της Job και υλοποιεί τις μεθόδους της (Job). Στην main() να υλοποιηθεί η σύνθεση με αντικείμενο της Person (εμφάνιση όλων των στοιχείων). 2

ΑΣΚΗΣΗ-8 η (Σύνθεση) Η κλάση Employee θα λάβει στοιχεία από δύο άλλες κλάσεις τις: (1) Name: που ορίζει το όνομα του υπάλληλου, και (2) Address: που ορίζει την διεύθυνση του υπάλληλου. H κλάση Employee: που ορίζει τα στοιχεία του υπάλληλου, χρησιμοποιώντας όμως σαν μεταβλητές αντικείμενα του των τύπων Name και Address. Η TestEmployee: η οποία ορίζει αντικείμενα του τύπου Name, Address και Employee και που εμφανίζει όλα τα στοιχεία του Υπάλληλου. Γράψτε το πρόγραμμα Java που υλοποιεί την σύνθεση χρησιμοποιώντας τις τέσσερεις ανωτέρω κλάσεις. ΑΣΚΗΣΗ-9 η (Σύνθεση) Η κλάση Person έχει τα πεδία: (1) salary (double), (2) name(string) και (3) μια αναφορά σε αντικείμενο της κλάσης Birthday που έχει και αυτή τρία πεδία: day(int), month(int), year(int). Στην main() να δημιουργήσετε αντικείμενο της Person και να υλοποιήσετε την σύνθεση εμφανίζοντας όλα τα στοιχεία (συμπεριλαμβανομένης της ημερομηνίας των γενεθλίων). ΑΣΚΗΣΗ-10 η (Σύνθεση και κληρονομικότητα) Η κλάση Car έχει τα πεδία (1) color(string), (2) maxspeed(int), την μέθοδο carinfo() που εμφανίζει τα ανωτέρω πεδία, και τις αντίστοιχες setter() για τα πεδία. Η κλάση Ferrari που κληρονομεί την Car έχει μια μέθοδο την FerrariDemo() που ορίζει ένα αντικείμενο της κλάσης Engine και υ- λοποιεί την μέθοδο της- την start(). Η κλάση Engine περιέχει εκτός από την μέθοδο start() και την μέθοδο stop() (απλά μηνύματα). Στην main() δημιουργείστε αντικείμενο της Ferrari που θα κληρονομεί και εμφανίζει από την Car τα πεδία και την carinfo(), αλλά θα υλοποιεί και σύνθεση με χρήση της μεθόδου start() της κλάσης Engine. ΑΛΥΤΕΣ ΑΣΚΗΣΕΙΣ ΑΣΚΗΣΗ-1 η (κληρονομικότητα) Δημιουργήστε τις υποκλάσεις StatheroTilefono και KinitoTilefono και την υπερκλάση Tilefono. Οι δύο υποκλάσεις θα κληρονομούν από την υπερκλάση χαρακτηριστικά και μεθόδους. Όλες οι κλάσεις που θα δημιουργήσετε να έχουν ένα πλήρη δομητή, τα κατάλληλα πεδία, τις μεθόδους setters() και getters(), tostring() και τι μεθόδους: (1) TyposThlefonou, (2) klisikinitou και (3) klisistatherou που πραγματοποιούν, ανάλογα με τον τύπο του τηλεφώνου, κλήσεις στο κινητό και σταθερό τηλέφωνο. Η χρέωση είναι 0.10 και 0.20 το λεπτό προς το σταθερό και κινητό αντίστοιχα. Το πρόγραμμα θα υπολογίζει τα επιμέρους κόστη για τις κλήσεις προς κινητό και σταθερό αλλά και το συνολικό κόστος όλων των N κλήσεων. Στην main δημιουργήστε ένα πίνακα Ν - αντικειμένων με κινητά και σταθερά και με τις αντίστοιχες 3

κλήσεις και υλοποιήστε τις μεθόδους και τους υπολογισμούς που προαναφέρθηκαν. Τα αποτελέσματα θα εμφανίζονται με τα κατάλληλα μηνύματα. ΑΣΚΗΣΗ-2 η (Σύνθεση και κληρονομικότητα) Coffee Machine (Κληρονομικότητα και Σύνθεση) Να γραφεί το πρόγραμμα υλοποίησης του Coffee Machine. Ορίστε την υπερκλάση Coffee με πεδία: (1) coffeename (π.χ. frappe, capuccino, κ.λ.π...) (2) typoscafe (1= kaonikos, 2= decaf ) (3) sweetness (1= glykos, 2= metrios, 3= sketos ) (4) dosi (1= monos, 2= diplos ) (5) price (π.χ. 1 ) Επιπλέον θα έχει τις μεθόδους getcoffeename(), gettypos_cafe(), getsweetness(), getdosi() και getprice() οι οποίες θα επιστρέφουν τα ανάλογα μηνύματα. Στη συνέχεια να δημιουργήσετε τις υποκλάσεις: (1) Espresso, (2) Capuccino, (3) Frappe, (4) Ellinikos, (5) Filtrou οι οποίες κληρονομούν από την υπερκλάση όλες τις λειτουργίες της. Οι υ- ποκλάσεις διαθέτουν τα παρακάτω επιπλέον πεδία και λειτουργίες: Η κλάση Espresso: (1) gefsi (π.χ. fountouki, karamela, κ.λ.π..) και τις μεθόδους geticed() και getgefsi() οι οποίες θα επιστρέφουν τα αντίστοιχα μηνύματα. Η κλάση Capuccino: (1) gefsi ( fountouki, karamela, κ.λ.π..) (3) kanella (1= nai, 2= oxi ) και τις μεθόδους geticed(), getgefsi() και getkanella() οι οποίες θα επιστρέφουν τα αντίστοιχα μηνύματα. Η κλάση Frappe: (1) gefsi ( fountouki, karamela, κ.λ.π..) και τις μεθόδους geticed(), getgefsi() οι οποίες θα επιστρέφουν τα αντίστοιχα μηνύματα. 4

Η κλάση Filtrou: (1) gefsi ( fountouki, karamela, κ.λ.π..) και τη μέθοδο getgefsi() η οποία θα επιστρέφει το ανάλογο μήνυμα. Η κλάση Ellinikos δεν έχει κανένα επιπλέον πεδίο. Τέλος να δημιουργήσετε τις κλάσεις Sugar και Cream (για την σύνθεση - composition). Η Sugar έχει ως πεδίο το typossug το οποίο δέχεται τις τιμές: 1 αν η ζάχαρη είναι white και 2 αν η ζάχαρη είναι brown και τη μέθοδο gettypossug() η οποία επιστρέφει το ανάλογο μήνυμα. H Cream έχει ως πεδίο το typoscre το οποίο δέχεται: 0 αν δεν έχει κρέμα, 1 αν η κρέμα είναι afrogala, 2 αν η κρέμα είναι fitiki και 3 αν έχουμε γάλα και τη μέθοδο gettyposcre() η οποία επιστρέφει το ανάλογο μήνυμα. Στη main() θα δημιουργείτε αντικείμενα όλων των υποκλάσεων και υλοποιείτε όλους τους τύπους των καφέδων. Παράδειγμα Lay out εμφάνιση αντικειμένου (καφέ): Coffee name: Frappe Typos cafe: kanonikos Sweetness: glykos (1) Dosi: diplos (2) Gefsi: fountouki Iced: kryos (1) TyposSug: white sugar (1) TyposCre: afrogalo (1) Price: 2 5