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

Σχετικά έγγραφα
ΑΣΚΗΣΗ 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (1) Θεωρητικό μέρος

Τι είναι κλάση Κλάση

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

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

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

Με τι ασχολείται ο αντικειμενοστραφής προγραμματισμός

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΗΣ ΜΕ ΕΠΙΣΤΡΟΦΗ ΤΙΜΗΣ #include <iostream.h> int compare_numbers(int num1, int num2)

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

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

Με τι ασχολείται ο αντικειμενοστραφής προγραμματισμός

Τελικό τεστ - απαντήσεις

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

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

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

Αντικειμενοστραφής Προγραμματισμός ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

3 Αλληλεπίδραση Αντικειμένων

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

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

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

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Δεδομένα, τελεστές, είσοδος/έξοδος

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

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

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

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

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

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

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

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

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης

Εργαστήριο 10 Κλάσεις

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

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

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΜΟΡΦΙΣΜΟΣ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Σηµειώσεις Εργαστηρίου)

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

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

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

2 using namespace s t d ; 4 { 12 int t= x ; 6 x=y ; 7 y=t ; 8 } 9 11 { 13 x= y ; 14 y=t ; 15 } {

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

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Στοιχειώδης προγραμματισμός σε C++

4 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

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

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

Υπερφόρτωση τελεστών

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

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

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

Wrapper Classes, Abstract Classes and Interfaces

Εισαγωγή στην επιστήμη των υπολογιστών

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

Ενδεικτική περιγραφή μαθήματος

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

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

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

Προγραμματισμός Υπολογιστών με C++

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

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

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

Εισαγωγή. 1 Γενικά. 2 Προγράμματα σε C++ 5 Νοεμβρίου 2012

Ενδεικτική περιγραφή μαθήματος

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

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

ΕΛΕΓΧΟΣ ΡΟΗΣ IF-ELSE

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

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

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

Transcript:

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΒΑΣΙΚΗ ΚΑΙ ΠΑΡΑΓΩΓΕΣ ΚΛΑΣΕΙΣ #include <iostream.h> class logariasmos //basikh klash //prostateymeno dedomeno-melos float ypoloipo; logariasmos() //dhlosh constructor ypoloipo=0; float pareypoloipo() return ypoloipo; ; //telos basikhs klashs class tokoslogar:public logariasmos //paragomenh klash void tokos() //methodos paragomenhs klashs ypoloipo+=ypoloipo*0.1; ; //telos paragomenhs klashs void main() tokoslogar loga; //antikeimeno ths paragomenhs klashs cout <<"Trexon ypoloipo:"<<loga.pareypoloipo()<<endl; loga.katathesi(120.0); cout <<"Trexon ypoloipo:"<<loga.pareypoloipo()<<endl; loga.tokos(); cout <<"Trexon ypoloipo:"<<loga.pareypoloipo()<<endl; //telos ths main Σχηματική παράσταση του προγράμματος. logariasmos tokoslogar Στο πιο πάνω παράδειγμα δημιουργήσαμε μια βασική κλάση logariasmos και μία δημόσια παραγόμενη κλάση tokoslogar. σελ. 1

Στην main() δημιουργούμε ένα αντικείμενο loga της παράγωγης κλάσης tokoslogar. Το αντικείμενο αρχικοποιείται στην τιμή 0 χρησιμοποιώντας τον constructor της βασικής κλάσης. Επίσης το αντικείμενο χρησιμοποιεί τις μεθόδους katathesi() και pareypoloipo() της κλάσης logariasmos. To δεδομένο-μέλος έχει δηλωθεί ως protected έτσι ώστε να είναι προσπελάσιμο και από την βασική κλάση στην οποία και ανήκει αλλά και στην παράγωγη (εάν ήταν private θα είχε πρόσβαση σε αυτό μόνο η κλάση στην οποία ανήκει). Η κληρονομικότητα δεν λειτουργεί αντίστροφα, δηλαδή εάν φτιάχναμε στην main() ένα αντικείμενο της βασικής κλάσης π.χ. logariasmos log1 αυτό θα είχε πρόσβαση μόνο στις μεθόδους της κλάσης στην οποία ανήκει και είναι η βασική αλλά όχι και στην μέθοδο tokos() που ανήκει στην παραγόμενη κλάση. ΣΥΝΔΙΑΣΜΟΙ ΠΡΟΣΒΑΣΗΣ #include <iostream.h> class Basic //basikh klash private: int privmember; //idiotiko dedomeno-melos int protmember; //prostateymeno dedomeno-melos int publmember; //dhmosio dedomeno-melos ; //telos basikhs klashs class ProdA:public Basic //dhmosia paragomenh klash void method() int x; x=privmember; //mh prospelasimo x=protmember; //prospelasimo x=publmember; //prospelasimo ; //telos klashs ProdA class ProdB:private Basic //idiotika paragomenh klash void method() int x; x=privmember; //mh prospelasimo x=protmember; //prospelasimo x=publmember; //prospelasimo ; //telos klashs ProdB void main() int y,z; σελ. 2

ProdA anta; //antikeimeno ths paragomenhs ProdA y=anta.privmember; //mh prospelasimo y=anta.protmember; //mh prospelasimo y=anta.publmember; //prospelasimo ProdB antb; //antikeimeno ths paragomenhs ProdB z=antb.privmember; //mh prospelasimo z=antb.protmember; //mh prospelasimo z=antb.publmember; //mh prospelasimo //telos ths main Σχηματική παράσταση του προγράμματος. Basic ProdA ProdB Στο παραπάνω πρόγραμμα ορίζεται μία βασική κλάση Basic και δύο παραγόμενες κλάσεις, η μία δημόσια παραγόμενη ProdA και η άλλη ιδιωτικά ProdB. Στην βασική κλάση δηλώνονται τρία δεδομένα-μέλη, το πρώτο σαν ιδιωτικό, το δεύτερο σαν προστατευμένο και το τρίτο σαν δημόσιο. Μέθοδοι των παράγωγων κλάσεων μπορούν να έχουν πρόσβαση σε προστατευμένα και δημόσια δεδομένα-μέλη της βασικής κλάσης, όχι όμως σε ιδιωτικά. Αντικείμενα παράγωγων κλάσεων δεν μπορούν να έχουν πρόσβαση σε προστατευμένα και ιδιωτικά δεδομένα-μέλη της βασικής κλάσης. Αντικείμενα της παράγωγης κλάσης που παράγεται δημόσια (ProdA) μπορούν να έχουν πρόσβαση σε δημόσια δεδομένα-μέλη της βασικής κλάσης. Αντικείμενα παράγωγης κλάσης που παράγεται ιδιωτικά (ProdB) δεν μπορούν να έχουν πρόσβαση ούτε στα δημόσια δεδομένα-μέλη της βασικής κλάσης. Εάν δεν δηλώσουμε τον τρόπο προσπέλασης κατά την δήλωση παραγωγής μιας κλάσης τότε θεωρείται ότι η κλάση αυτή παράγεται ιδιωτικά (private). σελ. 3

ΥΠΕΡΦΟΡΤΩΣΗ ΣΥΝΑΡΤΗΣΕΩΝ #include <iostream.h> class logariasmos //basikh klash //prostateymeno dedomeno-melos float ypoloipo; logariasmos() //constructor x.o. ypoloipo=0; float pareypoloipo() return ypoloipo; ; //telos basikhs klashs class tokoslogar:public logariasmos //paragomenh klash tokoslogar():logariasmos() tokoslogar(float ypoloipo):logariasmos(ypoloipo) void tokos() //methodos paragomenhs klashs ypoloipo+=ypoloipo*0.1; void katathesi(float poso) if(poso>0) //elegxos arnhtikoy posou logariasmos::katathesi(poso); //yperfortosh else cout<<"mh egkyro poso"<<endl; void analhpsh(float poso) if(poso>0) //elegxos arnhtikoy posou logariasmos::analhpsh(poso); //yperfortosh else cout<<"mh egkyro poso"<<endl; ; //telos paragomenhs klashs void main() tokoslogar t1; //antikeimeno ths paragoghs klashs t1.katathesi(100); cout<<"neo ypoloipo toy t1= "<<t1.pareypoloipo()<<endl; t1.katathesi(-30); cout<<"neo ypoloipo toy t1= "<<t1.pareypoloipo()<<endl; t1.analhpsh(50); σελ. 4

cout<<"neo ypoloipo toy t1= "<<t1.pareypoloipo()<<endl; t1.analhpsh(-45); cout<<"neo ypoloipo toy t1= "<<t1.pareypoloipo()<<endl; //telos ths main Στο πιο πάνω πρόγραμμα έχουμε φτιάξει μεθόδους με το ίδιο όνομα και στην βασική logariasmos και στην παραγόμενη κλάση tokoslogar. Αυτό το κάνουμε για να προσθέσουμε ένα τμήμα ελέγχου μέσα στις μεθόδους analhpsh και katathesi χωρίς να επηρεαστούν οι αντίστοιχες μέθοδοι της βασικής κλάσης. Στην main() φτιάχνουμε ένα αντικείμενο t1 της παράγωγης κλάσης tokoslogar όπου κάνει ανάληψη αλλά και κατάθεση με θετικό και αρνητικό ποσό. Στην εντολή t1.katathesi(100); καλείται η μέθοδος katathesi() της παραγόμενης κλάσης όπου και γίνεται ο έλεγχος για το αν το ορισμα είναι θετικό. Εάν το ποσό είναι θετικό τότε καλείται η μέθοδος katathesi() της βασικής κλάσης με την εντολή logariasmos::katathesi(poso); Το ίδιο ισχύει και για την μέθοδο analhpsh(). Είναι πολύ σημαντικό να γνωρίζουμε ότι μέσα στην μέθοδο της παραγόμενης κλάσης για να καλέσουμε την αντίστοιχη με το ίδιο όνομα της βασικής κλάσης θα πρέπει να χρησιμοποιούμε τον τελεστή διάκρισης εμβέλειας :: γιατί αλλιώς η μέθοδος καλεί τον εαυτό της με όχι και τόσο επιθυμητά αποτελέσματα για το πρόγραμμα. Επίσης βλέπουμε και την δήλωση και χρήση των συναρτήσεων εγκατάστασης (constructor) και στην παράγωγη κλάση tokoslogar όπου για να αρχικοποιήσουμε το δεδομένο-μέλος ypoloipo της βασικής συνάρτησης logariasmos, ο constructor της παράγωγης κλάσης (με όρισμα ή χωρίς όρισμα ) καλεί τον αντίστοιχο της βασικής. σελ. 5

CONSTRUCTORS ΣΕ ΒΑΣΙΚΗ ΚΑΙ ΠΑΡΑΓΟΜΕΝΗ ΚΛΑΣΗ class animal //vasikh klash float age; bool male; int weight; animal () animal (float i, bool j, int k) //constructor me 3 orismata age = i; male = j; weight = k; class cat:public animal //paragomenh klash private: char name[10]; cat () // constructor me 4 orismata cat (float a, bool b, int c, char d[]):animal (a, b, c) strcpy(onoma, d); Στο πιο πάνω τμήμα ενός προγράμματος φαίνονται δύο κλάσεις. Η βασική που είναι η animal και η παραγόμενη που είναι η cat. Στην βασική κλάση έχουμε δημιουργήσει έναν constructor με 3 ορίσματα animal(float i,bool j,int k), (τα ορίσματα αφορούν στην ηλικία, το φύλλο και το βάρος του ζώου). Στην παραγόμενη κλάση ορίζουμε έναν constructor με 4 ορίσματα animal(float i,bool j,int k) που αφορούν σε όλα της βασικής και σε ένα που ορίζουμε στην παραγόμενη κλάση και αφορά το όνομα του ζώου. Έτσι ώστε αν δημιουργήσουμε ένα αντικείμενο cata της κλάσης cat και δώσουμε 4 ορίσματα, τα τρία θα τα αρχικοποιεί ο constructor της βασικής και το ένα αυτός της παραγόμενης. σελ. 6

ΕΠΙΠΕΔΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑΣ class vehicle //vasikh klash int rodes; char timoni[10]; void start() void stop() void turn() ; //telos vasikhs class auto:public vehicle //paragomenh apo thn vasikh int portes; char motor[20]; ; //telos paragomenhs class truck:public auto //paragomenh apo thn paragomenh private: char flatbed[10]; void liftflatbed() ; //telos paragomenhs Σχηματική παράσταση του προγράμματος. vehicle auto truck Στο πιο πάνω τμήμα ενός προγράμματος φαίνονται τρεις κλάσεις. Η βασική είναι η vehicle από την οποία παράγεται η auto, η οποία κληρονομεί χαρακτηριστικά και μεθόδους από την vehicle. Κατόπιν φαίνεται η truck η οποία κληρονομεί χαρακτηριστικά και μεθόδους από την auto αλλά και από την vehicle. Ένα αντικείμενο της κλάσης truck έχει πρόσβαση στις μεθόδους και της auto και της vehicle. σελ. 7

Ένα αντικείμενο της κλάσης auto έχει πρόσβαση στις μεθόδους της vehicle, αλλά όχι σε αυτές της truck. Ένα αντικείμενο της κλάσης vehicle έχει πρόσβαση μόνο στις μεθόδους της κλάσης του. Αυτό συμβαίνει γιατί όπως έχουμε πει η έννοια της κληρονομικότητας δεν λειτουργεί αντίστροφα. ΠΟΛΛΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ class screen //proth vasikh klash void showscreen(void); char type[32]; long colors; int x_resol; int y_resol; ; class motherboard //deyterh vasikh klash void showmotherboard(void); char processor[15]; int speed; int RAM; ; //pollaplh klhronomikothta class computer:public screen, public motherboard void showcomputer(void); private: char name[64]; int hdd; float floppy; ; Σχηματική παράσταση του προγράμματος. screen motherboard computer Στο πιο πάνω πρόγραμμα δηλώνονται δύο κλάσεις screen και motherboard από τις οποίες παράγεται μία κλάση computer η οποία κληρονομεί χαρακτηριστικά και μεθόδους και των δύο κλάσεων. σελ. 8

ΠΕΡΙΕΚΤΙΚΟΤΗΤΑ #include <iostream.h> #include <string.h> class logariasmos //klash logariasmos float ypoloipo; logariasmos() ypoloipo=0; float pareypoloipo() return ypoloipo; ; //telos klashs class Pelaths //klash pelaths private: int armht; char onoma[20]; //antikeimeno ths klashs logariasmos logariasmos log1; Pelaths() Pelaths(int armht1,char onoma1[]) armht=armht1; strcpy(onoma,onoma1); void parexrhma() float poso; cout<<"dose POSO ANALHPSIS:"; cin>>poso; //klhsh synarthshs apo klash logariasmos log1.analhpsh(poso); void valexrhma() float poso; cout<<"dose POSO KATATHESIS:"; cin>>poso; //klhsh synarthshs apo klash logariasmos log1.katathesh(poso); void anaforaypoloipou() cout<<"to TREXON YPOLOIPO EINAI: " <<log1.pareypoloipo()<<endl; σελ. 9

; //telos klashs void main() Pelaths P1; P1.anaforaYpoloipou(); P1.valeXrhma(); P1.anaforaYpoloipou(); P1.pareXrhma(); P1.anaforaYpoloipou(); //telos main Σχηματική παράσταση του προγράμματος logariasmos Pelaths Log1 Αντικείμενο της κλάσης logariasmos μέσα στην κλάση Pelaths Στο πιο πάνω πρόγραμμα βλέπουμε την σχέση της περιεκτικότητας ανάμεσα σε δύο ανεξάρτητες κλάσεις logariasmos και Pelaths. Κατασκευάζουμε ένα αντικείμενο log1 της κλάσης logariasmos μέσα στην κλάση Pelaths. Με αυτόν τον τρόπο το αντικείμενο log1 μπορεί να εκτελεί μεθόδους της κλάσης logariasmos μέσα από τη κλάση Pelaths. σελ. 10

ΣΧΗΜΑΤΙΚΗ ΠΑΡΑΣΤΑΣΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑΣ ΟΧΗΜΑ Ρόδες Τιμόνι Ξεκινά() Σταματά() Στρίβει() Βασική κλάση όχημα παράγωγες κλάσεις από όχημα ΑΥΤΟΚΙΝΗΤΟ ΠΟΔΗΛΑΤΟ ΜΗΧΑΝΗ ΠΟΔΗΛΑΤΟ Μηχανή Πόρτες Συμπλέκτης Σταντ Μηχανή Σταντ Συμπλέκτης ΦΟΡΤΗΓΟ Καρότσα Ανατροπή() ΕΠΙΒΑΤΙΚΟ Πίσω πόρτα ΛΕΩΦΟΡΕΙΟ Πολλά καθίσματα παράγωγες κλάσεις από αυτοκίνητο σελ. 11