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

Σχετικά έγγραφα
Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

Outline. 4 Object-Oriented Programming

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ. Ι. Ψαρομήλιγκος Χ. Κυτάγιας

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

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

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

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

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

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

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

Βάσεις Δεδομένων Ι. 4 ο Φροντιστήριο. Πέρδικα Πολίνα [perdika]

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

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

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

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

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

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

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

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

Π2 Το Σύστηµα Κανόνων CLIPS

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

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

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

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

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

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

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

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

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)


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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γλώσσες Προγραμματισμού

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

εύτερη γενιά: γλώσσα assembly

Προγραµµατιστικές τεχνικές

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

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

Κάποιες γενικές παρατηρήσεις:

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

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

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

Ευφυείς Τεχνολογίες ----Πράκτορες

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


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

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

Χρήση Αντικειμενοστραφούς Προγραμματισμού στον Υπολογιστικό Ηλεκτρομαγνητισμό

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

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

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

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

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

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

Transcript:

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

ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural) ή Προστακτικός (Imperative), Pascal C Αντικειμενοστρεφής (Object-Oriented) Java, C++ υναρτησιακός (Functional) Lisp Δηλωτικός (Declarative) Prolog

ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural) ή Προστακτικός (Imperative Αντικειμενοστρεφής (Object-Oriented) υναρτησιακός (Functional) Δηλωτικός (Declarative)

Η ΕΝΝΟΙΑ ΣΟΤ ΑΝΣΙΚΕΙΜΕΝΟΤ Προβλήματα του διαδικασιακού προγραμματισμού. Ενθυλάκωση (Encapsulation) (Δεδομένα και διαδικασίες ενσωματωμένα στην ίδια οντότητα) Αντικείμενο (Object)

ΦΑΡΑΚΣΗΡΙΣΙΚΑ ΑΝΣΙΚΕΙΜΕΝΟΤ Απόκρυψη ή Αφαίρεση Δεδομένων (Data Hiding or Abstraction) (Απόκρυψη λεπτομερειών αναπαράστασης και χρήσης των δεδομένων του αντικειμένου από τον εξωτερικό κόσμο) Διεπαφή Αντικειμένου (Object interface) (Η προσπέλαση και επεξεργασία των δεδομένων γίνεται μέσω ενός συνόλου διαδικασιών)

ΔΟΜΗ ΑΝΣΙΚΕΙΜΕΝΟΤ τατικό μέρος (private) Δυναμικό μέρος (public) Δεδομένα (Μεταβλητές) Διαδικασίες (Μέθοδοι) ΜΕΘΟΔΟΙ ΔΕΔΟΜΕΝΑ

ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΗ ΠΡΟΕΓΓΙΗ ΠΡΟΒΛΗΜΑΣΟ Το πεδίο εφαρμογής θεωρείται ως ένα σύνολο αντικειμένων οργανωμένων σε ιεραρχία(ες), τα οποία επικοινωνούν μεταξύ τους με μηνύματα. Δύο τύποι αντικειμένων * Κλάση (class) * τιγμιότυπο (instance)

ΚΛΑΗ Κλάση Περιγράφει μια οικογένεια οντοτήτων με ίδια χαρακτηριστικά και συμπεριφορά (δηλ. μια αφηρημένη οντότητα) Π.χ. Σκύλος, Τοστιέρα, Τρίγωνο

ΚΛΑΗ-ΠΑΡΑΔΕΙΓΜΑ Article Variables price quantity Methods selprice () { return (1.23 * price)} remove (q) { quantity quantity q}

ΜΕΣΑΒΛΗΣΕ-ΜΕΘΟΔΟΙ Οι μεταβλητές μιας κλάσης αναπαριστούν τα κοινά χαρακτηριστικά των οντοτήτων που αντιπροσωπεύει η κλάση ή της κλάσης ως όλον και σχετίζονται με το πρόβλημα. Οι μέθοδοι μιας κλάσης υλοποιούν διαδικασίες που σχετίζονται με το πρόβλημα και χρησιμοποιούν δεδομένα που σχετίζονται με τα χαρακτηριστικά της κλάσης.

ΜΕΣΑΒΛΗΣΕ-ΜΕΘΟΔΟΙ Οι μεταβλητές διακρίνονται σε Μεταβλητές στιγμιοτύπων (αναφέρονται σε χαρακτηριστικά των στιγμιοτύπων) Μεταβλητές κλάσης (αναφέρονται σε χαρακτηριστικά της κλάσης ως όλον) Οι μέθοδοι διακρίνονται σε Μέθοδοι στιγμιοτύπων (αναφέρονται σε διαδικασίες τα αποτελέσματα των οποίων αφορούν τα στιγμιότυπα) Μέθοδοι κλάσης (αναφέρονται σε διαδικασίες τα αποτελέσματα των οποίων αφορούν την κλάση ως όλον)

ΜΕΣΑΒΛΗΣΕ/ΜΕΘΟΔΟΙ ΚΛΑΗ- ΠΑΡΑΔΕΙΓΜΑ Article Variables price quantity mostexpensivearticle Methods selprice () { return (1.23 * price)} remove (q) { quantity quantity q} getlargestprice () {.} Μεταβλητή κλάσης Μέθοδος κλάσης

ΙΕΡΑΡΦΙΕ ΚΛΑΕΩΝ Οι κλάσεις που συνιστούν ένα πρόβλημα (δηλ. ένα πρόγραμμα) είναι οργανωμένες σε μια ή περισσότερες ιεραρχίες κλάσεων (class hierarchies) Στην ιεραρχία, κάθε κλάση, πλην των τερματικών, έχει μια ή περισσότερες υποκλάσεις (subclasses) Κάθε κλάση έχει μια τουλάχιστον υπερκλάση (superclass)

ΤΠΟ/ΤΠΕΡ-ΚΛΑΕΙ Μια υποκλάση αποτελεί εξειδίκευση (specialization) μιας άλλης κλάσης (υπερκλάση) Π.τ. ζκύλος καηοικίδιο ηλεκ_κοσζίνα ηλεκ_ζσζκεσή Μια υπερκλάση αποτελεί γενίκευση (generalization) μιας κλάσης (υποκλάση) Π.τ. καηοικίδιο ηλεκ_ζσζκεσή ζκύλος ηλεκ_κοσζίνα

ΙΕΡΑΡΦΙΕ ΚΑΙ ΚΛΗΡΟΝΟΜΙΚΟΣΗΣΑ Μια κλάση κληρονομεί μεταβλητές και μεθόδους από την (άμεση) υπερκλάση της και τις (έμμεσες) υπερκλάσεις αυτής. Η ιεραρχία (ή δέντρο) κλάσεων ονομάζεται και ιεραρχία (ή δέντρο) κληρονομικότητας. Η ρίζα του δέντρου ονομάζεται βασική κλάση (base class) ή ρίζα του δέντρου. Σ ένα πρόγραμμα συνήθως έχουμε περισσότερες από μια βασικές κλάσεις, επομένως και δέντρα κληρονομικότητας Όλες οι βασικές κλάσεις είναι υποκλάσεις της κλάσης Object (η πιο γενική κλάση)

ΙΕΡΑΡΦΙΑ ΚΛΑΕΩΝ-ΠΑΡΑΔΕΙΓΜΑ υποκλάση (subclass-of/isa) Object Article price quantity selprice() remove(q) Εξειδίκευση (τεχνικές) Εισαγωγή νέων μεταβλητών ή μεθόδων Αντικατάσταση μεθόδων LuxuryArticle selprice() Clothing color size disprice(d) Yacht FreshCaviar Shirt length engine origin weight sleeves pockets Skirt style

ΚΛΗΡΟΝΟΜΙΚΟΣΗΣΑ Έμμεση υπερκλάση Object Article description price quantity price quantity selprice() remove(q) Κληρονομικότητα Κάθε κλάση κληρονομεί πληροφορίες από όλες τις υπερκλάσεις της Κάθε πληροφορία χαμηλότερα καλύπτει κάθε ίδια πληροφορία υψηλότερα (method overriding) Κλάση Βάσης length engine LuxuryArticle selprice() Παραγόμενη Κλάση Yacht FreshCaviar Shirt origin weight sleeves pockets Clothing color size dis_price(d) disprice(d) Άμεση υπερκλάση Skirt style Κλάση

ΚΛΗΡΟΝΟΜΙΚΟΣΗΣΑ Διακρίνεται σε Απλή (κάθε κλάση είναι υποκλάση μόνο μιας κλάσης) Πολλαπλή (μια κλάση μπορεί να είναι υποκλάση περισσότερων της μιας κλάσεις) Η κληρονομικότητα σχετίζεται με τη σχεδίαση του προγράμματος. Στοχεύει στην αναπαράσταση της ίδιας πληροφορίας μόνο μια φορά.

ΣΙΓΜΙΟΣΤΠΟ τιγμιότυπο Περιγράφει μια συγκεκριμένη οντότητα, που παράγεται από μια αντίστοιχη κλάση, στην οποία λέμε ότι ανήκει ή ότι είναι στιγμιότυπό της. Π.τ. Πλούηο, Τοζηιέρα_ge50, Τρίγωνο_ΑΒΓ

ΔΗΜΙΟΤΡΓΙΑ ΣΙΓΜΙΟΣΤΠΩΝ Στιγμιότυπα δημιουργούνται από μια κλάση με την ανάθεση συγκεκριμένων τιμών στις μεταβλητές της κλάσης. skirt02 20 6 gray 40 modern στιγμιότυπο (instance-of) Skirt price quantity color size style selprice() disprice(d) remove(q) skirt01 25 5 pink 38 classic στιγμιότυπο (instance-of)

ΔΗΜΙΟΤΡΓΟΙ Τα στιγμιότυπα δημιουργούνται με την βοήθεια ειδικού τύπου συναρτήσεων που ονομάζονται δημιουργοί ή κατασκευαστές (constructors). Οι δημιουργοί είναι συναρτήσεις που έχουν το ίδιο όνομα με την κλάση τους και αποδίδουν τιμές στις μεταβλητές της κλάσης. Μια κλάση μπορεί να έχει παραπάνω από ένα δημιουργούς. Ο δημιουργός μιας κλάσης μπορεί να χρησιμοποιεί τους δημιουργούς της υπερκλάσης της (π.χ. μέσω της λέξης-κλειδί super).

ΚΛΑΗ-ΔΟΜΗ <ClassName> Variables var1 var2 Constructors contsructor1 constructor2 Methods method1 method2 meth

ΚΛΑΗ-ΠΑΡΑΔΕΙΓΜΑ Variables style Skirt Constructors Skirt (p, q, c, sz, st) { } Skirt (p, q, c, sz) { } Skirt () { } Methods

ΚΛΑΗ-ΠΑΡΑΔΕΙΓΜΑ Skirt Variables price quantity color size style Constructors Skirt (p, q, c, sz, st) { } Skirt (p, q, c, sz) { } Skirt () { } Methods selprice() { } disprice(d) { } remove(q) { }

ΙΕΡΑΡΦΙΑ ΚΛΑΕΩΝ-ΣΙΓΜΙΟΣΤΠΩΝ Person name age getinfo(){ return(name, age);} subclass of Clerk company getinfo() { print(name, age, company);} Teacher school getinfo() { print(name, age, school);} instance of name: Giorgos age: 35 company: IBM c1 p1 t1 name: Petros age: 38 name: Yannis age: 28 school: Arsakeio

ΑΠΟΣΟΛΗ ΜΗΝΤΜΑΣΩΝ Ο μόνος τρόπος επικοινωνίας μεταξύ των αντικειμένων Καταλήγει σε ενεργοποίηση αντίστοιχης μεθόδου Στοιχεία μηνύματος Παραλήπτης Όνομα μεθόδου Παράμετροι μεθόδου (πραγματικοί)

ΑΠΟΣΟΛΗ ΜΗΝΤΜΑΣΩΝ Μηνύματα αποστέλλονται κυρίως προς στιγμιότυπα. Μπορεί να αποστέλλονται και σε κλάσεις όταν αφορούν μεθόδους κλάσεις. Στη Java η αποστολή μηνύματος γίνεται ως εξής: <αντικείμενο>.<μέθοδος>(<παράμετροι>) Π.χ. c1.getinfo()

ΑΛΤΙΔΕ ΜΗΝΤΜΑΣΩΝ Α1 Α2 Α4 Α3

ΠΟΛΤΜΟΡΥΙΜΟ Ο πολυμορφισμός (polymorphism) συνίσταται στη δυνατότητα εφαρμογής ενός υπολογιστικού προτύπου (pattern) με διαφορετικούς τύπους δεδομένων. Υπάρχουν διάφοροι τρόποι υλοποίησης του πολυμορφισμού στον αντικειμενοστρεφή προγραμματισμό. Πολυμορφισμός στιγμιοτύπου Πολυμορφισμός υποκλάσης Υπερφόρτωση μεθόδου Επικάλυψη μεθόδου

ΠΟΛΤΜΟΡΥΙΜΟ Πολυμορφισμός στιγμιοτύπου Η αποστολή μηνύματος σ ένα στιγμιότυπο δεν προϋποθέτει γνώση της κλάσης του παραλήπτη. Π.χ. c1.getinfo(), p1.getinfo(), t1.getinfo() Πολυμορφισμός υποκλάσης Ο τύπος μιας κλάσης καλύπτει τις υποκλάσεις της. Π.χ. Ορισμός: presentinfo(person p) {p.getinfo();} Κλήση: presentinfo(p1), presentinfo(c1), presentinfo(t1)

ΠΟΛΤΜΟΡΥΙΜΟ Τπερφόρτωση μεθόδου Επιτρέπεται η ύπαρξη μεθόδων με το ίδιο όνομα και διαφορετικά ορίσματα στην ίδια ή σε διαφορετικές κλάσεις. Π.χ. Περίπτωση δημιουργών sum(int x, int y), sum(int x, int y, int z) Επικάλυψη μεθόδου Επιτρέπεται η ύπαρξη μεθόδων με το ίδιο όνομα, ίδια ορίσματα και ίδιο τύπο αποτελέσματος σε διαφορετικές κλάσεις στην ίδια διαδρομή. Αυτή που βρίσκεται χαμηλότερα στην ιεραρχία επικαλύπτει αυτές που βρίσκονται υψηλότερα. Π.χ. getinfo(), selprice()

ΠΛΕΟΝΕΚΣΗΜΑ ΑΠ (OOP) Αφαίρεση δεδομένων (απόκρυψη δεδομένων-ενθυλάκωση, πολυμορφισμός) Τμηματικότητα (κλάσεις, υποκλάσεις) Επεκτασιμότητα (αλλαγές σ ένα αντικείμενο ελάχιστη επίπτωση έχουν στα άλλα) Επαναχρησιμοποίηση (κληρονομικότητα, βιβλιοθήκες αντικειμένων) Κατανοησιμότητα (απόρροια των δύο πρώτων)