Πρότυπα Σχεδίασης. Design Patterns

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

Download "Πρότυπα Σχεδίασης. Design Patterns"

Transcript

1 Πρότυπα Σχεδίασης Design Patterns 1

2 Πρότυπα Σχεδίασης Όλα ξεκίνησαν από.. την Αρχιτεκτονική!! Christopher Alexander, The Timeless Way of Building, Oxford University Press, New York, 1979: "Είναι η ποιότητα µία αντικειµενική ιδιότητα? " Αν αποδεχθεί κανείς ότι είναι δυνατό να αναγνωρίσει και να περιγράψει ένα σχέδιο καλής ποιότητας τότε: (Alexander): Τι υπάρχει σε ένα σχέδιο καλής ποιότητας το οποίο δεν υπάρχει σε ένα σχέδιο κακής ποιότητας? Ο Alexander µελετώντας πληθώρα αρχιτεκτονικών κατασκευασµάτων, παρατήρησε ότι οι καλές κατασκευές είχαν κοινά στοιχεία µεταξύ τους Τα κοινά στοιχεία συνήθως αφορούν κοινές λύσεις ή λύσεις σε κοινά προβλήµατα O Alexander κατανόησε ότι οι δοµές δεν µπορούσαν να διαχωριστούν από το πρόβληµα το οποίο προσπαθούν να επιλύσουν. Για το λόγο αυτό αναζήτησε διαφορετικές δοµές που σχεδιάστηκαν για να επιλύσουν το ίδιο πρόβληµα 2

3 Πρότυπα Σχεδίασης Λύσεις στο πρόβληµα της οριοθέτησης και ανάδειξης µιας εισόδου: Ο Alexander ονόµασε τα κοινά στοιχεία µεταξύ των σχεδίων υψηλής ποιότητας πρότυπα (patterns) 3

4 Πρότυπα Σχεδίασης O Alexander όρισε την έννοια του προτύπου ως "Μία λύση ενός προβλήµατος µέσα σε συγκεκριµένο πλαίσιο" ( κάθε πρότυπο περιγράφει ένα πρόβληµα που εµφανίζεται συνέχεια στο περιβάλλον και στη συνέχεια περιγράφει τον πυρήνα της λύσης κατά τέτοιο τρόπο ώστε η λύση να µπορεί να εφαρµοστεί εκατοµµύρια φορές) κατά ανάλογο τρόπο µία αυλή, ορθά σχηµατισµένη, επιτρέπειστους ανθρώπους να τη ζήσουν. ένα Πρότυπο έχει πάντοτε ένα όνοµα και ένα σκοπό κυρίως, σεµίααυλή, οιάνθρωπο αναζητούν έναν ιδιωτικό εξωτερικό χώρογιανακάθονταικάτωαπότον ουρανό, να χαίρονται τον ήλιο. παρόλο που µπορεί να είναι µερικές φορές προφανές, είναι σηµαντικό να διατυπώνεται ρητά το πρόβληµα που επιλύεται 4

5 Πρότυπα Σχεδίασης ανµίααυλήείναιστενήκαιδενέχει θέα προς τα έξω, οι άνθρωποι αισθάνονται άβολα και αποµακρύνονται χρειάζονται να βλέπουν προς κάτι µεγαλύτερο και µακρινό αν οι άνθρωποι περνούν από την αυλή καθηµερινά η αυλή γίνεται οικεία και ένα φυσικό µέρος και χρησιµοποιείται επισηµαίνονται δυσκολίες µε τηναπλήλύσηκαιστησυνέχεια δίνονται οδηγίες για την επίλυση του προβλήµατος που επισηµάνθηκε Ηαξίαενόςπροτύπουείναιότι µε µικρή εµπειρία µπορεί κανείς να αξιοποιήσει τη συσσωρευµένη εµπειρία άλλων 5

6 Πρότυπα Σχεδίασης αν υπάρχει κάποιος µεταβατικός χώρος µία βεράντα µε κάλυψη αλλά ανοικτή αυτό είναι ψυχολογικά στο ενδιάµεσοτουµέσακαιέξωκαικάνει απλούστερη και ευκολότερη την πρόσβαση στην αυλή µε έναρξη το πρότυπο προκύπτουν περαιτέρω δρόµοι για τη βελτίωση της σχεδίασης 6

7 Πρότυπα Σχεδίασης Κάθε πρότυπο περιλαµβάνει: το όνοµα του προτύπου το σκοπό του προτύπου, το πρόβληµα που επιλύει τον τρόπο επίλυσης τους περιορισµούς που πρέπει να ληφθούν υπόψη 7

