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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 (Object Oriented Programming) Βασικές Έννοιες ΟΟΡ, Κληρονομικότητα, Σύνθεση (Inheritance - Composition) PhD sfetsos@it.teithe.gr

2 Βασικές Αρχές και Έννοιες της Αντικειμενοστρεφούς Σχεδίασης και Προγραμματισμού (1/2) Εισαγωγική παρουσίαση και μετά εμβάθυνση. Βασικές Έννοιες Αντικειμενοστρεφούς Σχεδίασης και Προγραμματισμού (OOD OOP) Ενθυλάκωση (Encapsulation) Πολυμορφισμός (Polymorphism) Κληρονομικότητα (Inheritance) Σύνθεση (Composition) Αφαίρεση (Abstraction) 2

3 Βασικές Αρχές και Έννοιες της Αντικειμενοστρεφούς Σχεδίασης και Προγραμματισμού (2/2) Εισαγωγή Πως σχεδιάζαμε και υλοποιούσαμε ένα σύστημα στον διαδικαστικό προγραμματισμό και πως γίνεται τώρα, στον OOD ΟΟΡ; Επαναχρησιμοποίηση του κώδικα (Reusability). Ο ρόλος της Κληρονομικότητας, Σύνθεσης - Πολυμορφισμού Συντηρησιμότητα του κώδικα (Maintainability) Διαφορές στον Διαδικαστικό και Αντικειμενοστρεφή Προγραμματισμό Επεκτασιμότητα του κώδικα (Extendabillity) Ο ρόλος της Ενθυλάκωσης, Κληρονομικότητας, κλπ. 3

4 Ενθυλάκωση (Encapsulation) Ενθυλάκωση δεδομένων (data encapsulation) είναι η ιδιότητα των κλάσεων να κρύβουν τα ιδιωτικά τους πεδία οι τιμές των οποίων μπορούν να τροποποιηθούν μόνο μέσω δημοσίων μεθόδων. Δηλ., private πεδία public μέθοδοι Τα private πεδία δεν επιτρέπουν πρόσβαση εκτός κλάσης (απόκρυψη δεδομένων data hiding). Πλεονεκτήματα: Δυνατότητα τροποποίησης του κώδικα Ασφάλεια, συντήρηση, επεκτασιμότητα και ευελιξία στην σχεδίαση και υλοποίηση των συστημάτων 4

5 Κληρονομικότητα (Inheritance) Στον OOP (και στην java) μπορεί από μία ήδη υπάρχουσα κλάση (πρόγονος) να δημιουργηθεί μια νέα κλάση απόγονος που κληρονομεί όλα τα χαρακτηριστικά και λειτουργίες της υπάρχουσας κλάσης. Ο μηχανισμός αυτός καλείται κληρονομικότητα. Η υπάρχουσα κλάση ονομάζεται βασική κλάση (base class), ή κλάση γονέας (parent class), ή υπερκλάση (superclass). Η νέα κλάση που δημιουργείται και κληρονομεί την υπερκλάση ονομάζεται υποκλάση (subclass), ή κλάση παιδί, ή παράγωγη κλάση (derived class). Κληρονομικότητα σημαίνει εξειδίκευση. Εκτός από τα μέλη που κληρονομεί η υποκλάση μπορεί να έχει επιπλέον δικά της μέλη που την κάνουν πιο ειδική σε σχέση με την υπερκλάση που θεωρείται πιο γενική. Στην κληρονομικότητα έχουμε ιεραρχία κλάσεων (class hierarchy), που διαβάζεται από επάνω προς τα κάτω. Επάνω βρίσκεται η υπερκλάση και κάτω οι υποκλάσεις που εξειδικεύονται προσθέτοντας χαρακτηριστικά και λειτουργίες. 5

6 Αρχή της Υποκατάστασης της Liskov Στην κληρονομικότητα, αντικείμενα του υπερτύπου μπορούν να αντικατασταθούν από αντικείμενα του υποτύπου, χωρίς να επηρεάσουν την ορθότητα και την συμπεριφορά του προγράμματος. Όπου μπορεί να χρησιμοποιηθεί ένα αντικείμενο του τύπου Α, μπορεί να χρησιμοποιηθεί ένα αντικείμενο του τύπου Β (υποκατάσταση). Ιεραρχία Τύπων Χρησιμοποιούνται για να παρέχουν διαφορετικές υλοποιήσεις ενός τύπου. Δηλ., οι υποτύποι παρέχουν διαφορετικές υλοποιήσεις του υπερτύπου. 6

7 Πολυμορφισμός (Polymorphism) Πολυμορφισμός είναι η δυνατότητα εκτέλεσης διαφορετικών λειτουργιών μιας μεθόδου που είναι κοινή σε διαφορετικές κλάσεις (υπερκλάση και υποκλάση), ανάλογα με το αντικείμενο της κλάσης που την καλεί. Δηλ., το ίδιο όνομα μεθόδου προκαλεί την εκτέλεση διαφορετικού κώδικα, ανάλογα με το αντικείμενο που την καλεί. Έτσι θα μπορούσαμε να πούμε, σαν άλλο ορισμό, ότι πολυμορφισμός είναι η ικανότητα ενός αντικειμένου να πάρει πολλές μορφές Στον ΟΟΡ αυτό επιτυγχάνεται όταν μια μεταβλητή αναφοράς υπερκλάσης χρησιμοποιείται για να αναφερθεί σε ένα αντικείμενο υποκλάσης. 7

