Περισσότερη Java. Πολυμορφισμός υποτύπων. Person p; Διαπροσωπείες (interfaces) Περιεχόμενα

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

Download "Περισσότερη Java. Πολυμορφισμός υποτύπων. Person p; Διαπροσωπείες (interfaces) Περιεχόμενα"

Transcript

1 Περισσότερη Java Πολυμορφισμός υποτύπων Person p; Είναι το παραπάνω μια δήλωση ότι το p είναι μια αναφορά σε ένα αντικείμενο της κλάσης Person; Όχι ακριβώς ο τύπος Person μπορεί να περιλαμβάνει αναφορές σε αντικείμενα άλλων κλάσεων Αυτό διότι η Java υποστηρίζει πολυμορφισμό υποτύπων (subtype polymorphism) Franz Marc, Fate of the animals, 1913 Κωστής Σαγώνας <kostis@cs.ntua.gr> Νίκος Παπασπύρου <nickie@softlab.ntua.gr> Περισσότερη Java 2 Περιεχόμενα Υλοποίηση διαπροσωπείας των κλάσεων Επέκταση των κλάσεων Επέκταση και υλοποίηση Πολλαπλή κληρονομικότητα Παραμετρικότητα μέσω γενικών μεθόδων (generics) Διαπροσωπείες (interfaces) Ένα πρωτότυπο μεθόδου (method prototype) απλώς δίνει το όνομα της μεθόδου και τον τύπο της όχιτοσώματης Οι διαπροσωπείες είναι συλλογές από πρωτότυπα μεθόδων public interface Drawable { void show(int xpos, int ypos); void hide(); Μια κλάση μπορεί να δηλώσει ότι υλοποιεί μια συγκεκριμένη διαπροσωπεία Μετά πρέπει να παρέχει ορισμούς public μεθόδων οι οποίοι ταιριάζουν με εκείνους της διαπροσωπείας Περισσότερη Java 3 Περισσότερη Java 4

2 Παραδείγματα Γιατί χρησιμοποιούμε διαπροσωπείες; public class Icon implements Drawable { public void show(int x, int y) { σώμα της μεθόδου public void hide() { σώμα της μεθόδου περισσότερες μέθοδοι και πεδία public class Square implements Drawable, Scalable { πρέπει να υλοποιεί όλες τις μεθόδους όλων των διαπροσωπειών Μια διαπροσωπεία μπορεί να υλοποιείται από πολλές διαφορετικές κλάσεις: public class Window implements Drawable public class Icon implements Drawable public class Oval implements Drawable Το όνομα της διαπροσωπείας μπορεί να χρησιμοποιηθεί ως ένας τύπος αναφοράς: Drawable d; d = new Icon("i1.gif"); d.show(0,0); d = new Oval(20,30); d.show(0,0); Περισσότερη Java 5 Περισσότερη Java 6 Πολυμορφισμός με διαπροσωπείες static void flashoff(drawable d, int k) { for (int i = 0; i < k; i++) { d.show(0,0); d.hide(); Η παραπάνω μέθοδος είναι πολυμορφική: η κλάση του αντικειμένου που αναφέρεται από την παράμετρο d δεν είναι γνωστή κατά το χρόνο μετάφρασης Το μόνο που είναι γνωστό είναι ότι είναι μια κλάση που υλοποιεί τη διαπροσωπεία Drawable (implements Drawable) και κατά συνέπεια είναι μια κλάση που έχει μεθόδους show και hide οι οποίες μπορούν να κληθούν Περισσότερη Java 7 Ένα πιο ολοκληρωμένο παράδειγμα Η επόμενη διαφάνεια δείχνει τη διαπροσωπεία μιας κλάσης Worklist που είναι μια συλλογή από αντικείμενα String Η κλάση περιέχει μεθόδους με τις οποίες μπορούμε να προσθέσουμε ένα αντικείμενο στη συλλογή, να αφαιρέσουμε ένα αντικείμενο από τη συλλογή, και να ελέγξουμε κατά πόσο μια συλλογή είναι κενή ή όχι Περισσότερη Java 8

3 public interface Worklist { * Add one String to the worklist. item the String to add void add(string item); * Test whether there are more elements in the * worklist: that is, test whether more elements * have been added than have been removed. true iff there are more elements boolean hasmore(); * Remove one String from the worklist and return it. * There must be at least one element in the worklist. the String item removed String remove(); Περισσότερη Java 9 Σχόλια στις διαπροσωπείες Η ύπαρξη σχολίων είναι σημαντική για μια διαπροσωπεία, διότι δεν υπάρχει κώδικας ώστε ο αναγνώστης/χρήστης να καταλάβει τι (σκοπεύει να) κάνει η κάθε μέθοδος Η διαπροσωπεία της Worklist δεν προσδιορίζει κάποια συγκεκριμένη δομή ή ταξινόμηση: μπορεί να υλοποιείται από μια στοίβα, μια ουρά, ή από κάποια άλλη δομή Θα την υλοποιήσουμε ως στοίβα, μέσω συνδεδεμένης λίστας Περισσότερη Java 10 * A Node is an object that holds a String and a link * to the next Node. It can be used to build linked * lists of Strings. public class Node { private String data; // Each node has a String... private Node link; // and a link to the next Node * Node constructor. thedata the String to store in this Node thelink a link to the next Node public Node(String thedata, Node thelink) { data = thedata; link = thelink; * Accessor for the String data stored in this Node. our String item public String getdata() { return data; * Accessor for the link to the next Node. the next Node public Node getlink() { return link; Περισσότερη Java 11 Περισσότερη Java 12

4 * A Stack is an object that holds a collection of * Strings. public class Stack implements Worklist { private Node top = null; // top Node in the stack * Push a String on top of this stack. data the String to add public void add(string data) { top = new Node(data,top); Περισσότερη Java 13 * Test whether this stack has more elements. true if this stack is not empty public boolean hasmore() { return (top!= null); * Pop the top String from this stack and return it. * This should be called only if the stack is * not empty. the popped String public String remove() { Node n = top; top = n.getlink(); return n.getdata(); Περισσότερη Java 14 Ένα παράδειγμα χρήσης Worklist w; w = new Stack(); w.add("ο Παρασκευάς."); w.add("βας, "); w.add("βας, βας,"); System.out.print(w.remove()); System.out.print(w.remove()); System.out.println(w.remove()); Επέκταση των κλάσεων Έξοδος: Βας, βας, βας, ο Παρασκευάς. Άλλες υλοποιήσεις της κλάσης Worklist είναι πιθανές: με χρήση Queue, PriorityQueue, κ.α. Περισσότερη Java 15 Περισσότερη Java 16

5 Περισσότερος πολυμορφισμός Θα δούμε μια άλλη, πιο πολύπλοκη, πηγή πολυμορφισμού Μια κλάση μπορεί να παράγεται από μια άλλη, με χρήση της λέξης κλειδί extends Ως παράδειγμα θα ορίσουμε μια κλάση PeekableStack η οποία είναι σαν την κλάση Stack, αλλά έχει επίσης μια μέθοδο peek που εξετάζει το στοιχείο στην κορυφή της στοίβας χωρίς όμως να το αφαιρεί από αυτή * A PeekableStack is an object that does everything * a Stack can do, and can also peek at the top * element of the stack without popping it off. public class PeekableStack extends Stack { * Examine the top element on the stack, without * popping it off. This should be called only if * the stack is not empty. the top String from the stack public String peek() { String s = remove(); add(s); return s; Περισσότερη Java 17 Περισσότερη Java 18 Κληρονομικότητα (inheritance) Επειδή η κλάση PeekableStack επεκτείνει την κλάση Stack, κληρονομεί όλες τις μεθόδους και τα πεδία της (Κάτι τέτοιο δε συμβαίνει με τις διαπροσωπείες: όταν μια κλάση υλοποιεί μια διαπροσωπεία, το μόνο που αναλαμβάνει είναι μια υποχρέωση να υλοποιήσει κάποιες μεθόδους.) Εκτός από κληρονομικότητα, η επέκταση των κλάσεων οδηγεί και σε πολυμορφισμό Stack s1 = new PeekableStack(); PeekableStack s2 = new PeekableStack(); s1.add("drive"); s2.add("cart"); System.out.println(s2.peek()); Προσέξτε ότι μια κλήση s1.peek() δε θα ήταν νόμιμη, παρόλο που η s1 είναι μια αναφορά σε ένα αντικείμενο της κλάσης PeekableStack. Οι λειτουργίες που επιτρέπονται στη Java καθορίζονται από το στατικό τύπο της αναφοράς και όχι από την κλάση του αντικειμένου. Περισσότερη Java 19 Περισσότερη Java 20

6 Ερώτηση Η υλοποίηση της μεθόδου peek δενήτανηπιο αποδοτική: public String peek() { String s = remove(); add(s); return s; Γιατί δεν κάνουμε το παρακάτω; public String peek() { return top.getdata(); Απάντηση Το πεδίο top της κλάσης Stack έχει δηλωθεί private Η κλάση PeekableStack δε μπορεί να το προσπελάσει Για μια πιο αποδοτική μέθοδο peek, ηκλάσηstack πρέπει να καταστήσει το πεδίο top ορατό στις κλάσεις που την επεκτείνουν Δηλαδή πρέπει να το δηλώσει ως protected αντί για private Συνήθης πρόκληση σχεδιασμού για αντικειμενοστρεφείς γλώσσες: πως ο σχεδιασμός θα κάνει εύκολη την επαναχρησιμοποίηση μεθόδων μέσω κληρονομικότητας Περισσότερη Java 21 Περισσότερη Java 22 Αλυσίδες κληρονομικότητας ΗκλάσηObject Στη Java, μια κλάση μπορεί να έχει πολλές κλάσεις που παράγονται από αυτή Για την ακρίβεια, όλες οι κλάσεις της Java (εκτός από μία) παράγονται από κάποια άλλη κλάση Εάν στον ορισμό μιας κλάσης δεν προσδιορίζεται κάποια πρόταση extends, η Java αυτόματα εννοεί: extends Object Η κλάση Object είναι η πρωταρχική κλάση της Java (δεν παράγεται από κάποια άλλη) Όλες οι κλάσεις παράγονται, άμεσα ή έμμεσα, από την προκαθορισμένη κλάση Object (εκτός φυσικά από την κλάση Object) Όλες οι κλάσεις κληρονομούν μεθόδους από την κλάση Object, για παράδειγμα: getclass, επιστρέφει την κλάση του αντικειμένου tostring, για μετατροπή του αντικειμένου σε String equals, για σύγκριση με άλλα αντικείμενα hashcode, για υπολογισμό ενός ακεραίου (int) που αντιστοιχεί στην τιμή του κωδικού κατακερματισμού (hash code) του αντικειμένου κ.λπ. Περισσότερη Java 23 Περισσότερη Java 24

7 Υπερκάλυψη κληρονομημένων ορισμών Κάποιες φορές μπορεί να θέλουμε να επανακαθορίσουμε τη λειτουργικότητα μιας κληρονομημένης μεθόδου Αυτό δε γίνεται με χρήση κάποιου ειδικού κατασκευαστή: ένας νέος ορισμός μιας μεθόδου αυτόματα υπερκαλύπτει (overrides) έναν κληρονομημένο ορισμό του ίδιου ονόματος και τύπου Περισσότερη Java 25 Παράδειγμα υπερκάλυψης Η κληρονομημένη μέθοδος tostring απλώς συνδυάζει το όνομα της κλάσης και τον κωδικό κατακερματισμού (σε μορφή δεκαεξαδικού αριθμού) Με άλλα λόγια, ο κώδικας της default μεθόδου τυπώνει κάτι σαν το εξής: Μια ειδική μέθοδος tostring στη μέθοδο Stack, σαν την παρακάτω, μπορεί να τυπώσει ένα πιο διευκρινιστικό μήνυμα: public String tostring() { return "Stack with top at " + top; Περισσότερη Java 26 Ιεραρχίες κληρονομικότητας Η σχέση κληρονομικότητας δημιουργεί μια ιεραρχία Η ιεραρχία αυτή είναι ένα δένδρο με ρίζα την κλάση Object Σε κάποιες περιπτώσεις οι κλάσεις απλώς επεκτείνουν η μία την άλλη Σε άλλες περιπτώσεις, η ιεραρχία των κλάσεων και η κληρονομικότητα χρησιμοποιούνται ούτως ώστε ο κώδικας που είναι κοινός για περισσότερες από μία κλάσεις να υπάρχει μόνο σε μια κοινή βασική κλάση Δύο κλάσεις με πολλά κοινά στοιχεία αλλά καμία δεν είναι μια απλή επέκταση της άλλης. public class Label { private int x, y; private int width; private int height; private String text; public void move (int newx, int newy) { x = newx; y = newy; public String gettext() { return text; public class Icon { private int x, y; private int width; private int height; private Gif image; public void move (int newx, int newy) { x = newx; y = newy; public Gif getimage() { return image; Περισσότερη Java 27 Περισσότερη Java 28

8 Ο κώδικας και τα δεδομένα που είναι κοινά έχουν εξαχθεί σε μια κοινή βασική κλάση. public class Graphic { protected int x, y; protected int width, height; public void move(int newx, int newy) { x = newx; y = newy; public class Label extends Graphic { private String text; public String gettext() { return text; public class Icon extends Graphic { private Gif image; public Gif getimage() { return image; Περισσότερη Java 29 Ένα πρόβλημα σχεδιασμού Πολλές φορές όταν γράφουμε τον ίδιο κώδικα ξανά και ξανά, σκεφτόμαστε ότι ο κώδικας αυτός πρέπει να βγει σε μια συνάρτηση (σε μία μέθοδο) Όταν γράψουμε τις ίδιες μεθόδους ξανά και ξανά, σκεφτόμαστε ότι κάποια μέθοδος πρέπει να βγει σε μια κοινή βασική κλάση Οπότε είναι καλό να καταλάβουμε νωρίς στο σχεδιασμό κατά πόσο υπάρχει ανάγκη για κοινές βασικές κλάσεις, πριν γράψουμε αρκετό κώδικα ο οποίος χρειάζεται αναδιοργάνωση Περισσότερη Java 30 Υποτύποι και κληρονομικότητα Μια παραγόμενη κλάση είναι ένας υποτύπος Από προηγούμενη διάλεξη: Ένας υποτύπος είναι ένα υποσύνολο των τιμών κάποιου τύπου, αλλά υποστηρίζει ένα υπερσύνολο των λειτουργιών του. Κατά το σχεδιασμό της ιεραρχίας των κλάσεων, πρέπει να σκεφτόμαστε την κληρονομικότητα της λειτουργικότητάς τους Όμως οι φυσικές ιεραρχίες δεν είναι πάντα ό,τι πιο κατάλληλο μπορεί να υπάρξει όσον αφορά στην κληρονομικότητα των λειτουργιών Σχήμα Πολύπλευρο Τετράπλευρο Τετράγωνο Περισσότερη Java 31 Επέκταση και υλοποίηση Περισσότερη Java 32

9 Επέκταση και υλοποίηση Οι κλάσεις μπορούν να χρησιμοποιήσουν τις λέξεις κλειδιά extends και implements συγχρόνως Για κάθε κλάση, η υλοποίηση ενός συστήματος Java κρατάει πληροφορίες για αρκετές ιδιότητες, όπως για παράδειγμα: Α: τις διαπροσωπείες που η κλάση υλοποιεί Β: τις μεθόδους που είναι υποχρεωμένη να ορίσει Γ: τις μεθόδους που ορίζονται για την κλάση Δ: τα πεδία που περιλαμβάνει η κλάση Απλές περιπτώσεις Ένας ορισμός μεθόδου επηρεάζει μόνο το Γ Ένας ορισμός πεδίου επηρεάζει μόνο το Δ Μια δήλωση implements επηρεάζει τα A και B Όλες οι διαπροσωπείες προσθέτονται στο A Όλες οι μέθοδοι τους προσθέτονται στο B Α: τις διαπροσωπείες που η κλάση υλοποιεί Β: τις μεθόδους που είναι υποχρεωμένη να ορίσει Γ: τις μεθόδους που ορίζονται για την κλάση Δ: τα πεδία που περιλαμβάνει η κλάση Περισσότερη Java 33 Περισσότερη Java 34 Η δύσκολη περίπτωση Μια δήλωση extends επηρεάζει όλες τις πληροφορίες: Όλες οι διαπροσωπείες της βασικής κλάσης προσθέτονται στο Α Όλες οι μέθοδοι που υποχρεούται η βασική κλάση να ορίσει προσθέτονται στο Β Όλες οι μέθοδοι της βασικής κλάσης προσθέτονται στο Γ Όλα τα πεδία της βασικής κλάσης προσθέτονται στο Δ Α: τις διαπροσωπείες που η κλάση υλοποιεί Β: τις μεθόδους που είναι υποχρεωμένη να ορίσει Γ: τις μεθόδους που ορίζονται για την κλάση Δ: τα πεδία που περιλαμβάνει η κλάση Το προηγούμενο παράδειγμά μας public class Stack implements Worklist { public class PeekableStack extends Stack { Η κλάση PeekableStack έχει ως: Α: τη διαπροσωπεία Worklist, από κληρονομιά Β: τις υποχρεώσεις για υλοποίηση των μεθόδων add, hasmore, και remove, επίσης από κληρονομιά Γ: τις μεθόδους add, hasmore, και remove, κληρονομημένες, όπως επίσης και τη δική της μέθοδο peek Δ: το πεδίο top, επίσης κληρονομημένο Περισσότερη Java 35 Περισσότερη Java 36

10 Μια ματιά στις abstract κλάσεις Τελικές (final) κλάσεις και μέθοδοι Παρατηρείστε ότι το Γ είναι υπερσύνολο του Β: η κλάση πρέπει να έχει ορισμούς για όλες τις μεθόδους Η Java συνήθως απαιτεί το παραπάνω Οι κλάσεις μπορούν να απαλλαγούν από αυτήν την υποχρέωση με το να δηλωθούν αφηρημένες (abstract) Μια abstract κλάση μπορεί να χρησιμοποιηθεί μόνο ως βασική κλάση (Αυτό σημαίνει ότι δεν μπορούν να δημιουργηθούν αντικείμενα της συγκεκριμένης κλάσης.) Περιορίζουν την κληρονομικότητα Οι τελικές κλάσεις δε μπορούν να επεκταθούν και οι τελικές μέθοδοί τους δε μπορούν να ξαναοριστούν Παράδειγμα, η κλάση java.lang.string Η ύπαρξη τελικών κλάσεων είναι σημαντική για ασφάλεια Ο προγραμματιστής μπορεί να ελέγξει πλήρως τη συμπεριφορά όλων των υποκλάσεων (και κατά συνέπεια των υποτύπων) Σημ.: Η δήλωση final μπορεί να χρησιμοποιηθεί και σε πεδία: εκεί, το final σημαίνει ότι μπορεί να ανατεθεί τιμή μόνο μια φορά στο πεδίο Περισσότερη Java 37 Περισσότερη Java 38 Πολλαπλή κληρονομικότητα (multiple inheritance) Σε κάποιες γλώσσες (όπως η C++) μια κλάση μπορεί να έχει περισσότερες από μία βασικές κλάσεις Πολλαπλή κληρονομικότητα Παράδειγμα: ένα πολυμηχάνημα (multifunction printer) Printer Copier Scanner Fax MultiFunction Περισσότερη Java 39 Επιφανειακά, τόσο η σημασιολογία όσο και η υλοποίηση φαίνονται εύκολες: η κλάση απλά κληρονομεί όλα τα πεδία και τις μεθόδους των βασικών της κλάσεων Περισσότερη Java 40

11 Προβλήματα συγκρούσεων Οι διαφορετικές βασικές κλάσεις είναι άσχετες μεταξύ τους και μπορεί να μην έχουν σχεδιαστεί έτσι ώστε να συνδυάζονται Για παράδειγμα, τόσο η κλάση Scanner όσο και η Fax μπορεί να έχουν ορίσει μια μέθοδο transmit Το ερώτημα είναι: τι πρέπει να συμβεί όταν καλέσουμε τη μέθοδο MultiFunction.transmit; Το πρόβλημα του διαμαντιού Μια κλάση μπορεί να κληρονομεί από την ίδια βασική κλάση μέσω περισσοτέρων του ενός μονοπατιού B C Εάν η κλάση A ορίζει ένα πεδίο x, τότε τόσο η B όσο και η C έχουν ένα Δηλαδή η κλάση D έχει δύο τέτοια πεδία; A D Περισσότερη Java 41 Περισσότερη Java 42 Το πρόβλημα είναι επιλύσιμο, αλλά Μια γλώσσα που υποστηρίζει πολλαπλή κληρονομικότητα πρέπει να έχει κάποιους μηχανισμούς χειρισμού αυτών των προβλημάτων Βεβαίως, δεν είναι όλα τα προβλήματα τόσο πολύπλοκα Όμως, το βασικό ερώτημα είναι: τα πλεονεκτήματα που προσφέρει η πολλαπλή κληρονομικότητα αξίζουν την πρόσθετη πολυπλοκότητα στο σχεδιασμό της γλώσσας; Οι σχεδιαστές της Java ήταν (και είναι) της γνώμης ότι η πολλαπλή κληρονομικότητα δεν αξίζει τον κόπο Ζωή χωρίς πολλαπλή κληρονομικότητα Ένα πλεονέκτημα της πολλαπλής κληρονομικότητας είναι ότι μια κλάση μπορεί να έχει αρκετούς διαφορετικούς μεταξύ τους τύπους (π.χ. Copier και Fax) Αυτό μπορεί να γίνει στη Java με χρήση διαπροσωπειών: μια κλάση μπορεί να υλοποιεί έναν απεριόριστο αριθμό από διαπροσωπείες Ένα επιπλέον πλεονέκτημα είναι η δυνατότητα κληρονομιάς λειτουργικότητας από πολλαπλές βασικές κλάσεις Αυτό είναι δυσκολότερο να γίνει σε μια γλώσσα σαν τη Java Περισσότερη Java 43 Περισσότερη Java 44

12 Προώθηση (forwarding) public class MultiFunction { private Printer myprinter; private Copier mycopier; private Scanner myscanner; private Fax myfax; public void copy() { mycopier.copy(); public void transmitscanned() { myscanner.transmit(); public void sendfax() { myfax.transmit(); Περισσότερη Java 45 Παραμετρικότητα μέσω Generics Περισσότερη Java 46 Ανυπαρξία γενικών κλάσεων στις Java Το προηγούμενο παράδειγμα κλάσης Stack ορίστηκε ως μια στοίβα από συμβολοσειρές Κατά συνέπεια, δε μπορεί να επαναχρησιμοποιηθεί για στοίβες άλλων τύπων Στην ML μπορούσαμε να χρησιμοποιήσουμε μεταβλητές τύπων για περιπτώσεις σαν και αυτές: datatype 'a node = NULL CELL of 'a * 'a node; Η Ada και η C++ έχουν κάτι παρόμοιο, αλλά όχι η Java Ζωή χωρίς γενικές κλάσεις στις Java Μπορούμε να ορίσουμε μια στοίβα της οποίας τα στοιχεία είναι αντικείμενα της κλάσης Object Ο τύπος Object είναι ο πιο γενικός τύπος της Java και περιλαμβάνει όλες τις αναφορές Κατά συνέπεια ο ορισμός μέσω της κλάσης Object επιτρέπει σε αντικείμενα οποιασδήποτε κλάσης να τοποθετηθούν στη στοίβα Το παραπάνω προσφέρει κάποιου είδους πολυμορφισμό υποτύπων Περισσότερη Java 47 Περισσότερη Java 48

13 public class GenericNode { private Object data; private GenericNode link; public GenericNode(Object thedata, GenericNode thelink) { data = thedata; link = thelink; public Object getdata() { return data; public GenericNode getlink() { return link; Κατά παρόμοιο τρόπο, θα μπορούσαμε να ορίσουμε την κλάση GenericStack (και μια GenericWorklist διαπροσωπεία) με χρήση Object στηθέσητηςstring Περισσότερη Java 49 Μειονέκτημα Για να ανακτήσουμε τον τύπο του αντικειμένου στη στοίβα, θα πρέπει να χρησιμοποιήσουμε ένα type cast: GenericStack s1 = new GenericStack(); s1.add("hello"); String s = (String) s1.remove(); Το παραπάνω μάλλον δεν είναι ότι πιο φιλικό για τον προγραμματιστή Επίσης δεν είναι ότι πιο αποδοτικό σε χρόνο εκτέλεσης: η Java πρέπει να ελέγξει κατά τη διάρκεια εκτέλεσης του προγράμματος ότι το type cast επιτρέπεται δηλαδή ότι το αντικείμενο είναι πράγματι ένα String Περισσότερη Java 50 Άλλο μειονέκτημα Οι πρωτόγονοι τύποι πρέπει πρώτα να αποθηκευθούν σε ένα αντικείμενο εάν θέλουμε να τους βάλουμε σε μια στοίβα: GenericStack s2 = new GenericStack(); s2.add(new Integer(42)); int i = ((Integer) s2.remove()).intvalue(); Το παραπάνω είναι επίπονο και όχι ό,τι πιο αποδοτικό Η κλάση Integer είναι η προκαθορισμένη κλάση περιτύλιγμα (wrapper class) για τους ακεραίους Υπάρχει μια τέτοια κλάση για κάθε πρωτόγονο τύπο Περισσότερη Java 51 Πραγματικά Generics (Java 1.5, Tiger ) Ξεκινώντας με τη Java 1.5, η Java έχει generics, δηλαδή παραμετρικές πολυμορφικές κλάσεις (και διαπροσωπείες) Η σύνταξή τους μοιάζει με τη σύνταξη των C++ templates public class Stack<T> implements Worklist<T> { private Node<T> top = null; public void add(t data) { top = new Node<T>(data,top); public boolean hasmore() { return (top!= null); public T remove() { Node<T> n = top; top = n.getlink(); return n.getdata(); Περισσότερη Java 52

14 Χρησιμοποίηση των Generics Java 1.0 έναντι Java με Generics Stack<String> s1 = new Stack<String>(); Stack<int> s2 = new Stack<int>(); s1.add("hello"); String s = s1.remove(); s2.add(42); int i = s2.remove(); class Stack { void push(object o) {... Object pop() { String s = "Hello"; Stack st = new Stack();... st.push(s);... s = (String) st.pop(); class Stack<T> { void push(t a) {... T pop() { String s = "Hello"; Stack<String> st = new Stack<String>(); st.push(s);... s = st.pop(); Περισσότερη Java 53 Περισσότερη Java 54 Γιατί δεν υπήρξαν generics στις πρώτες Java; Generics στη Java 1.5 ( Tiger ) Υπήρξαν αρκετές προτάσεις για επέκταση Σε συμφωνία με τους βασικούς σκοπούς της γλώσσας Όμως ο διάβολος είναι στις λεπτομέρειες, όπως: Τι παρενέργειες έχει η ύπαρξη generics για τη διαδικασία ελέγχου των τύπων; Ποιος είναι ο καλύτερος τρόπος να γίνει η υλοποίηση; Μπορεί η αφηρημένη μηχανή της Java να υποστηρίξει τα generics; Αν ναι, μέσω πρόσθετων bytecodes ή με κάποιον άλλο τρόπο; Μέσω ξεχωριστού κώδικα για κάθε στιγμιότυπο; Ή μέσω του ίδιου κώδικα (με χρήση casts) για όλα τα στιγμιότυπα; Το Java Community proposal (JSR 14) ενσωματώθηκε στη Java 1.5 Περισσότερη Java 55 Υιοθετήθηκε η σύνταξη που μόλις είδαμε Προστέθηκε αυτόματη μετατροπή boxing + unboxing Τι θα γράφαμε χωρίς αυτόματη μετατροπή Τι γράφουμε στη Java 1.5 Stack<Integer> st = new Stack<Integer>(); st.push(new Integer(42));... int i = (st.pop()).intvalue(); Stack<Integer> st = new Stack<Integer>(); st.push(42);... int i = st.pop(); Περισσότερη Java 56

15 Οι τύποι των generics της Java ελέγχονται Μια γενική κλάση μπορεί να θελήσει να χρησιμοποιήσει λειτουργίες σε αντικείμενα ενός τύπου-παραμέτρου Παράδειγμα: PriorityQueue<T> if x.less(y) then Δύο πιθανές προσεγγίσεις: C++: Κατά το χρόνο σύνδεσης (linking) ελέγχεται το κατά πόσο όλες οι λειτουργίες μπορούν να επιλυθούν Java: Οι τύποι ελέγχονται στατικά και δε χρειάζεται να γίνει κάποιος έλεγχος των generics κατά το χρόνο σύνδεσης Αυτή η προσέγγιση επιβάλλει στο πρόγραμμα να έχει πληροφορία για τον τύπο της παραμέτρου Παράδειγμα : PriorityQueue<T extends...> Περισσότερη Java 57 Παράδειγμα: Πίνακας κατακερματισμού public interface Hashable { int HashCode(); ; class HashTable <Key extends Hashable, Value> { void Insert(Key k, Value v) { int bucket = k.hashcode(); InsertAt(bucket, k, v); ; Η έκφραση πρέπει να μην πετάει σφάλμα κατά τη διαδικασία ελέγχου των τύπων. Χρησιμοποιούμε Key extends Hashable Περισσότερη Java 58 Παράδειγμα: Ουρά προτεραιότητας public interface Comparable<I> { boolean lessthan(i); ; class PriorityQueue<T extends Comparable<T>> { T queue[]; void insert(t t) { if (t.lessthan(queue[i]) T remove() { ; Ένα τελευταίο παράδειγμα public interface LessAndEqual<I> { boolean lessthan(i); boolean equal(i); class Relations<C extends LessAndEqual<C>> extends C { boolean greaterthan(relations<c> a) { return a.lessthan(this); boolean greaterequal(relations<c> a) { return greaterthan(a) equal(a); boolean notequal(relations<c> a) {... boolean lessequal(relations<c> a) {......

16 Υλοποίηση των Generics Διαγραφή τύπων (type erasure) Ο έλεγχος τύπων κατά τη μετάφραση χρησιμοποιεί τα generics Στη συνέχεια ο compiler απαλείφει τα generics μέσω διαγραφής Δηλαδή μεταγλωττίζει List<T> σε List, T σε Object, και προσθέτει αυτόματες μετατροπές τύπων (casts) Tα generics της Java δεν είναι σαν τα templates της C++ Οι δηλώσεις των generics ελέγχονται ως προς τους τύπους τους Τα generics μεταφράζονται άπαξ Δεν λαμβάνει χώρα κάποια στιγμιοτυποποίηση (instantiation) Ο παραγόμενος κώδικας δε διογκώνεται Περισσότερη Java 61

Περισσότερη Java. Franz Marc, Fate of the animals, Κωστής Σαγώνας Νίκος Παπασπύρου

Περισσότερη Java. Franz Marc, Fate of the animals, Κωστής Σαγώνας Νίκος Παπασπύρου Περισσότερη Java Franz Marc, Fate of the animals, 1913 Κωστής Σαγώνας Νίκος Παπασπύρου Πολυμορφισμός υποτύπων Person p; Είναι το παραπάνω μια δήλωση ότι το

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

Περισσότερη Java. Πολυµορφισµός υποτύπων. Person p; Περιεχόµενα. ιαπροσωπείες (interfaces) Παραδείγµατα. Γιατί χρησιµοποιούµε διαπροσωπείες;

Περισσότερη Java. Πολυµορφισµός υποτύπων. Person p; Περιεχόµενα. ιαπροσωπείες (interfaces) Παραδείγµατα. Γιατί χρησιµοποιούµε διαπροσωπείες; Περισσότερη Java Πολυµορφισµός υποτύπων Person p; Είναι το παραπάνω µια δήλωση ότι το p είναι µια αναφορά σε ένα αντικείµενο της κλάσης Person; Όχι ακριβώς ο τύπος Person µπορεί να περιλαµβάνει αναφορές

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

Πολυμορφισμός υποτύπων Person x; Person Person Περιεχόμενα Διαπροσωπείες (interfaces) public interface Drawable { void show(int xpos, int ypos);

Πολυμορφισμός υποτύπων Person x; Person Person Περιεχόμενα Διαπροσωπείες (interfaces) public interface Drawable { void show(int xpos, int ypos); Περισσότερη Java Πολυμορφισμός υποτύπων Person x; Είναι το παραπάνω μια δήλωση ότι το x είναι μια αναφορά σε ένα αντικείμενο της κλάσης Person; Όχι ακριβώς ο τύπος Person μπορεί να περιλαμβάνει αναφορές

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

Περισσότερη Java. Πολυμορφισμός μ υποτύπων. Person x; Διαπροσωπείες (interfaces) Περιεχόμενα

Περισσότερη Java. Πολυμορφισμός μ υποτύπων. Person x; Διαπροσωπείες (interfaces) Περιεχόμενα Περισσότερη Java Πολυμορφισμός μ υποτύπων Person x; Είναι το παραπάνω μια δήλωση ότι το x είναι μια αναφορά σε ένα αντικείμενο της κλάσης Person; Όχι ακριβώς ο τύπος Person μπορεί να περιλαμβάνει αναφορές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Από το προηγούμενο lab Είχαμε την κλάση Document, και δύο παραγόμενες κλάσεις: TextFile, Email Document

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

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

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

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

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

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

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

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

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

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

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

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

Το πρόγραμμα 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 υποστηρίζει

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

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

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

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

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

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

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

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

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

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

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

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

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

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

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

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

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

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

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

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

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 Σχεδίαση-Ανάπτυξη

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

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

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

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

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

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

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

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

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους

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

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας Ουρές Προτεραιότητας Ουρά Προτεραιότητας (Priority Queue) Μια συλλογή αντικειμένων που χαρακτηρίζονται από μια συγκρίσιμη προτεραιότητα. Έχει την λογική εικόνα μιας δομής δεδομένων όπου, αντικείμενα εισέρχονται

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

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

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

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

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

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

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

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

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

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

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

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

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

Εισαγωγή στη γλώσσα Java

Εισαγωγή στη γλώσσα Java Εισαγωγή στη γλώσσα Java Franz Marc, Rehe im Walde (II), 1913-14 Κωστής Σαγώνας Νίκος Παπασπύρου Παράδειγμα αντικειμενοστρεφούς τρόπου σκέψης Έγχρωμα σημεία

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

Εισαγωγή στη γλώσσα Java

Εισαγωγή στη γλώσσα Java Εισαγωγή στη γλώσσα Java Franz Marc, Rehe im Walde (II), 1913-14 Κωστής Σαγώνας Νίκος Παπασπύρου Παράδειγμα αντικειμενοστρεφούς τρόπου σκέψης Έγχρωμα σημεία

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1). Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

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

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

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1 Αντικείμενα στη Java Παύλος Εφραιμίδης Java Αντικείμενα στη Java 1 Αντικείμενα (Objects) στην Java Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Προηγούμενο Quiz class Item private String name; public Item(String name) this.name = name; class

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies Μαθήματα από το εργαστήριο Όταν η εκφώνηση σας ζητάει να φτιάξετε μία μέθοδο που παίρνει

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

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

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

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

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

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

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

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

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

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

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

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

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

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

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

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

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

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

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

Εξαιρέσεις (στη Java)

Εξαιρέσεις (στη Java) Εξαιρέσεις (στη Java) Vincent van Gogh, Irises, 1889 Κωστής Σαγώνας Εξαιρέσεις στη Java public class Test { public static void main(string[] args) { int i = Integer.parseInt(args[0]);

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

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

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

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

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

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

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

Week 7: Java Collection Classes

Week 7: Java Collection Classes Week 7: Java Collection Classes Υλοποιήσεις Εβδοµάδα 7: Κλάσεις συλλογών δεδοµένων στην Java Τύποι συλλογών δεδοµένων Τεχνικές υλοποίησης linked Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης,

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Γενικευμένες κλάσεις Κληρονομικότητα Employee name hiringdate getname gethiringdate Οι παράγωγες κλάσεις κληρονομούν τα πεδία και τις μεθόδους

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

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

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

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