8 Πρότυπα Σχεδίασης Αρχές '90: Υπάρχουν προβλήµατα στο λογισµικό τα οποία επαναλαµβάνονται; Υπάρχει η δυνατότητα σχεδίασης λογισµικού µε πρότυπα; Οι Gamma, Helm, Johnson και Vlissides (Gang of Four) κατέληξανότι ηαπάντησηείναι "σαφώςναι". 8

9 Πρότυπα Σχεδίασης Οι GoF κατήρτισαν έναν κατάλογο µε 23 πρότυπα σχεδίασης δίνοντας για το καθένα: Όνοµα και Κατηγορία Σκοπό (µία φράση) Συνώνυµα Κίνητρο (παράδειγµα προβλήµατος) Εφαρµοσιµότητα (χρησιµοποιείστε το πρότυπα όταν: ) οµή (διάγραµµα κλάσεων) Συµµετέχοντες Συνεργασία 9

10 Πρότυπα Σχεδίασης Συνέπειες (επιτυγχανόµενα πλεονεκτήµατα) Υλοποίηση (language specific) Sample Code Γνωστές Χρήσεις (παραδείγµατα σε πραγµατικά συστήµατα) ΣχετιζόµεναΠρότυπα 10

11 Πρότυπα Σχεδίασης Κατηγορίες Creational: Ασχολούνται µε τη διεργασία της δηµιουργίας αντικειµένων Structural: ιαπραγµατεύονται τη σύνθεση κλάσεων/αντικειµένων Behavioral: Χαρακτηρίζουν τους τρόπους µε τους οποίους οι κλάσεις αλληλεπιδρούν και κατανέµουν τις αρµοδιότητες 11

12 Πρότυπα Σχεδίασης Οι GoF προτείνουν τις ακόλουθες στρατηγικές Design to interfaces Favor composition over inheritance Find what varies and encapsulate it 12

13 Adapter (Προσαρµογέας) Κατηγορία: Structural Σκοπός: Η µετατροπή της διασύνδεσης µιας κλάσης σε µία άλλη που αναµένει το πρόγραµµα πελάτης. Ο προσαρµογέας επιτρέπει τη συνεργασία κλάσεων, η οποία σε διαφορετική περίπτωση θα ήταν αδύνατη λόγω ασύµβατων διασυνδέσεων. Συνώνυµα: Wrapper 13

14 Adapter (Προσαρµογέας) Συχνά ο κώδικας µιας κλάσης προσφέρεται για επαναχρησιµοποίηση, αλλά αυτή δεν είναι δυνατή λόγω του ότι τα προγράµµατα που επιθυµούν να χρησιµοποιήσουν τις λειτουργίες της, αναµένουν διαφορετικήδιασύνδεση. Έστω ότι µία κλάση Σχεδίασης είναι σε θέση να σχεδιάσει γραµµές, αλλάαπαιτείωςπαραµέτρουςτιςσυντεταγµένεςστηµορφή (x1, y1, x2, y2) ενώ τα προγράµµατα πελάτες είναι σε θέση να παρέχουν τις συντεταγµένεςστηµορφή (x1, x2, y1, y2). Συνήθως τα προγράµµατα πελάτες δεν είναι δυνατόν να τροποποιηθούν (καθώς βρίσκονται ήδη εγκατεστηµένα). Η κλάση Σχεδίασης είναι επιθυµητό να χρησιµοποιηθεί χωρίς τροποποίηση (καθώς οποιαδήποτε επέµβαση στον κώδικα µιας µεθόδου είναι δυνατόν να προκαλέσει σφάλµατα στις υπόλοιπες µεθόδους). Εδώ βρίσκει εφαρµογή το πρότυπο "Προσαρµογέας". 14

15 Adapter (Προσαρµογέας) Παράδειγµα: Εφαρµογή που χειρίζεται διάφορα σχήµατα (σηµεία, γραµµές, τετράγωνα) µε ενιαίο τρόπο, δηλαδή καλεί λειτουργίες επί των σχηµάτων, αδιαφορώνταςγιατοσυγκεκριµένοείδοςσχήµατος. Τέτοιες λειτουργίες είναι η εµφάνιση του σχήµατος, ο καθορισµός του χρώµατος, η διαγραφή από την οθόνη, ο καθορισµός θέσης, το γέµισµα µεχρώµακλπ. Με άλλα λόγια, όλα τα σχήµατα θα πρέπει να ενσωµατωθούν σε µία αφηρηµένηέννοιασχήµατοςπουθαπαρέχειόλεςαυτέςτιςλειτουργίες. 15

16 Adapter (Προσαρµογέας) Προφανής αντιµετώπιση: Πολυµορφισµός: Μία αφηρηµένη κλάση ορίζει όλες τις λειτουργίες της διασύνδεσης, ενώ η υλοποίηση των λειτουργιών είναι διαφορετική για κάθε µία απότιςπαράγωγεςκλάσεις. Το πρόγραµµα πελάτης είναι σε θέση να χειρίζεται αντικείµενα της αφηρηµένης κλάσης διατηρώντας ένα δείκτη προς αυτή, ενώ κατά την εκτέλεση του προγράµµατος µεταβιβάζονται ως τιµές στον δείκτη οι διευθύνσεις συγκεκριµένων αντικειµένων των παράγωγων κλάσεων. Shape Client +setlocation() +display() +setlinecolor() +undisplay() +fill() Point Line Square +display() +undisplay() +fill() +display() +undisplay() +fill() +display() +undisplay() +fill() 16

17 Adapter (Προσαρµογέας) Ζητείται η προσθήκη δυνατότητας σχεδίασης κύκλων: Πρέπει να προστεθεί µία νέα κλάση η οποία θα κληρονοµεί από την αφηρηµένη κλάση Shape υλοποιώντας την πολυµορφική συµπεριφορά των µεθόδων που δηλώνονται στη διασύνδεση. Στο σηµείο αυτό, θα πρέπει να γραφεί ο κώδικας για τις µεθόδους display, undisplayκαι fill. Επειδή η συγγραφή των µεθόδων αυτών είναι αρκετά περίπλοκη, αρχικά πραγµατοποιείται αναζήτηση εναλλακτικής λύσης, υπό τη µορφή κάποιας κλάσηςπουήδηυλοποιείκύκλουςκαιείναιδιαθέσιµη. Έστω ότι εντοπίζεται µία τέτοια κλάση µε το όνοµα OtherCircle, η οποία διαθέτει τις ίδιες λειτουργίες µε διαφορετικά ωστόσο ονόµατα µεθόδων. Η κλάση OtherCircle δεν µπορεί να ενταχθεί απευθείας στην ιεραρχία των κλάσεων αφενός λόγω της ασυµβατότητας των µεθόδων (ονοµάτων και ενδεχοµένως παραµέτρων), καθώς και διότι στον ορισµό της δεν κληρονοµεί 17 από την κλάση Shape.

18 Adapter (Προσαρµογέας) Hλύσηστοσηµείοαυτόείναιηδηµιουργίαµιαςνέαςκλάσης Circleηοποία όντως κληρονοµεί από την Shape (και κατά συνέπεια είναι συµβατή µε τις λειτουργίες της διασύνδεσης), και η οποία περιέχει ένα αντικείµενο της κλάσης OtherCircle. Κατά αυτόν τον τρόπο, η κλάση Circle µπορεί να µεταβιβάζει τις αιτήσεις που φθάνουνσεαυτή, στοαντικείµενο OtherCircleπουµπορείνατιςικανοποιήσει. Η υπάρχουσα κλάση OtherCircle εποµένως δεν τροποποιείται, αλλά προσαρµόζεται. ιάγραµµα Κλάσεων: 18

19 Adapter (Προσαρµογέας) Shape Client +setlocation() +display() +setlinecolor() +undisplay() +fill() Point Line Square Circle OtherCircle +display() +undisplay() +fill() +display() +undisplay() +fill() +display() +undisplay() +fill() +setlocation() +display() +setlinecolor() +undisplay() +fill() 1 1 +setitslocation() +displayit() +setitslinecolor() +undisplayit() +fillit() 19

20 Adapter (Προσαρµογέας) Η αφηρηµένη κλάση Shape ορίζει την αφαίρεση ενός σχήµατος ώστε να µπορεί να χρησιµοποιηθεί από προγράµµατα-πελάτες. ύο από τις µεθόδους (setlocation και setlinecolor) είναι υλοποιηµένες ενώ οι υπόλοιπες αφήνουν την υλοποίηση στις παράγωγες κλάσεις. (Η κλάση κληρονοµεί την JComponent της Javaέτσιώστεναµπορείνασχεδιαστείσεέναπαράθυρο). Shape.java public abstract class Shape extends JComponent { public void setlocation(int x, int y) { xtopleft = x; ytopleft = y; } public void setlinecolor(color c) { linecolor = c; } public abstract void display(); public abstract void undisplay(); public abstract void fill(color c); } protected int xtopleft = 0; protected int ytopleft = 0; protected Color linecolor; 20

21 Adapter (Προσαρµογέας) Square.java public class Square extends Shape { public Square() { rect = new Rectangle(xTopLeft, ytopleft, 100, 100); } public void paint(graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D)g; g2.setcolor(linecolor); rect.setlocation(xtopleft, ytopleft); g2.draw(rect); if(fillcolor!=null) { g2.setcolor(fillcolor); g2.fillrect(xtopleft, ytopleft, 100, 100); } } public void fill(color c) { fillcolor = c; } public void display() { this.setvisible(true); } public void undisplay() { this.setvisible(false); } } private Rectangle rect; private Color fillcolor = null; 21

22 Adapter (Προσαρµογέας) Ένα πρόγραµµα πελάτης προσοµοιώνεται από τον ακόλουθο κώδικα. Στο αντικείµενο S1 της κλάσης Square µπορούννακληθούνόλεςοιµέθοδοιπουδηλώνονταιστηδιασύνδεσητης Shape. Client.java public class Client extends JFrame { public void draw(shape componenttodraw) { getcontentpane().add(componenttodraw); } public static void main(string[] args) { Client frame = new Client(); Square S1 = new Square(); S1.setLineColor(Color.BLUE); S1.setLocation(50, 70); frame.draw(s1); S1.fill(Color.ORANGE); S1.undisplay(); S1.display(); }} frame.setsize(400, 400); frame.setvisible(true); frame.setdefaultcloseoperation(jframe.exit_on_close); 22

23 Adapter (Προσαρµογέας) Υποθέτουµε ότι υπάρχει ήδη µία κλάση OtherCircle η οποία διαθέτει υλοποιηµένες όλες τις αντίστοιχες µεθόδους, µε διαφορετικές όµως υπογραφές, αποκλείοντας την απευθείας χρήση από έναν πελάτη ο οποίος γνωρίζει τη διασύνδεση της Shape. Για παράδειγµα, ένα πρόγραµµα πελάτης, µπορεί να σαρώνει µία λίστα από σχήµατα και να τα σχεδιάζει, καλώντας τις ίδιες µεθόδους (αυτές που δηλώνονται στη Shape) για όλα τα σχήµατα. Ο κώδικας της OtherCircle φαίνεται παρακάτω: 23

24 OtherCircle.java import javax.swing.*; import java.awt.*; public class OtherCircle extends JComponent { public void paint(graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D)g; g2.setcolor(linecolor); g2.drawoval(xupperleft, yupperleft, 100, 100); if(fillcolor!= null) { g2.setcolor(fillcolor); g2.filloval(xupperleft, yupperleft, 100, 100); } } //Αυτή η µέθοδος λαµβάνει τα ορίσµατα µε αντίστροφη σειρά public void setitslocation(int y, int x) { xupperleft = x; yupperleft = y; } 24

25 OtherCircle.java // ιαφορετικά ονόµατα µεθόδων και ιδιοτήτων public void setitslinecolor(color c) { linecolor = c; } public void fillit(color c) { fillcolor = c; } public void displayit() { this.setvisible(true); } public void undisplayit() { this.setvisible(false); } } private Color fillcolor = null; private int xupperleft = 0; private int yupperleft = 0; private Color linecolor; 25

26 Adapter (Προσαρµογέας) Γιατηνπροσαρµογήµιαςτέτοιαςκλάσηςστηνυπάρχουσαδιασύνδεση, δηµιουργείταιµίακλάση "Προσαρµογέας" - η οποία κληρονοµεί τη Shape και -κατά τη δηµιουργία της δηµιουργεί µε τη σειρά της ένα αντικείµενο τηςπροσαρµοζόµενηςκλάσης OtherShape. Ηκλάση Circleπουέχειτορόλοτουπροσαρµογέα, υλοποιεί όλες τις µεθόδους αποστέλλοντας κατάλληλα µηνύµατα στο προσαρµοζόµενο αντικείµενο. 26

27 Adapter (Προσαρµογέας) Γενική οµή Εφαρµογή θέλετε να χρησιµοποιήσετε µία υπάρχουσα κλάση, αλλά η διασύνδεσή της δεν συµβαδίζει µε τις ανάγκες σας. Ένας προσαρµογέας κλάσης (class adapter) χρησιµοποιεί πολλαπλή κληρονοµικότηταγιαναπροσαρµόσειµίαδιασύνδεσησεµίαάλλη. Πελάτης Στόχος +Αίτηση() Προσαρµοζόµενος +ΕιδικήΑίτηση() Προσαρµογέας +Αίτηση() ΕιδικήΑίτηση(); 27

28 Adapter (Προσαρµογέας) Ένας προσαρµογέας αντικειµένου (object adapter) βασίζεται στη σύνθεσηαντικειµένωνκαιστηδιαβίβασηµηνυµάτων (delegation). Πελάτης Στόχος +Αίτηση() Προσαρµοζόµενος +ΕιδικήΑίτηση() Προσαρµογέας προσαρµοζόµενος +Αίτηση() Προσαρµοζόµενος -> ΕιδικήΑίτηση(); 28

29 Composite (Σύνθετο) Κατηγορία: Structural Σκοπός: Η σύνθεση αντικειµένων σε δενδροειδείς δοµές για την αναπαράσταση ιεραρχιών τµήµατος-όλου. Το πρότυπο σχεδίασης "Σύνθετο" επιτρέπει στα προγράµµατα πελάτες να διαχειρίζονται µε ενιαίο τρόπο τόσο τα ανεξάρτητα αντικείµενα όσο και συνθέσεις αντικειµένων Συνώνυµα: - 29

30 Composite (Σύνθετο) Πολύ συχνά, σε µία εφαρµογή, εκτός από µεµονωµένα αντικείµενα (π.χ. Τροχός, Μηχανή, Κάθισµα), υφίστανται και σύνθετα αντικείµενα πουπεριέχουνήπεριλαµβάνουνάλλααντικείµενα (π.χ. Αυτοκίνητο). Συνήθης αντιµετώπιση: χρήση µιας σχέσης περιεκτικότητας µεταξύ της κλάσης που αντιπροσωπεύει το όλον (περικλείουσα κλάση) και των κλάσεων που αντιπροσωπεύουν τα τµήµατα. Μειονέκτηµα: εν επιτρέπει τον οµοιόµορφο χειρισµό των αντικειµένωναπόέναπρόγραµµαπελάτη. 30

31 Composite (Σύνθετο) Για παράδειγµα, µία άλλη εφαρµογή, θα πρέπει να διατηρεί δείκτες και προς αντικείµενα τύπου Τροχός, Μηχανή, Κάθισµα, αλλά και δείκτες προςαντικείµενατύπουαυτοκίνητο. Λαµβάνοντας υπόψη τους πρωταρχικούς στόχους του αντικειµενοστραφούς προγραµµατισµού, αν προστεθεί στο σύστηµα µία νέα σύνθετη κλάση (π.χ. Λεωφορείο), τότε ο κώδικας του προγράµµατος πελάτη, θα πρέπει να τροποποιηθεί για να είναι δυνατός οχειρισµόςτωννέωναντικειµένωντύπουλεωφορείο. Η αντιµετώπιση αυτού του προβλήµατος, επιτυγχάνεται µε κοµψό τρόποµετοπρότυποσχεδίασης "Σύνθετο". 31

32 Composite (Σύνθετο) Παράδειγµα: Οι εφαρµογές που σχεδιάζουν πολύπλοκα ψηφιακά κυκλώµατα VLSI αντιµετωπίζουν οποιαδήποτε οντότητα ως αντικείµενο. Κάθε αντικείµενο έχει ορισµένες λειτουργίες, µεταξύ αυτών η σχεδίασητου. Ορισµένα από τα αντικείµενα είναι πρωταρχικά και δεν αναλύονται περαιτέρω (π.χ. λογικές πύλες AND, OR, NOT), ενώ άλλα αντικείµενα είναι σύνθετα και αποτελούνται από πρωταρχικές πύλες (π.χ. ένας πλήρηςαθροιστής Full Adder). 32

33 Composite (Σύνθετο) Παράδειγµα: Ο χρήστης είναι σε θέση να δηµιουργήσει οποιαδήποτε σύνθετη οντότητα και να την προσθέσει στην εφαρµογή. Η σχεδίαση ενός σύνθετου αντικειµένου ουσιαστικά συνίσταται στη σχεδίαση των επί µέρουςτµηµάτωντου. Για το λόγο αυτό, είναι επιθυµητή η ενιαία αντιµετώπιση όλων των αντικειµένων. Το πρότυπο σχεδίασης "Σύνθετο", επιτρέπει τον αναδροµικό ορισµό περιεκτικότητας, ώστε οι πελάτες να µην αντιλαµβάνονται τη διαφορά µεταξύπρωταρχικώνκαισύνθετωναντικειµένων. 33

34 Composite (Σύνθετο) Το σηµείο κλειδί στο πρότυπο σχεδίασης "Σύνθετο" είναι η ύπαρξη µιας αφηρηµένης κλάσης που αναπαριστά τόσο πρωταρχικές κλάσεις όσοκαιπερικλείουσεςκλάσεις. Για τη συγκεκριµένη εφαρµογή, η αφηρηµένη κλάση είναι η κλάση Εξάρτηµα. Θα πρέπει να σηµειωθεί, ότι η κλάση Εξάρτηµα που εισάγεται από το πρότυπο, δεν έχει αντιστοιχία µε οποιαδήποτε φυσική έννοια του πραγµατικού κόσµου. 34

35 Composite (Σύνθετο) Client Component +draw() +add(component)() +remove(component)() AND OR NOT Circuit components +draw() +draw() +draw() +draw() +add(graphic)() +remove(graphic)() for all g in Component g.draw( ) 35

36 Composite (Σύνθετο) Θέτοντας τις λειτουργίες χειρισµού των αντικειµένων που εµπεριέχονται σε µία περικλείουσα κλάση (add, remove) στην κλάση Component, όλα τα αντικείµενα αντιµετωπίζονται µε τον ίδιο ακριβώς τρόπο, εξασφαλίζοντας διαφάνεια. Ωστόσο δηµιουργείται το εξής πρόβληµα: Για τις κλάσεις φύλλα (όπως οι AND, OR, NOT) είναι δυνατόν να κληθούν οι λειτουργίες add, remove οι οποίες δεν έχουν νόηµα. Εναλλακτικά, οι λειτουργίες αυτές είναι δυνατόν να δηλωθούν στην κλάση Circuit, ώστε οποιαδήποτε απόπειρα να προστεθούν ή να διαγραφούν αντικείµενα σε αντικείµενα τύπου AND, OR ή NOT να ανιχνευθείκατάτηµεταγλώττιση, εξασφαλίζονταςασφάλεια. Ωστόσο, στην περίπτωση αυτή, οι πρωταρχικές κλάσεις και οι σύνθετες κλάσεις έχουν διαφορετική διασύνδεση 36

37 Composite (Σύνθετο) class Component { public: Component(string text); virtual void draw() = 0; virtual void add(component*) {}; virtual void remove(component*) {}; protected: string identifier; }; Component::Component(string text) { identifier = text; } //αµιγώς υπερβατική -> //δεν υλοποιούνται αντικείµενα 37

38 Composite (Σύνθετο) Μία πρωταρχική κλάση, όπως µία κλάση πύλης AND, δηλώνεται ως παράγωγη της κλάσης Component: class AND : public Component { public: AND(string text); virtual void draw(); }; void AND::draw() { cout << "AND " << identifier << " is being drawn" << endl; } 38

39 Composite (Σύνθετο) Η κλάση Circuit είναι µία περικλείουσα κλάση η οποία είναι δυνατόν να περιέχει αντικείµενα: - πρωταρχικών κλάσεων (π.χ. ένα κύκλωµα που αποτελείται από πύλες), - άλλων σύνθετων κλάσεων (π.χ. ένα κύκλωµα που αποτελείται από άλλα κυκλώµατα) - αντικείµενα και των δύο κατηγοριών (ένα κύκλωµα που αποτελείται από πύλεςκαιάλλακυκλώµατα). Για το λόγο αυτό, µία από τις ιδιότητες υλοποιεί έναν περιέχοντα (container), όπως ένα διάνυσµα (vector), ουρά (queue), διπλά συνδεδεµένη λίστα (list), στοίβα (stack) κ.ο.κ, που περιλαµβάνονται στην πρότυπη βιβλιοθήκη της C++ (STL): 39

40 Composite (Σύνθετο) class Circuit : public Component { public: Circuit(string text); virtual void draw(); virtual void add(component*); virtual void remove(component*); private: vector<component*> components; }; 40

41 Composite (Σύνθετο) Η λειτουργία draw χρησιµοποιεί έναν επαναλήπτη (Iterator) για να διατρέξει όλα τα στοιχεία του διανύσµατος components, και να καλέσει µέσω αυτού τη λειτουργία draw του κάθε αντικειµένου που περιλαµβάνεται: void Circuit::draw() { cout <<"Circuit "<<identifier<< " is being drawn" << endl; } std::vector<component*>::iterator i; for(i=components.begin(); i!=components.end(); i++) (*i)->draw(); 41

42 Composite (Σύνθετο) Οι λειτουργίες add και remove εισάγουν και διαγράφουν αντικείµενα τύπου Component (άρα οτιδήποτε) από το διάνυσµα που είναι αποθηκευµένο στο µέλος δεδοµένων components: void Circuit::add(Component* comp) { components.push_back(comp); } void Circuit::remove(Component* comp) { vector<component*>::iterator i; for(i=components.begin(); i!=components.end(); i++) if((*i) == comp) break; } components.erase(i); 42

43 Composite (Σύνθετο) Με τη χρήση του ανωτέρου προτύπου είναι πλέον δυνατή η δηµιουργία οποιουδήποτε πρωταρχικού ή σύνθετου αντικειµένου και ο χειρισµός τους µε ενιαίοτρόπο: int main() { AND G1("Gate1"); AND G2("Gate2"); Circuit C1("Circuit1"); C1.add(&G1); C1.add(&G2); AND G3("Gate3"); Circuit C2("Circuit2"); C2.add(&G3); C2.add(&C1); G1.draw(); C2.draw(); return 0; } //προσθήκη απλού στοιχείου //προσθήκη σύνθετου στοιχείου //κοινή διασύνδεση 43

44 Composite (Σύνθετο) Γενική οµή Εφαρµογή Το πρότυπο σχεδίασης "Σύνθετο" χρησιµοποιείται όταν: θέλετε τα προγράµµατα πελάτες να µπορούν να χειρίζονται µεµονωµένα αντικείµενα και σύνθετα αντικείµενα (συλλογές από άλλα αντικείµενα) µε τον ίδιο τρόπο Πελάτης Συστατικό +λειτουργία() +προσθήκη(συστατικό)() +διαγραφή(συστατικό)() Φύλλο +λειτουργία() Σύνθετο +λειτουργία() +προσθήκη(συστατικό)() +διαγραφή(συστατικό)() συστατικά for all g in συστατικά g.λειτουργία( ) 44

45 45

46 46

47 47

48 Έστω ένα σύστηµα διαχείρισης βαθµολογιών, όπως παρουσιάζεται από τον κώδικα και το διάγραµµα κλάσεων. Σε αυτό το σύστηµα προσθέστε τις παρακάτω λειτουργίες: Έναµάθηµαµπορείναείναιεργαστηριακό, θεωρίας ή συνδυασµό των παραπάνω, ο βαθµός προκύπτει µε διαφορετικό τρόπο για το καθένα. 48

49 void Professor::addGrade(int student_id, Course c, Grade g) { // Let courseid be the id of the course under study c = teachedcourses.findcourse(courseid) // Let grade_ be the grade of the corresponding student g = Grade (grade_); institution.setgrade(student_id, c, g); } void Institution::setGrade(int student_id, Course c, Grade g) { Student s = users.finduser(student_id); bool success = s.setgrade(c,g); if (success==true) users.alteruser(student_id,s); else; // message } bool Student::setGrade(Course c, Grade g) { bool s = courses.findcourse(c.getid()); if (s == false) return false; else { courses.setgrade(c,g); return true; } } void courselist::setgrade(course c, Grade g) { Course c_ = new CourseWithEvaluation(c); c_.setgrade(g); altercourselist(c.getid(), c_); } 49

50 50

51 51

52 Έστω ένα σύστηµα ταξιδιωτικού γραφείου, όπως παρουσιάζεται από το παρακάτω διάγραµµα κλάσεων. Σε αυτό το σύστηµα προσθέστε τις παρακάτω λειτουργίες: Ο Ταξιδιωτικός Πράκτορας θα µπορεί να παίρνει από το σύστηµα εκτυπώσεις σχετικά µε τους εγγεγραµµένους πελάτες σε κάθε πακέτο και λίστα µε τις προσφορές που έχουν δηµιουργηθεί µεµονωµένα από τους πελάτες. Λαµβάνοντας υπ όψη ότι οι ιδιότητες departure και destination περιλαµβάνουν πληροφορίες της ίδιας κατηγορίας, επιθυµητή είναι η δηµιουργία µιας νέας κλάσης Location (τοποθεσία). Ο ορισµός του µέσου µεταφοράς που χρησιµοποιήθηκε θα πρέπει να γίνετεµέσωτωνκλάσεων Transport, Airplane, Train, Ship, Bus. Θα πρέπει στο νέο σύστηµα να υπάρχουν πληροφορίες σχετικά µε τα ξενοδοχεία στον τόπο παραµονής και αυτόµατος υπολογισµός αξίας στη κλάση VacationPackage 52

53 53

54 54

Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης

Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης. Πρότυπα Σχεδίασης Design Patterns Όλα ξεκίνησαν από.. την Αρχιτεκτονική!! Christopher Alexander, The Timeless Way of Building, Oxford University Press, New York, 1979: "Είναι η ποιότητα µία αντικειµενική ιδιότητα? " Αν

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

ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ. 6.1 Εισαγωγή

ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ. 6.1 Εισαγωγή ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ 6.1 Εισαγωγή Τα προβλήματα που αντιμετωπίζει ένας προγραμματιστής κατά τη διάρκεια σχεδίασης και υλοποίησης ενός συστήματος λογισμικού, πολύ σπάνια εμφανίζονται για πρώτη φορά μόνο στο

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

Μοτίβα Σχεδίασης (Design Patterns)

Μοτίβα Σχεδίασης (Design Patterns) Ενότητα 6 Μοτίβα Σχεδίασης (Design Patterns) Ορισµοί βασικές έννοιες. Σηµαντικά µοτίβα σχεδίασης: Παρατηρητής (Observer). Πρόσοψη (Façade). Προσαρµογέας (Adapter). Πληρεξούσιος (Proxy). Μοναχοπαίδι (Singleton).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΗ

16 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΗ ΕΙΣΑΓΩΓΗ Ο αντικειµενοστρεφής προγραµµατισµός (object-oriented programming) έχει αναχθεί την τελευταία δεκαετία σε εξαιρετικά δηµοφιλή τεχνολογία ανάπτυξης λογισµικού. Το γεγονός αυτό αποδεικνύεται από

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

Κληρονομικότητα. Παύλος Εφραιμίδης 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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

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

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

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

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

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

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

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

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

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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης 14η ιάλεξη Προχωρημένα θέματα σχεδίασης 1 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

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

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

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

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

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

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

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

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

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

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

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

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

Πρότυπα και διανύσματα

Πρότυπα και διανύσματα Πρότυπα και διανύσματα Πρότυπα συναρτήσεων Πρότυπα κλάσεων Παραδείγματα ιανύσματα της καθιερωμένης C++ Επαναλήπτες σε διανύσματα 1 Πρότυπα συναρτήσεων Το πρότυπο (template) είναι μια αφηρημένη συνταγή

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

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

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 4 ο Εργαστήριο -

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 4 ο Εργαστήριο - ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 4 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

ηµιουργία ιαλογικών Προγραµµάτων για το Web

ηµιουργία ιαλογικών Προγραµµάτων για το Web ηµιουργία ιαλογικών Προγραµµάτων για το Web Βοηθητικές Εφαρµογές (). Οι βασικές µέθοδοι των Βοηθητικών Εφαρµογών. Η µέθοδος init(). Οι µέθοδοι start() και stop(). Η µέθοδος paint(). Η µέθοδος destroy().

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

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

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

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

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

11β Δομικά πρότυπα σχεδίασης

11β Δομικά πρότυπα σχεδίασης 11β Δομικά πρότυπα σχεδίασης Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Δομικά πρότυπα

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

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

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

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

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

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

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

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

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

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

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

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

Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός

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

POINTERS, AGGREGATION, COMPOSITION

POINTERS, AGGREGATION, COMPOSITION POINTERS, AGGREGATION, COMPOSITION POINTERS TO OBJECTS Η κλάση mystring class mystring private: char *s; int size; public: mystring(const char *); ~mystring(); char *GetString(); int GetSize(); ; mystring::mystring(const

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη 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.

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

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

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

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

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

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

Προσομοίωση παρακολούθησης πληθυσμών αλεπούδων και κουνελιών

Προσομοίωση παρακολούθησης πληθυσμών αλεπούδων και κουνελιών Άλλες τεχνικές αφαίρεσης Προσομοίωση παρακολούθησης πληθυσμών αλεπούδων και ρ μ η ρ η ης η μ κουνελιών Άλλες τεχνικές αφαίρεσης public class Fox { private static final int BREEDING_AGE = 10; private static

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 14η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Εικονικές μέθοδοι και πολυμορφισμός με χρήση δεικτών ή αναφορών. Εικονικοί

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

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

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

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

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

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

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

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

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

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

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

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

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

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Σχεδίαση Κλάσεων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.11.19 Εισαγωγή 2 ιαρκής συντήρηση και επέκταση λογισµικού Οι εταιρίες συνήθως συντηρούν, επεκτείνουν

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

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

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2016-2017 ΕΡΓΑΣΙΑ 1 (JAVA) Παράδοση 26/4/2017 Στα πλαίσια της εργασίας θα υλοποιηθεί ένα απλοϊκό πρόγραμμα κρατήσεων Ξενοδοχείων. Για απλοποίηση θα περιοριστούμε

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων class Person { private String name; public Person(String name){ this.name = name; public String getname(){ return name; class Car { private

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

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006) exercise 6new_10 12/5/2008 12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006) 12.6.1. Περιγραφή Θεωρήστε την γραφική διεπαφή της αριθµοµηχανής των MS Windows. Μια παρόµοια διεπαφή (δες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Τεχνολογία Λογισμικού 8ο Εξάμηνο 2018 19 Unified Modeling Language II Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Μοντελοποίηση δομής Διαγράμματα κλάσεων Class diagrams

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

java.awt Font Γραµµατοσειρές Color Χρώµατα

java.awt Font Γραµµατοσειρές Color Χρώµατα Οι κλάσεις Font και Color Η κλάση Font Η κλάση Color Χρήση Γραφικών Σχεδίαση Γραµµών Σχεδίαση Ορθογωνίων Σχεδίαση Ελλείψεων και Κύκλων Σχεδίαση Τόξων Σχεδίαση Πολυγώνων Σχεδίαση Γραµµών µε ιαφορετικά Πλάτη

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας ρ. Πάνος Φιτσιλής Περιεχόµενα Βασικές έννοιες αντικειµενοστεφούς τρόπου ανάπτυξης Τι είναι κλάση Τι είναι αντικείµενο 2 Βασικές

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

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

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

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

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

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