Περισσότερη Java. Πολυµορφισµός υποτύπων. Person p; Περιεχόµενα. ιαπροσωπείες (interfaces) Παραδείγµατα. Γιατί χρησιµοποιούµε διαπροσωπείες;
|
|
- Ζαχαρίας Πυλαρινός
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Περισσότερη Java Πολυµορφισµός υποτύπων Person p; Είναι το παραπάνω µια δήλωση ότι το p είναι µια αναφορά σε ένα αντικείµενο της κλάσης Person; Όχι ακριβώς ο τύπος Person µπορεί να περιλαµβάνει αναφορές σε αντικείµενα άλλων κλάσεων Αυτό διότι η Java υποστηρίζει πολυµορφισµό υποτύπων (subtype polymorphism) Franz Marc, Fate of the animals, 1913 Κωστής Σαγώνας <kostis@cs.ntua.gr> Περισσότερη Java 2 Περιεχόµενα ιαπροσωπείες (interfaces) Υλοποίηση διαπροσωπείας των κλάσεων Επέκταση των κλάσεων Επέκταση και υλοποίηση Πολλαπλή κληρονοµικότητα Παραµετρικότητα µέσω γενικών µεθόδων (generics) Περισσότερη Java 3 Ένα πρότυπο µεθόδου (method prototype) απλώς δίνει το όνοµα της µεθόδου και τον τύπο της όχι το σώµα της Μια διαπροσωπεία είναι µια συλλογή από πρότυπα µεθόδων public interface Drawable void show(int xpos, int ypos); void hide(); Μια κλάση µπορεί να δηλώσει ότι υλοποιεί µια συγκεκριµένη διαπροσωπεία Μετά πρέπει να παρέχει ορισµούς public µεθόδων οι οποίοι ταιριάζουν µε εκείνους της διαπροσωπείας Περισσότερη Java 4 Παραδείγµατα 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
2 Πολυµορφισµός µε διαπροσωπείες 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 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
3 * 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 Περισσότερος πολυµορφισµός Θα δούµε µια άλλη, πιο πολύπλοκη, πηγή πολυµορφισµού Μια κλάση µπορεί να παράγεται από µια άλλη, µε χρήση της λέξης κλειδί 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
4 Κληρονοµικότητα (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 Ερώτηση Η υλοποίηση της µεθόδου peek δεν ήταν η πιο αποδοτική: public String peek() String s = remove(); add(s); return s; Γιατί δεν κάνουµε το παρακάτω; public String peek() return top.getdata(); Περισσότερη Java 21 Απάντηση Το πεδίο top της κλάσης Stack έχει δηλωθεί private Η κλάση PeekableStack δε µπορεί να το προσπελάσει Για µια πιο αποδοτική µέθοδο peek, η κλάση Stack πρέπει να καταστήσει το πεδίο top ορατό στις κλάσεις που την επεκτείνουν ηλαδή πρέπει να δηλωθεί ως protected αντί για private Συνήθης πρόκληση σχεδιασµού για αντικειµενοστρεφείς γλώσσες: πως ο σχεδιασµός θα κάνει εύκολη την επαναχρησιµοποίηση µεθόδων µέσω κληρονοµικότητας Περισσότερη Java 22 Αλυσίδες κληρονοµικότητας Στη Java, µια κλάση µπορεί να έχει πολλές κλάσεις που παράγονται από αυτή Για την ακρίβεια, όλες οι υπόλοιπες κλάσεις της Java (εκτός από µία) παράγονται από κάποια άλλη κλάση Εάν στον ορισµό µιας κλάσης δεν προσδιορίζεται κάποια πρόταση extends, η Java παρέχει µια τέτοια πρόταση: extends Object Η κλάση Object είναι η πρωταρχική κλάση της Java (δεν παράγεται από κάποια άλλη) Η κλάση Object Όλες οι κλάσεις παράγονται, άµεσα ή έµµεσα, από την προκαθορισµένη κλάση Object (εκτός φυσικά από την κλάση Object) Όλες οι κλάσεις κληρονοµούν µεθόδους από την κλάση Object, για παράδειγµα: getclass, επιστρέφει την κλάση του αντικειµένου tostring, για µετατροπή του αντικειµένου σε String equals, για σύγκριση µε άλλα αντικείµενα hashcode, για υπολογισµό ενός ακεραίου (int) που αντιστοιχεί στην τιµή του κωδικού κατακερµατισµού (hash code) του αντικειµένου κ.λπ. Περισσότερη Java 23 Περισσότερη Java 24
5 Υπερκάλυψη κληρονοµηµένων ορισµών Κάποιες φορές µπορεί να θέλουµε να επανακαθορίσουµε τη λειτουργικότητα µια κληρονοµηµένης µεθόδου Αυτό δε γίνεται µε χρήση κάποιου ειδικού κατασκευαστή: ένας νέος ορισµός µιας µεθόδου αυτόµατα υπερκαλύπτει (overrides 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 Ο κώδικας και τα δεδομένα που είναι κοινά έχουν εξαχθεί σε μια κοινή βασική κλάση. 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
6 Υποτύποι και κληρονοµικότητα Μια παραγόµενη κλάση είναι ένας υποτύπος Από προηγούµενη διάλεξη: Ένας υποτύπος είναι ένα υποσύνολο των τιμών κάποιου τύπου, αλλά υποστηρίζει ένα υπερσύνολο των λειτουργιών του. Κατά το σχεδιασµό της ιεραρχίας των κλάσεων, πρέπει να σκεφτόµαστε την κληρονοµικότητα της λειτουργικότητάς τους Όµως οι φυσικές ιεραρχίες δεν είναι πάντα ότι πιο κατάλληλο µπορεί να υπάρξει όσον αφορά στην κληρονοµικότητα των λειτουργιών Σχήμα Πολύπλευρο Τετράπλευρο Τετράγωνο Περισσότερη Java 31 Επέκταση και υλοποίηση Περισσότερη Java 32 Επέκταση και υλοποίηση Οι κλάσεις µπορούν να χρησιµοποιήσουν τις λέξεις κλειδιά 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
7 Μια µατιά στις abstract κλάσεις Παρατηρείστε ότι το Γ είναι υπερσύνολο του Β: η κλάση πρέπει να έχει ορισµούς για όλες τις µεθόδους Η Java συνήθως απαιτεί το παραπάνω Οι κλάσεις µπορούν να απαλλαγούν από αυτήν την υποχρέωση µε το να δηλωθούν αφηρηµένες (abstract) Μια abstract κλάση µπορεί να χρησιµοποιηθεί µόνο ως βασική κλάση (Αυτό σηµαίνει ότι δε µπορούν να δηµιουργηθούν αντικείµενα της συγκεκριµένης κλάσης.) Τελικές (final) κλάσεις και µέθοδοι Περιορίζουν την κληρονοµικότητα Οι τελικές κλάσεις δε µπορούν να επεκταθούν και οι τελικές µέθοδοί τους δε µπορούν να ξαναοριστούν Παράδειγµα, η κλάση java.lang.string Η ύπαρξη τελικών κλάσεων είναι σηµαντική για ασφάλεια Ο προγραµµατιστής µπορεί να ελέγξει πλήρως τη συµπεριφορά όλων των υποκλάσεων (και κατά συνέπεια των υποτύπων) Περισσότερη Java 37 Πολλαπλή κληρονοµικότητα (multiple inheritance) Πολλαπλή κληρονοµικότητα Σε κάποιες γλώσσες (όπως η C++) µια κλάση µπορεί να έχει περισσότερες από µία βασικές κλάσεις Παράδειγµα: ένα πολυµηχάνηµα (multifunction printer) Printer Copier Scanner Fax MultiFunction Περισσότερη Java 39 Επιφανειακά, τόσο η σηµασιολογία όσο και η υλοποίηση φαίνονται εύκολες: η κλάση απλά κληρονοµεί όλα τα πεδία και τις µεθόδους των βασικών της κλάσεων Περισσότερη Java 40 Προβλήµατα συγκρούσεων Οι διαφορετικές βασικές κλάσεις είναι άσχετες µεταξύ τους και µπορεί να µην έχουν σχεδιαστεί έτσι ώστε να συνδυάζονται Για παράδειγµα, τόσο η κλάση Scanner όσο και η Fax µπορεί να έχουν ορίσει µια µέθοδο transmit Το ερώτηµα είναι: τι πρέπει να συµβεί όταν καλέσουµε τη µέθοδο MultiFunction.transmit; Το πρόβληµα του διαµαντιού Μια κλάση µπορεί να κληρονοµεί από την ίδια βασική κλάση µέσω περισσοτέρων του ενός µονοπατιού A B C Εάν η κλάση A ορίζει ένα πεδίο x, τότε τόσο η B όσο και η C έχουν ένα ηλαδή η κλάση D έχει δύο τέτοια πεδία; D Περισσότερη Java 41 Περισσότερη Java 42
8 Το πρόβληµα είναι επιλύσιµο, αλλά Μια γλώσσα που υποστηρίζει πολλαπλή κληρονοµικότητα πρέπει να έχει κάποιους µηχανισµούς χειρισµού αυτών των προβληµάτων Βεβαίως, δεν είναι όλα τα προβλήµατα τόσο πολύπλοκα Όµως, το βασικό ερώτηµα είναι: τα πλεονεκτήµατα που προσφέρει η πολλαπλή κληρονοµικότητα αξίζουν την πρόσθετη πολυπλοκότητα στο σχεδιασµό της γλώσσας; Οι σχεδιαστές της Java ήταν (και είναι) της γνώµης ότι η πολλαπλή κληρονοµικότητα δεν αξίζει τον κόπο Ζωή χωρίς πολλαπλή κληρονοµικότητα Ένα πλεονέκτηµα της πολλαπλής κληρονοµικότητας είναι ότι µια κλάση µπορεί να έχει αρκετούς διαφορετικούς µεταξύ τους τύπους (π.χ. Copier και Fax) Αυτό µπορεί να γίνει στη Java µε χρήση διαπροσωπειών: µια κλάση µπορεί να υλοποιεί έναν απεριόριστο αριθµό από διαπροσωπείες Ένα επιπλέον πλεονέκτηµα είναι η δυνατότητα κληρονοµιάς λειτουργικότητας από πολλαπλές βασικές κλάσεις Αυτό είναι δυσκολότερο να γίνει σε µια γλώσσα σαν τη Java Περισσότερη Java 43 Περισσότερη Java 44 Προώθηση (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
9 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(1)); 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 Χρησιµοποίηση των 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(1); 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
10 Γιατί δεν υπήρξαν generics στις πρώτες Java; Υπήρξαν αρκετές προτάσεις για επέκταση Σε συµφωνία µε τους βασικούς σκοπούς της γλώσσας Όµως ο διάβολος είναι στις λεπτοµέρειες, όπως: Τι παρενέργειες έχει η ύπαρξη generics για τη διαδικασία ελέγχου των τύπων; Ποιος είναι ο καλύτερος τρόπος να γίνει η υλοποίηση; Μπορεί η αφηρηµένη µηχανή της Java να υποστηρίξει τα generics; Αν ναι, µέσω πρόσθετων bytecodes ή µε κάποιον άλλο τρόπο; Μέσω ξεχωριστού κώδικα για κάθε στιγµιότυπο; Ή µέσω του ίδιου κώδικα (µε χρήση casts) για όλα τα στιγµιότυπα; Το Java Community proposal (JSR 14) ενσωµατώθηκεστη Java 1.5 Περισσότερη Java 55 Generics στη Java 1.5 ( Tiger ) Υιοθετήθηκε η σύνταξη που µόλις είδαµε Προστέθηκε αυτόµατη µετατροπή boxing + unboxing Τι θα γράφαμε χωρίς αυτόματη μετατροπή Τι γράφουμε στη Java 1.5 Stack<Integer> st = Stack<Integer> st = new Stack<Integer>(); new Stack<Integer>(); st.push(new Integer(12)); st.push(12); int i = (st.pop()).intvalue(); int i = st.pop(); Περισσότερη Java 56 Οι τύποι των generics της Java ελέγχονται Μια γενική κλάση µπορεί να θελήσει να χρησιµοποιήσει λειτουργίες σε αντικείµενα ενός τύπου-παραµέτρου Παράδειγµα: PriorityQueue<T> if x.less(y) then ύο πιθανές προσεγγίσεις: C++: Κατά το χρόνο σύνδεσης (linking) ελέγχεται το κατά πόσο όλες οι λειτουργίες µπορούν να επιλυθούν Java: Οι τύποι ελέγχονται στατικά και δε χρειάζεται να γίνει κάποιος έλεγχος των generics κατά το χρόνο σύνδεσης Αυτή η προσέγγιση επιβάλλει στο πρόγραµµα να έχει πληροφορία για τον τύπο της παραµέτρου Παράδειγµα : PriorityQueue<T extends > Περισσότερη Java 57 Παράδειγµα: Πίνακας κατακερµατισµού 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 Παράδειγµα: Ουρά προτεραιότητας 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() ; Ένα τελευταίο παράδειγµα 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)
11 Υλοποίηση των Generics ιαγραφή τύπων (type erasure) Ο έλεγχος τύπων κατά τη µετάφραση χρησιµοποιεί τα generics Στη συνέχεια ο compiler απαλλοίφει τα generics µέσω διαγραφής ηλαδή µεταγλωττίζει List<T> σε List, T σε Object, και προσθέτει αυτόµατες µετατροπές τύπων (casts) Tα generics της Java δεν είναι σαν τα templates της C++ Οι δηλώσεις των generics ελέγχονται ως προς τους τύπους τους Τα generics µεταφράζονται άπαξ εν λαµβάνει χώρα κάποια στιγµιοτυποποίηση (instantiation) Ο παραγόµενος κώδικας δεν διογκώνεται Περισσότερη Java 61
Περισσότερη Java. Πολυμορφισμός υποτύπων. Person p; Διαπροσωπείες (interfaces) Περιεχόμενα
Περισσότερη Java Πολυμορφισμός υποτύπων Person p; Είναι το παραπάνω μια δήλωση ότι το p είναι μια αναφορά σε ένα αντικείμενο της κλάσης Person; Όχι ακριβώς ο τύπος Person μπορεί να περιλαμβάνει αναφορές
Διαβάστε περισσότεραΠερισσότερη Java. Franz Marc, Fate of the animals, Κωστής Σαγώνας Νίκος Παπασπύρου
Περισσότερη Java Franz Marc, Fate of the animals, 1913 Κωστής Σαγώνας Νίκος Παπασπύρου Πολυμορφισμός υποτύπων Person p; Είναι το παραπάνω μια δήλωση ότι το
Διαβάστε περισσότεραΠολυμορφισμός υποτύπων 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; Είναι το παραπάνω μια δήλωση ότι το x είναι μια αναφορά σε ένα αντικείμενο της κλάσης Person; Όχι ακριβώς ο τύπος Person μπορεί να περιλαμβάνει αναφορές
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής
Διαβάστε περισσότεραΚάποιες γενικές παρατηρήσεις:
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραWrapper Classes, Abstract Classes and Interfaces
Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13
Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις
Διαβάστε περισσότεραΠεριεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5
Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών
Διαβάστε περισσότεραΚλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΠαύλος Εφραιµίδης. Java. Κληρονοµικότητα
κληρονοµικότητα Παύλος Εφραιµίδης 1 ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά
Διαβάστε περισσότεραΚλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Παράδειγμα κληρονομικότητας Έχουμε ένα σύστημα διαχείρισης εισιτηρίων μιας συναυλίας. Το κάθε εισιτήριο έχει
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Από το προηγούμενο lab Είχαμε την κλάση Document, και δύο παραγόμενες κλάσεις: TextFile, Email Document
Διαβάστε περισσότεραΕργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
Διαβάστε περισσότεραΚληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1
Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί
Διαβάστε περισσότεραΕισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότερα(Διαφάνειες Νίκου Βιδάκη)
(Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό
Διαβάστε περισσότεραΔομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.
Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12
Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΑρχές Τεχνολογίας Λογισμικού Εργαστήριο
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?
Διαβάστε περισσότερα1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Διαβάστε περισσότεραΤο πρόγραμμα 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 υποστηρίζει
Διαβάστε περισσότεραΕργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότερα2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
Διαβάστε περισσότεραΚλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων
Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος
Διαβάστε περισσότεραΚλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα
Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραOι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:
3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται
Διαβάστε περισσότεραΑντικειµενοστραφής Προγραµµατισµός
Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του
Διαβάστε περισσότεραΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:
Διαβάστε περισσότεραΤµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους
Διαβάστε περισσότερα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 Σχεδίαση-Ανάπτυξη
Διαβάστε περισσότεραΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής
Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραΔομές Δεδομένων - Εργαστήριο 2. Λίστες
Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραυναµικές οµές εδοµένων
υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση
Διαβάστε περισσότεραΔιαγράμματα Κλάσεων στη Σχεδίαση
Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν
Διαβάστε περισσότεραΔομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας
Ουρές Προτεραιότητας Ουρά Προτεραιότητας (Priority Queue) Μια συλλογή αντικειμένων που χαρακτηρίζονται από μια συγκρίσιμη προτεραιότητα. Έχει την λογική εικόνα μιας δομής δεδομένων όπου, αντικείμενα εισέρχονται
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραWeek. 6: Java Collections
Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται
Διαβάστε περισσότεραΒασικά της γλώσσας JAVA
17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΣύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).
Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Πίνακες Εισαγωγή, σε χρόνο O(1). Αναζήτηση, σε χρόνο O(n).
Διαβάστε περισσότεραΔιάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))
Διαβάστε περισσότεραΔοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διαβάστε περισσότεραΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Αντικείμενα μέσα σε αντικείμενα Ορίζουμε κλάσεις για να ορίσουμε τύπους δεδομένων τους οποίους χρειαζόμαστε Π.χ., ο τύπος δεδομένων Date
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.
Διαβάστε περισσότεραWeek 7: Java Collection Classes
Week 7: Java Collection Classes Υλοποιήσεις Εβδοµάδα 7: Κλάσεις συλλογών δεδοµένων στην Java Τύποι συλλογών δεδοµένων Τεχνικές υλοποίησης linked Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης,
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java
Διαβάστε περισσότερα02 Αντικειμενοστρεφής Προγραμματισμός
02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΑπλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 14: Γενικός Κώδικας (Generics) Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις Συλλογές Προηγούμενο Quiz class Item private String name; public Item(String name) this.name = name; class
Διαβάστε περισσότεραpublic class ArrayStack implements Stack {
public class ArrayStack implements Stack { private static final int DEF_STACK_SIZE=2; //Array of objects private Object[] S; private int index ; // index, top, last, position // Returns the last item of
Διαβάστε περισσότεραΕισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6
Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:
Διαβάστε περισσότεραAbstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες
Διαβάστε περισσότεραΕισαγωγή στη γλώσσα Java
Εισαγωγή στη γλώσσα Java Franz Marc, Rehe im Walde (II), 1913-14 Κωστής Σαγώνας Νίκος Παπασπύρου Παράδειγμα αντικειμενοστρεφούς τρόπου σκέψης Έγχρωμα σημεία
Διαβάστε περισσότεραΕισαγωγή στη γλώσσα Java
Εισαγωγή στη γλώσσα Java Franz Marc, Rehe im Walde (II), 1913-14 Κωστής Σαγώνας Νίκος Παπασπύρου Παράδειγμα αντικειμενοστρεφούς τρόπου σκέψης Έγχρωμα σημεία
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Διαβάστε περισσότεραΟικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης
Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση
Διαβάστε περισσότεραpublic void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);
Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας
Διαβάστε περισσότερα. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014
.. Μεθοδολογία Προγραμματισμού Abstract Κλάσεις και Interfaces Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies Μαθήματα από το εργαστήριο Όταν η εκφώνηση σας ζητάει να φτιάξετε μία μέθοδο που παίρνει
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο
Διαβάστε περισσότερα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
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial
ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial Introduction Το Javadoc είναι ένα εργαλείο που παράγει αρχεία html (παρόμοιο με τις σελίδες στη διεύθυνση http://docs.oracle.com/javase/8/docs/api/index.html) από τα σχόλια
Διαβάστε περισσότεραΣύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
Διαβάστε περισσότεραΠρογράμματα με δομή Κληρονομικότητας
Προγράμματα με δομή Κληρονομικότητας Επέκταση ιεραρχίας με νέες κλάσεις Επέκταση ιεραρχίας με νέες κλάσεις Οι κλάσεις που δεν προορίζονται για δημιουργία στιγμιοτύπων, αλλά προορίζονται να χρησιμοποιηθούν
Διαβάστε περισσότεραΕξαιρέσεις (στη Java)
Εξαιρέσεις (στη Java) Vincent van Gogh, Irises, 1889 Κωστής Σαγώνας Εξαιρέσεις στη Java public class Test { public static void main(string[] args) { int i = Integer.parseInt(args[0]);
Διαβάστε περισσότεραΕργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects
Διαβάστε περισσότεραΣύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
Διαβάστε περισσότεραΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης
ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός
Διαβάστε περισσότεραΔηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ
Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Γενικευμένες κλάσεις Κληρονομικότητα Employee name hiringdate getname gethiringdate Οι παράγωγες κλάσεις κληρονομούν τα πεδία και τις μεθόδους
Διαβάστε περισσότερα