8 Αφαίρεση (Abstraction) Είναι ο μηχανισμός απόκρυψης των χαρακτηριστικών των αντικειμένων που δεν είναι χρήσιμα στην τρέχουσα εφαρμογή, έτσι ώστε να μειωθεί η πολυπλοκότητα. Οι αφηρημένες κλάσεις χρησιμοποιούνται για την αναπαράσταση των αντικειμένων στον πραγματικό κόσμο που είναι αφηρημένα ως έννοιες, όπως π.χ. το σχήμα, το όχημα κλπ. και για τα οποία παρέχουν μία βασική υλοποίηση. Δηλαδή, ορίζουμε μια υπερκλάση που καθορίζει την γενική μορφή που θα χρησιμοποιείται από όλες τις υποκλάσεις, αφήνοντας σε κάθε υποκλάση την δυνατότητα να συμπληρώσει τις επιμέρους λεπτομέριες και να υλοποιήσει τις επιμέρους λειτουργίες. Άρα η αφηρημένη κλάση παρέχει μια κοινή διασύνδεση για τον χειρισμό ενός συνόλου κλάσεων. 8

9 Επαναχρησιμοποίηση του κώδικα (Reusability) Στις διαδικαστικές γλώσσες (C, Pascal, κλπ.), αντιγραφή τμημάτων κώδικα και τροποποίηση του (ουσιαστικά μικρό αποτέλεσμα). Στον ΟΟΡ, η επαναχρησιμοποίηση του κώδικα επιτυγχάνεται με την δημιουργία νέων κλάσεων, χρησιμοποιώντας: Κληρονομικότητα (Inheritance): Δημιουργία μιας υποκλάσης κάποιας ήδη υπάρχουσας κλάσης (υπερκλάσης), που κληρονομεί τα χαρακτηριστικά και λειτουργίες της υπερκλάσης. Άρα ο κώδικας δεν χρειάζεται να τροποποιηθεί αλλά μόνο να επεκταθεί (Αρχή της Ανοικτής-Κλειστής Σχεδίασης (Open-Closed Principle). Σύνθεση (Composition): Δημιουργία αντικειμένων κλάσεων που ήδη υπάρχουν μέσα σε μια νέα κλάση. Στην σύνθεση χρησιμοποιείται η λειτουργικότητα του κώδικα. 9

10 Κληρονομικότητα (Inheritance) Η κληρονομικότητα είναι θεμελιώδης αρχή της Αντικειμενοστρέφειας.. Η δημιουργία μιας νέας κλάσης η οποία ονομάζεται υποκλάση (subclass) ή παράγωγη (derived) από μία υπάρχουσα που ονομάζεται υπερκλάση (superclass) ή βασική (base class). Με τον τρόπο αυτόν επιτυγχάνεται επαναχρησιμοποίηση του κώδικα. Η υποκλάση κληρονομεί όλα τα χαρακτηριστικά και μεθόδους της υπερκλάσης. Η υποκλάση μπορεί να: προσθέτει νέα χαρακτηριστικά (επέκταση) προσθέτει νέα λειτουργικότητα (επέκταση) χρησιμοποιεί λειτουργικότητα που κληρονομεί να υπερβεί λειτουργικότητα που κληρονομεί superclass: subclass: Employee - name: String - paytype: int Misthotos - kodikos: int - misthos: double - yperories: double 10

11 Κληρονομικότητα (Inheritance) Η κληρονομικότητα στη Java δηλώνεται με την δεσμευμένη λέξη extends. Αν δεν δηλώνεται κληρονομικότητα, τότε η κλάση κληρονομεί / επεκτείνει την κλάση Object (θα την δούμε αναλυτικά παρακάτω). Employee - name: String - paytype: int [...] public class Employee { private String name; private int paytype; [...] public class Misthotos extends Employee { private int kodikos; private double misthos; private double yperories; [...] Misthotos - kodikos: int - misthos: double - yperories: double [...] Misthotos emp1 = new Misthotos(); 11

12 Κληρονομικότητα (Inheritance) Ιεραρχία κλάσεων και κανόνες κληροδότησης: Στη Java κάθε κλάση έχει μόνο μία υπερκλάση (δεν επιτρέπεται η πολλαπλή κληρονομικότητα). Η κληρονομικότητα δημιουργεί μία ιεραρχία κλάσεων οι κλάσεις υψηλότερα στην ιεραρχία είναι πιο γενικές και αφηρημένες. οι κλάσεις χαμηλότερα στην ιεραρχία είναι πιο ειδικές και συγκεκριμένες. δεν υπάρχει περιορισμός στο πλήθος των υποκλάσεων της ιεραρχίας και στο βάθος του ιεραρχικού δένδρου. Animal Mammal Reptile Cat Dog public class Animal { } public class Mammal extends Animal { } public class Reptile extends Animal { } public class Dog extends Mammal { } public class Cat extends Mammal { } 12

13 Κληρονομικότητα (Inheritance) Η υποκλάση κληρονομεί όλα τα public μέλη της υπερκλάσης (όχι τους δομητές) Η υποκλάση έχει άμεση πρόσβαση σε όλα τα public και protected μέλη της υπερκλάσης, αλλά και στα default αν βρίσκονται στο ίδιο πακέτο με αυτήν. Τα private μέλη της κλάσης δεν κληρονομούνται άμεσα, αλλά έχουμε πρόσβαση σε αυτά μέσω των public μεθόδων της υπερκλάσης (π.χ. setter getter). Αρχικοποιήσεις - Δομητές της υπερκλάσης Η αρχικοποίηση του αντικειμένου της υποκλάσης εξασφαλίζεται με την κατάλληλη κλήση του δομητή της υπερκλάσης. Η κλήση του δομητή της υπερκλάσης γίνεται με την χρήση του όρου super(.) H super πρέπει να είναι η πρώτη εντολή του δομητή της υποκλάσης. 13

14 Κληρονομικότητα (Inheritance) Με την super έχουμε πρόσβαση σε κάθε μεταβλητή μέλος της υπερκλάσης από την υποκλάση. super.<variable> π.χ. super.size=38; Αν δεν βάλουμε την super() στον δομητή, τότε ο compiler της java αυτόματα θα καλέσει τον default δομητή της υπερκλάσης, αλλά το σωστό είναι να μην το αφήνουμε στη java. public class Employee { private String name; private int paytype; public Employee(String n, int pt) { name=n; paytype=pt; } [...] public class Misthotos extends Employee { private int kodikos; private double misthos; private double yperories; public Misthotos(String n, int pt, int k, double m, double y) { super(n, pt); kodikos=k; [...] 14

15 Κληρονομικότητα (Inheritance) Παράδειγμα 1o: Χρήση της παραμετρικής super() για να καλέσουμε τον δομητή της υπερκλάσης. Το αρχείο αποθηκεύεται με το όνομα: Subclass.java class Superclass { String gender; int age; Superclass(String g, int a) {this.gender=g;this.age = a; } public void getgenderandage(){ System.out.println("Yperklasi: To genos= "+gender+"h ilikia= "+age); }} class Subclass extends Superclass { Subclass(String g1, int a1) { super(g1, a1); } public static void main(string argd[]) { Subclass s = new Subclass("Andras", 40); s.getgenderandage(); } } Κληρονομούμε την λειτουργικότητα (μέθοδο) της υπερκλάσης 15

16 Κληρονομικότητα (Inheritance) Παράδειγμα 2ο: Χρήση της super στην υποκλάση για πρόσβαση σε πεδίο της υπερκλάσης. Το αρχείο αποθηκεύεται με το όνομα: Subclass1.java class Superclass1 { String name = "Takis"; public void display() {System.out.println("Yperklasi +name); } } public class Subclass1 extends Superclass1 { String name = "Roulis"; public void display() {System.out.println("Ypoklasi "+name);} public void A_method() { Subclass1 s = new Subclass1(); s.display(); super.display(); System.out.println("Ypoklasi: To onoma= "+ s.name); System.out.println("Ypoklasi xrisi tis super: To onoma= "+ super.name); } public static void main(string args[]) { Subclass1 obj = new Subclass1(); obj.a_method(); } } 16

17 Κληρονομικότητα (Inheritance) Δημιουργία και καταστροφή αντικειμένων υποκλάσεων και υπερκλάσεων Η υποκλάση κληρονομεί μεν τα public και protected μέλη της υπερκλάσης, αλλά όχι τους δομητές (δεν κληρονομούνται). Γι αυτό η πρώτη εντολή στον δομητή θα είναι η super() ή super(n1, n2, ), δηλ., η super με ή χωρίς παραμέτρους, ανάλογα με τις ανάγκες του προγράμματος. Η super καλεί τον δομητή της υπερκλάσης για την αρχικοποίηση των αντικειμένων. Η καταστροφή των αντικειμένων της υποκλάσης και της υπερκλάσης (διαγραφή από τη μνήμη) γίνεται με την κλήση της finalize() που υπερκαλύπτουμε και γράφουμε στο σώμα της τον κώδικα αποδέσμευσης των πόρων π.χ. <αντικείμενο-α>. finalize() Θα αναλύσουμε παρακάτω την κλάση Object, την finalize() και την υπερκάλυψη/υπέρβαση των μεθόδων. 17

18 Κληρονομικότητα (Inheritance) Προσπελασιμότητα ή ορατότητα στην κληρονομικότητα: Από μέθοδο στην ίδια κλάση Από μέθοδο άλλης κλάσης στο ίδιο package Από μέθοδο υποκλάσης Από μέθοδο άλλης public κλάσης private package protected public 18

19 Κληρονομικότητα (Inheritance) Παράδειγμα: Χρήση χαρακτηριστικών και μεθόδων της υπερκλάσης. Προσπέλαση σε private μέλη της υπερκλάσης με setter()-getter(). class Employee1 { private String name = "Kanena onoma"; private int age; public void setname(string name) {this.name = name;} public String getname() {return name;} public void setage(int age) {this.age=age;} public int getage() {return age;}} class Manager extends Employee1 { } class TestEmployee1 { public static void main(string[] args) { Manager mgr = new Manager(); mgr.setname("nikos"); //to onoma tou Mgr, (stin yperklasi) String mgrname = mgr.getname(); //to onoma tou Mgr, (apo tin yperklasi) mgr.setage(52); //set Hlikia tou Mgr (stin yperklasi) int mgrhlikia=mgr.getage(); //Hlikia tou Mgr, (apo tin yperklasi) System.out.println("To onoma tou manager: " + mgrname+ " Hlikia: "+ mgrhlikia);}} 19

20 Κληρονομικότητα (Inheritance) Σχέσεις: Είναι-Ένα (IS-A) και Έχει-Ένα (HAS-A) Η σχέση IS-A ισχύει πάντοτε μεταξύ δύο κλάσεων Α και Β όπου η μία κληρονομεί από την άλλη είτε άμεσα (η Β υποκλάση της Α), είτε έμμεσα (η Β κληρονομεί από μία κλάση Χ, η οποία έχει κληρονομήσει από την Α). Π.χ. Cat IS-A Mammal Dog IS-A Mammal Τα χαρακτηριστικά και οι λειτουργίες της κλάσης Mammal ισχύουν και για τις υποκλάσεις της. Η σχέση IS-A ισχύει μόνο προς την κατεύθυνση από κάτω προς τα πάνω και όχι αντιστρόφως. Η σχέση: Έχει-Ένα HAS-A Δηλώνει μια σχέση σύνθεσης, δηλ. όταν μία κλάση περιέχει ως μεταβλητές μέλη ένα ή περισσότερα αντικείμενα άλλων κλάσεων (σύνθεση ενός μεγαλύτερου και πιο πολύπλοκου αντικειμένου από πολλά μικρότερα). Π.χ. Car HAS-A Wheels Car HAS-A Engine : : 20

21 Κληρονομικότητα (Inheritance) Παράδειγμα : Χρήση του τελεστή instanceof για τον έλεγχο της κληρονομικότητας. Η σύνταξη: if (<objectreference> instanceof <type>) class Animal { } class Mammal extends Animal { } class Reptile extends Animal { } class Cat extends Mammal {} public class Dog extends Mammal { }} public static void main(string args[]) { Animal a = new Animal(); Mammal m = new Mammal(); Reptile r = new Reptile(); Dog d = new Dog(); Cat c = new Cat(); if (m instanceof Animal)System.out.println("Mammal 'is a' Animal"); if (r instanceof Animal)System.out.println("Reptile 'is a' Animal"); if (d instanceof Animal)System.out.println("Dog 'is a' Animal"); if (d instanceof Mammal)System.out.println("Dog 'is a' Mammal"); if (c instanceof Animal)System.out.println("Cat 'is a' Animal"); if (c instanceof Mammal)System.out.println("Cat 'is a' Mammal"); 21

22 Κληρονομικότητα (Inheritance) Στον ΟΟΡ, και στην Java, οποιαδήποτε κλάση, θα πρέπει να κληρονομεί οπωσδήποτε από κάποια άλλη κλάση. Όταν γράφουμε μια νέα κλάση αυτή ή θα την βάλουμε να κληρονομήσει από κάποια άλλη κλάση ή ο compiler θα την βάλει να κληρονομήσει την κλάση java.lang.object (υπερκλάση όλων των κλάσεων). Τις μεθόδους tostring(), και finalize(), που ήδη γνωρίζουμε, κληρονομούν όλες οι κλάσεις. Οι υπόλοιπες μέθοδοι στην παρακάτω διαφάνεια: 22

23 Κληρονομικότητα (Inheritance) clone(): equals(object): finalize(): getclass(): hashcode(): notify(): notifyall(): tostring(): wait(): Δημιουργεί και επιστρέφει ένα αντίγραφο του αντικειμένου. Υπέρβαση/υπερκάλυψη της μεθόδου (θα αναλυθεί παρακάτω). Εξετάζει την ισότητα 2 αντικειμένων και επιστρέφει true αν τα αντικείμενα είναι ίδια, διαφορετικά false. (υπέρβαση της μεθόδου). Καλείται από συλλέκτη σκουπιδιών για τα ανενεργά αντικείμενα. Επιστρέφει το αντικείμενο που αντιστοιχεί στην τρέχουσα κλάση κατά το runtime (από την JVM). Επιστρέφει τον κωδικό hash της κλάσης. Ενημερώνει συγκεκριμένο νήμα για κάποια αλλαγή κατάστασης. Ενημερώνει τα νήματα σε αναμονή για κάποια αλλαγή κατάστασης. Επιστρέφει την string απεικόνιση ενός αντικειμένου, (υπέρβαση της μεθόδου). Θέτει το τρέχον νήμα σε αναμονή. 23

24 Κληρονομικότητα (Inheritance) Υπέρβαση/Υπερκάλυψη Μεθόδων (Method Overriding) (1/2) Όταν η υλοποίηση μιας μεθόδου της υπερκλάσης δεν παρέχει την λειτουργικότητα που απαιτεί η υποκλάση, τότε η μέθοδος αυτή μπορεί να υλοποιηθεί με διαφορετικό τρόπο στην υποκλάση από ότι στη υπερκλάση. Υπέρβαση ή υπερκάλυψη μεθόδου είναι η διαδικασία όπου μία υποκλάση επανα-υλοποιεί μία μέθοδο που κληρονόμησε από την υπερκλάση. Χαρακτηριστικά παραδείγματα η χρήση των μεθόδων της Object με υπέρβαση. Απαραίτητη στον Πολυμορφισμό. Προσοχή κατά την εκτέλεση: Δε πρέπει να αλλάξουμε τον τύπο επιστροφής της μεθόδου ή την υπογραφή της. Μπορούμε να αυξήσουμε την πρόσβαση στη μέθοδο (π.χ. από protected σε public). Μπορούμε να μειώσουμε ή να διαγράψουμε δηλωμένα exceptions, όχι όμως να προσθέσουμε νέα. 24

25 Κληρονομικότητα (Inheritance) Υπέρβαση/Υπερκάλυψη Μεθόδων (Method Overriding) (2/2) Γράφουμε στο σώμα της μεθόδου τον κώδικα που υλοποιεί τη νέα λειτουργικότητα. Αν καλέσουμε τη μέθοδο με αντικείμενο της υποκλάσης θα κληθεί η μέθοδος της υποκλάσης με την νέα λειτουργικότητα, ενώ αν κληθεί με αντικείμενο της υπερκλάσης, θα κληθεί η δική της μέθοδος με την αρχική λειτουργικότητα. Στον πολυμορφισμό θα χρησιμοποιήσουμε και τις δύο περιπτώσεις. Προσοχή στις έννοιες της υπερφόρτωσης (overload) και της υπέρβασης (override) των μεθόδων. Είναι δύο διαφορετικές έννοιες και χρήσεις (δες παράδειγμα στις διαφάνειες του επόμενου μαθήματος). 25

26 Κληρονομικότητα (Inheritance) Παράδειγμα: Υπέρβαση μεθόδου, αλλά και χρήση της super για πρόσβαση σε μέθοδο της υπερκλάσης. class Human{ public void eat() {System.out.println("O anthropos troei pizza");} public void drink() {System.out.println("O anthropos pinei byra");} } class Boy1 extends Human{ public void eat(){system.out.println("to agori troei pizza");} public void drink(){system.out.println("to agori pinei byra");} //ypervasi //ypervasi public void A_method() { Boy1 b = new Boy1(); b.eat(); //ypervasi methodou super.drink(); // xrisi leitourgias tis yperklasis } public static void main( String args[]) { Boy1 obj = new Boy1(); obj.a_method(); /* super.drink(); Prosoxi! Lathos klisi apo * statiki methodο (main) */ }} 26

27 Κληρονομικότητα (Άσκηση-1) (1/6) Άσκηση Employee (υλοποίηση κληρονομικότητας) Η μισθοδοσία των υπαλλήλων μιας εταιρείας περιλαμβάνει 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() που εμφανίζει τα στοιχεία του κάθε υπάλληλου και τον μισθό του. 27

28 Κληρονομικότητα (Άσκηση-1) (2/6) UML Class Diagram (Employee Inheritance) Το διάγραμμα κλάσεων της UML (Unified Modeling Language) απεικονίζει την κληρονομικότητα και τις σχέσεις μεταξύ των κλάσεων στην άσκηση Employee. 28

29 Κληρονομικότητα (Άσκηση-1) (3/6) class Employee { protected String name; protected int b; //bonus protected int h; //hours protected int paytype; //0=salary, 1=byhour Employee(String s, int b_, int h_, int p) {name=s; b=b_; h=h_; paytype=p;} public String getname() {return name;} public String getpaytype() { String ptype; if (paytype==0) ptype= Misthos"; else ptype= Me tin Ora"; return ptype; } public String getemptype() {return "Employee";} public void calcsalary() { int s=1000; System.out.println(" Misthos Employee = " + s); }} 29

30 Κληρονομικότητα (Άσκηση-1) (4/6) class Administrator extends Employee { Administrator(String s, int b, int h, int p) {super(s,b,h,p);} public String getemptype() {return Dioikitikos Ypalilos";} public void calcsalary() { int s=0; if (paytype==0) s=1200+b; //vasikos=1200 else s=(h*12); //12 Euro per hour System.out.println(" Misthos (Dioikitikou) = " + s); }} class Technical extends Employee { Technical(String s, int b, int h, int p) {super(s,b,h,p);} public String getemptype() {return "Tehnikos Ypalilos";} public void calcsalary() { int s=0; if (paytype==0) s=800+b; //vasikos=800 else s=(h*10); //10 Euro per hour System.out.println(" Misthos (Tehnikou)= " + s); } } 30

31 Κληρονομικότητα (Άσκηση-1) (5/6) /* Βοηθητική κλάση ορισμού πίνακα αντικειμένων, γέμισμα του πινακα * με τα 4 αντικείμενα setemployee(), και εμφάνιση των στοιχείων * των υπαλλήλων και του μισθού των */ class Company { Employee emp[]= new Employee[4]; public void setemployee(employee e, int a) {emp[a]=e;} public void printall() { for (int i=0;i<4;i++) { System.out.println(); System.out.println( Onoma = + emp[i].getname()); System.out.println( Typos Ypalilou = + emp[i].getemptype()); System.out.println( Typos Pliromis = + emp[i].getpaytype()); emp[i].calcsalary(); } } } 31

32 Κληρονομικότητα (Άσκηση-1) (6/6) class TestEmployee { public static void main(string[] args) { int a; Employee e1= new Technical("Nikas",1000,10,0); Employee e2=new Administrator("Vasileiou",1000,20,0); Employee e3= new Technical("Paylidis",10,10,1); Employee e4=new Administrator("Apostolatos",10,10,1); Company c = new Company(); } } //εισαγωγή των αντικειμένων στον πίνακα c.setemployee(e1,0); c.setemployee(e2,1); c.setemployee(e3,2); c.setemployee(e4,3); c.printall(); 32

33 Άσκηση-1 Άσκηση υλοποίησης κληρονομικότητας και υπέρβασης μεθόδων: Τηλέφωνο Δημιουργήστε τις υποκλάσεις StatheroTilefono και KinitoTilefono και την υπερκλάση Tilefono. Οι δύο υποκλάσεις θα κληρονομούν από την υπερκλάση χαρακτηριστικά και μεθόδους. Όλες οι κλάσεις που θα δημιουργήσετε να έχουν ένα πλήρη δομητή, τα κατάλληλα πεδία, τις μεθόδους setters() και getters(), tostring() και τι μεθόδους: (1) TyposThlefonou, (2) klisikinitou και (3) klisistatherou που πραγματοποιούν, ανάλογα με τον τύπο του τηλεφώνου, κλήσεις στο κινητό και σταθερό τηλέφωνο. Η χρέωση είναι 0.10 και 0.20 το λεπτό προς το σταθερό και κινητό αντίστοιχα. Το πρόγραμμα θα υπολογίζει τα επιμέρους κόστη για τις κλήσεις προς κινητό και σταθερό αλλά και το συνολικό κόστος όλων των N κλήσεων. Στην main δημιουργήστε ένα πίνακα Ν - αντικειμένων με κινητά και σταθερά και με τις αντίστοιχες κλήσεις και υλοποιήστε τις μεθόδους και τους υπολογισμούς που προαναφέρθηκαν. Τα αποτελέσματα θα εμφανίζονται με τα κατάλληλα μηνύματα. 33

34 Σύνθεση (Composition) Σύνθεση (composition) κλάσεων έχουμε όταν κατά την δημιουργία μιας νέας κλάσης χρησιμοποιούμε ως μέλη της χαρακτηριστικά που είναι αναφορές σε αντικείμενα άλλων κλάσεων. Ένα παράδειγμα: Μια μηχανή αποτελείται από πολλά εξαρτήματα όπως κύλινδροι, βαλβίδες, πιστόνια, μπουζί, κλπ. Η σχέση που συνδέει τα εξαρτήματα με τη μηχανή είναι: Η μηχανή έχει μπουζί Η μηχανή έχει κυλίνδρους Η μηχανή έχει πιστόνια Δηλαδή - κατά την ΟΟΡ αναπαράσταση, η μηχανή έχει εξαρτήματα-χαρακτηριστικά που το καθένα από αυτά είναι αντικείμενο άλλων κλάσεων. Αυτού του είδους η σχέση ονομάζεται HAS-A ή whole/part συσχέτιση που σημαίνει σύνθεση (composition). 34

35 Σύνθεση (Composition) Όταν ένα πεδίο της νέας κλάσης είναι αντικείμενο άλλης κλάσης, τότε λέμε ότι η νέα κλάση είναι ένα σύνθετο αντικείμενο (composite) άλλων αντικειμένων. Αν ένα αντικείμενο Β περιέχεται σε ένα αντικείμενο Α, τότε το αντικείμενο-α είναι υπεύθυνο για την δημιουργία και καταστροφή του αντικειμένου-β. Επαναχρησιμοποίηση κώδικα (code reuse), όταν η σχέση μεταξύ δύο ή περισσοτέρων κλάσεων είναι HAS-A. Παράδειγμα 1o: class Job { private String perigrafi; private int misthos; private int kodikos; public String getperigrafi(){return perigrafi;} public void setperigrafi(string per) {this.perigrafi = per;} public int getmisthos() {return misthos;} public void setmisthos(int misthos) {this.misthos = misthos;} public int getkodikos() {return kodikos; } public void setkodikos(int kodikos) {this.kodikos = kodikos;} } 35

36 Σύνθεση (Composition) class Person { } //composition has-a relationship private Job job; public Person(){ this.job=new Job(); job.setmisthos(1200); job.setperigrafi("mhxanikos Pliroforikis"); } public int getmisthos() {return job.getmisthos(); } public String getperigrafi() {return job.getperigrafi(); } class TestPerson { public static void main(string[] args) { Person person = new Person(); String p = person.getperigrafi(); int misthos = person.getmisthos(); System.out.println("Epaggelma= " + p); Σύνθεση: Αρχικοποίηση αναφορών Προσοχή!! Αναφορά και Δημιουργία του αντικειμένου Job. Η απόδοση τιμών γίνεται ή στο σημείο ορισμού ή στον δομητή της κλάσης ή πριν την χρήση τους. System.out.println("O Misthos tou= "+misthos + " Euro"); } } 36

37 Σύνθεση (Composition) Παράδειγμα 2o: Μία κλάση Employee θα λάβει στοιχεία από άλλες κλάσεις τις: (1) Name: που ορίζει το όνομα του υπάλληλου, και (2) Address: που ορίζει την διεύθυνση του υπάλληλου. H κλάση Employee: που ορίζει τα στοιχεία του υπάλληλου, χρησιμοποιώντας όμως σαν μεταβλητές αντικείμενα του των τύπων Name και Address. Η TestEmployee: η οποία ορίζει αντικείμενα του τύπου Name, Address και Employee και που εμφανίζει όλα τα στοιχεία του Υπάλληλου. class Name { String firstname; String lastname; public Name(String newfirstname, String newlastname) { firstname = newfirstname; lastname = newlastname;} public String getfirstname() {return firstname;} public String getlastname() {return lastname;} public String getfirstlast() {return firstname + " " + lastname;} } 37

38 Σύνθεση (Composition) class Address { String street; String city; String state; String zip; public Address(String newstreet, String newcity, String newstate, String newzip) { street = newstreet; city = newcity; state = newstate; zip = newzip; } public String getstreet(){return street; } public String getcity(){return city;} public String getstate(){return state;} public String getzip(){return zip;} public String getfulladdress() { return street + "\n" + city + ", " + state + ", " + zip; } } 38

39 Σύνθεση (Composition) class Employee { private Name myname; //antikeimeno typou Name private Address myaddress; //antikeimeno typou Address private String AFM; public Employee(Name n, Address a, String newafm) { myname = n; myaddress = a; AFM = newafm; } public Name getname() {return myname; } public Address getaddress() {return myaddress;} public String getafm() {return AFM; } } class TestEmployeeComposition { public static void main(string[] args) { Name eponymia = new Name("Nikos", "Nikas"); Address dieythinsi = new Address("Tsimiski 35", "Thessaloniki", "Greece", "56 700"); String AFM = " "; Employee theemployee = new Employee(eponymia, dieythinsi, AFM); System.out.println(theEmployee.getName().getFirstLast() + "\n" + theemployee.getaddress().getfulladdress()+"\n"+theemployee.getafm());}} 39

40 Σύνθεση (Composition) Παράδειγμα 3o: Η κλάση Person περιέχει σαν χαρακτηριστικό μια αναφορά σε αντικείμενο της κλάσης Birthday. class Person { } private double salary; private String name; private Birthday bday; //αναφορά σε αντικείμενο της Birthday public Person(int d,int m,int y,string name){ bday=new Birthday(d, m, y); /αρχικοποίηση του αντικ. στον δομητή } this.name=name; public double getsalary() {return salary;} public String getname() {return name;} public Birthday getbday() {return bday;}//λήψη της Birthday 40

41 Σύνθεση (Composition) class Birthday{ int day, month,year; public Birthday(int d,int m,int y){ day=d; month=m; year=y; } public String tostring(){return String.format("%s-%s-%s", day,month,year); } } class CompositionTst1 { public static void main(string[] args) { Person person=new Person(2, 5, 2001, "Nikas"); System.out.println("Onoma : "+person.getname()); System.out.println("Genethlia : "+person.getbday()); } } 41

42 Παράδειγμα Composition and Inheritance (1/3) Στο παρακάτω παράδειγμα θα κάνουμε χρήση της σύνθεσης μαζί με την κληρονομικότητα, κατάσταση συνηθισμένη στον ΟΟΡ. Η Ferrari κληρονομεί από την Car (is-a Car), αλλά χρησιμοποιεί και την μέθοδο start() της κλάσης Engine (has-a Engine). Στην InheritanceAndComposition (main), ορίζουμε ένα αντικείμενο του τύπου Ferrari, και ενώ η κλάση Ferrari δεν έχει τις μεθόδους setcolor(), setmaxspeed(), carinfo(), ωστόσο τις χρησιμοποιεί γιατί τις κληρονομεί από την κλάση Car. class Car { private String color; private int maxspeed; public void carinfo(){ System.out.println("Xroma autokinitou= "+color + " Megisti Tahytita= " + maxspeed); } public void setcolor(string color){this.color = color;} public void setmaxspeed(int maxspeed) {this.maxspeed = maxspeed;} } 42

43 Composition and Inheritance (2/3) class Ferrari extends Car{ /*H klasi Ferrari klironomei oles tis * methodous tis Car (ektos apo tis final kai static)*/ public void FerrariDemo(){ Engine FerrariEngine = new Engine(); FerrariEngine.start(); } } class Engine { public void start(){ System.out.println("H mixani douleyei..."); } public void stop(){ System.out.println("H mixani stamatise..."); } } 43

44 Composition and Inheritance (3/3) public class InheritanceAndComposition { public static void main(string[] args) { Ferrari myferrari = new Ferrari(); myferrari.setcolor("kokkini"); myferrari.setmaxspeed(290); myferrari.carinfo(); myferrari.ferraridemo(); } } 44

45 Κληρονομικότητα ή Σύνθεση? Στη κληρονομικότητα κληρονομούμε και την υλοποίηση και τη διασύνδεση της υπερκλάσης. Δηλαδή, η κληρονομιά της διασύνδεσης εξασφαλίζει ότι η υποκλάση λαμβάνει όλα -και τα ίδια- μηνύματα με την υπερκλάση (χρήση αντικειμένου της υποκλάσης αντί της υπερκλάσης). Στη σύνθεση δεν βλέπουμε την διασύνδεση των κλάσεων των ενσωματωμένων αντικειμένων (private μέλη των κλάσεων). Άρα, ευκολότερη η αλλαγή κλάσης που εκτελεί σύνθεση από ότι κληρονομικότητα. Η αλλαγή στην υπερκλάση επηρεάζει την ιεραρχική κληρονομικότητα των υποκλάσεων. 45

46 Κληρονομικότητα ή Σύνθεση? Στη σύνθεση τα αντικείμενα μέλη της νέας κλάσης είναι συνήθως private, οπότε τα μεταβάλουμε εύκολα χωρίς να επηρεάσουμε τον υπόλοιπο κώδικα. Επίσης, μπορούμε να αλλάξουμε τα αντικείμενα μέλη κατά την εκτέλεση του προγράμματος, αλλάζοντας δυναμικά τη συμπεριφορά του προγράμματος. Στην κληρονομικότητα δεν έχουμε αυτή την δυνατότητα (περιορισμοί του compiler). Στην κληρονομικότητα μια μέθοδος της υποκλάσης, με την ίδια υπογραφή με την υπερκλάση, δεν επιτρέπεται να αλλάξει τον επιστρεφόμενο τύπο της μεθόδου. Στην σύνθεση υλοποιούμε τις δικές μας μεθόδους, αποφεύγοντας αυτό τον περιορισμό. Η σύνθεση είναι πιο ευέλικτη και εύκολα υλοποιήσιμη και πρέπει να προτιμάται. 46

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

ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance) ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance) ΑΣΚΗΣΗ-1 η κληρονομεί μια λειτουργικότητα της υπερκλάσης. Π.χ. ορίστε την υπερκλάση Superclass με χαρακτηριστικά (1)

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 4 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

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

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods (Object Oriented Programming) Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος

Διαβάστε περισσότερα

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1 Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί

Διαβάστε περισσότερα

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

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Πακέτα (Packages) Φωλιασμένες

Διαβάστε περισσότερα

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

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

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

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα κληρονοµικότητα Παύλος Εφραιµίδης 1 ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Διασυνδέσεις / Διεπαφές PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Διεπαφές/Διασυνδέσεις (Interfaces) 2 Διεπαφές/Διασυνδέσεις (Interfaces)

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

Διαβάστε περισσότερα

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

Διαβάστε περισσότερα

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

Από τη UML στον Κώδικα. Μέρος Α Από τη UML στον Κώδικα Μέρος Α περιεχόμενα παρουσίασης Κλάσεις Ισότητα αντικειμένων Μονόδρομες συσχετίσεις με πολλαπλότητα «ένα» Μονόδρομες συσχετίσεις με πολλαπλότητα «πολλά» Συλλογές από το σχέδιο στον

Διαβάστε περισσότερα

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12 Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Ανάλυση Πληροφοριακών Συστημάτων Εαρινό Εξάμηνο 2018-2019 Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Διαγράμματα Κλάσεων Τα βασικά στοιχεία Διαλέξεις παρουσιάσεις Το υλικό του μαθήματος στηρίζεται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee Μία εταιρεία πληρώνει τους εργαζόμενους της σε εβδομαδιαία βάση. Οι αποδοχές των εργαζόμενων υπολογίζονται με τέσσερις διαφορετικούς τρόπους : Α) Μισθωτοί (SalariedEmployee), πληρώνονται με σταθερό ποσό

Διαβάστε περισσότερα

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

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

Διαβάστε περισσότερα

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

Διαβάστε περισσότερα

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Κληρονομικότητα (Inheritance) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κληρονομικότητα και Επαναχρησιμοποίηση - Υποκλάσεις/Υπερκλάσεις - Απόκρυψη ονομάτων - Το super, protected

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 9 Κληρονομικότητα (Inheritance) Υπάρχουν κλάσεις που

Διαβάστε περισσότερα

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

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους Σύνοψη των βασικών λειτουργιών

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Βελτίωση Δομής με Κληρονομικότητα Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

ΚΛΑΣΕΙΣ ΜΕΘΟΔΟΙ - ΑΝΤΙΚΕΙΜΕΝΑ

ΚΛΑΣΕΙΣ ΜΕΘΟΔΟΙ - ΑΝΤΙΚΕΙΜΕΝΑ (Object Oriented Programming) ΚΛΑΣΕΙΣ ΜΕΘΟΔΟΙ - ΑΝΤΙΚΕΙΜΕΝΑ ΠΙΝΑΚΕΣ ΑΝΤΙΚΕΙΜΕΝΩΝ ( ή εκεί που φτάσαμε το 1 ο εξάμηνο ) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Κ Λ Α Σ Ε Ι Σ - Ανακεφαλαίωση

Διαβάστε περισσότερα

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 1: Αντικειμενοστραφής Προγραμματισμός Εισαγωγή OBJECT-ORIENTED PROGRAMMING ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

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

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος

Διαβάστε περισσότερα

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

Διαβάστε περισσότερα

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

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) Σκοπός Σκοπός των συσχετίσεων είναι να αναπαριστούν την αλληλεπίδραση μεταξύ των κλάσεων και των αντικειμένων. Απεικονίζονται διαγραμματικά με μία γραμμή μεταξύ

Διαβάστε περισσότερα

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

Διαβάστε περισσότερα

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

Διαβάστε περισσότερα

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

02 Αντικειμενοστρεφής Προγραμματισμός 02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 8 : ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ & ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (1/3) Στην αρχή της κληρονομικότητας βασίζεται ο σχεδιασμός και η υλοποίηση συστημάτων Η κληρονομικότητα χρησιμοποιείται

Διαβάστε περισσότερα

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ «ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ 1 4.1. Οριςμόσ φνθετων τφπων κλάςεων 2 Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

Διαβάστε περισσότερα

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1 Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 2: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, tostring Αντικείμενα ως παράμετροι Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 Τμήμα θεωρίας: Κάθε Τρίτη, 11πμ-2μμ, ΑΜΦ22. Διδάσκων: Ντίνος Φερεντίνος email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό εργαστήριο (5-6 2ωρα εργαστήρια το εξάμηνο,

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

Πολυμορφισμός Αφηρημένες Κλάσεις. Παναγιώτης Σφέτσος, PhD

Πολυμορφισμός Αφηρημένες Κλάσεις. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Πολυμορφισμός Αφηρημένες Κλάσεις PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Απόκρυψη πεδίων (Hiding Fields) Στατική και Δυναμική Δέσμευση

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Μ έ θ ο δ ο ι Οι μέθοδοι είναι εκείνα τα τμήματα του κώδικα όπου εκτελούνται οι ουσιαστικές

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Αλληλεπίδραση Αντικειμένων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #11 Κληρονομικότητα [inheritance] Διάλεξη #11: Κληρονομικότητα [inheritance] Τι είναι η κληρονομικότητα; Γιατί είναι σημαντική; Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Sites:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

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

Προγράμματα με δομή Κληρονομικότητας Προγράμματα με δομή Κληρονομικότητας Η μέθοδος print της εφαρμογής DoME Η μέθοδος print στην κλάση Item τυπώνει: title: A Swingin Affair (64 mins) my favorite Sinatra album title: O Brother, Where Art

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΕΛΕΓΧΟΣ ΙΣΟΤΗΤΑΣ Έλεγχος ισότητας Έχουμε πει ότι όταν ελέγχουμε ισότητα μεταξύ αντικειμένων

Διαβάστε περισσότερα

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

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού Abstract Κλάσεις και Interfaces Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία

Διαβάστε περισσότερα

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

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

Προγραμματισμός Διαδικτύου 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΑΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Αντικειμενοστρεφής Προγραμματισμός adamidis@it.teithe.gr Abstract classes, δομητές και πολυμορφισμός, finalize, downcasting Αφηρημένες (abstract) κλάσεις Είναι πάντα βασικές κλάσεις μιας ιεραρχίας κλάσεων.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο

Διαβάστε περισσότερα

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

Προγράμματα με δομή Κληρονομικότητας Προγράμματα με δομή Κληρονομικότητας Επέκταση ιεραρχίας με νέες κλάσεις Επέκταση ιεραρχίας με νέες κλάσεις Οι κλάσεις που δεν προορίζονται για δημιουργία στιγμιοτύπων, αλλά προορίζονται να χρησιμοποιηθούν

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα