Bridge (Γέφυρα) Πρότυπα Σχεδίασης

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

Download "Bridge (Γέφυρα) Πρότυπα Σχεδίασης"

Transcript

1 Πρότυπα Σχεδίασης Κατηγορία: Structural Σκοπός: Η αποσύνδεση µιας αφαίρεσης από την υλοποίησή της, ώστε να µπορούν να µεταβάλλονται ανεξάρτητα. Συνώνυµα: Handle/Body Design Patterns 1 2 Όταν µία αφαίρεση µπορεί να έχει περισσότερες από µία υλοποιήσεις, ο συνήθης τρόπος οργάνωσης είναι µε τη χρήση κληρονοµικότητας. Με τον όρο αφαίρεση νοείται µία αφηρηµένη κλάση που ορίζει µία διασύνδεση (ένα σύνολο υπογραφών), ενώ υλοποιήσεις είναι οι συγκεκριµένες παράγωγες κλάσεις οι οποίες υλοποιούν τις µεθόδους τηςαφηρηµένηςκλάσεις. Πρόβληµα: Αφαίρεση και υλοποιήσεις συνδέονται µόνιµα, καθιστώντας δύσκολη την επέκταση, τροποποίηση και επαναχρησιµοποίησηαφαιρέσεωνκαιυλοποιήσεωνανεξάρτητα. 3 Τοπρότυπο "Γέφυρα" είναισχετικάδύσκολοστηνκατανόησήτου. Χρησιµοποιείται ωστόσο σε πληθώρα περιπτώσεων όπου εντοπίζονται: Μεταβολές στην αφαίρεση µιας έννοιας Μεταβολές στον τρόπο υλοποίησης της έννοιας αυτής Η Γέφυρα αντίκειται επίσης στη συνήθη τάση χειρισµού αντίστοιχων καταστάσεων µόνο µε κληρονοµικότητα. Ικανοποιεί όµως δύο από τους βασικούς κανόνες της αντικειµενοστραφούς κοινότητας: "Εντοπίστε αυτό που µεταβάλλεται και ενσωµατώστε το", και "προτιµήστε σύνθεση αντικειµένων από κληρονοµικότητα κλάσεων". 4

2 Θεωρούµε µία εφαρµογή η οποία χειρίζεται τις πληρωµές τεχνικών υπαλλήλων (TechEmployees). Η πληρωµή των υπαλλήλων είναι δυνατόν να πραγµατοποιείται είτεµεβάσητοµηνιαίοµισθό, είτε µε βάση τον αριθµό ωρών εργασίας ανά µήνα και την αντίστοιχηαµοιβήανάώρα. Ο υπολογισµός του µισθού, κρατήσεων κλπ πραγµατοποιείται από δύοανεξάρτηταπρογράµµατα, πουαντιστοιχούνστιςκλάσεις Pay1 και Pay2. Η εφαρµογή θα πρέπει να είναι σε θέση να λειτουργήσει µε υπάλληλο οποιασδήποτε κατηγορίας πληρωµής, αλλά δεν οφείλει να γνωρίζειεκτωνπροτέρωντοντρόποπληρωµήςκάθευπαλλήλου. Οι υπάλληλοι θα σχετίζονται µε συγκεκριµένο τρόπο πληρωµής κατά την υλοποίηση των αντικειµένων τους, και κατά συνέπεια είναι λογικό η εφαρµογή να διατηρεί έναν δείκτη προς µία αφηρηµένη κλάση Τεχνικός Υπάλληλος από την οποία θα κληρονοµούν οι δύο συγκεκριµένες κατηγορίες µε βάση τον τρόπο πληρωµής. Η κάθε κατηγορία διατηρεί δείκτη προς την αντίστοιχη κλάση υπολογισµού τουµισθού. 5 6 Client TechEmployee TechEmployee1 TechEmployee2 Η τροποποίηση των απαιτήσεων είναι αναπόφευκτη: Ζητείται ο εµπλουτισµός της εφαρµογής, ώστε να µπορεί να χειρίζεται και την πληρωµή πωλητών (SalesEmployees), οι οποίοιείναιεπίσηςδυνατόνναπληρώνονταιµεοποιονδήποτεαπότουςδύοτρόπους. Η προφανής αντιµετώπιση του προβλήµατος από έναν αναλυτή αντικειµενοστραφών συστηµάτωνείναιηχρήσηκληρονοµικότητας. Ορίζονταςµίαεπιπλέοναφηρηµένηκλάση, τύπου Υπάλληλος, είναι δυνατόν να κληρονοµούν οι δύο ειδικές κατηγορίες υπαλλήλων, ώστε η εφαρµογή να συνεχίσει να µπορεί να χειρίζεται οποιονδήποτε υπάλληλο. Η ανάλυση αυτή, οδηγεί στο διάγραµµα κλάσεων του σχήµατος PayPerMonth PayPerHour 7 8

3 Client Employee TechEmployee SalesEmployee TechEmployee1 TechEmployee2 SalesEmployee1 SalesEmployee2 PayPerMonth PayPerHour Πολυπλοκότητα του σχεδίου: Αν υπάρχει µεταβολή στην υλοποίηση, όπως για παράδειγµα αν προστεθεί ένας επιπλέον τρόπος πληρωµής (π.χ. ανά τεµάχιο), ο αριθµός των συγκεκριµένων κλάσεων που αναπαριστούνκατηγορίεςυπαλλήλων/τρόπωνπληρωµής, θααυξηθείσεέξι. Αν µεταβληθεί η αφαίρεση, όπως για παράδειγµα αν προστεθεί µία επιπλέον κατηγορία υπαλλήλου, οαριθµόςτωνκλάσεωνεπίσηςθααυξηθείσηµαντικά. Η εκρηκτική αυτή αύξηση του αριθµού των κλάσεων στο σύστηµα, προκαλείται διότι η αφαίρεση (οι κατηγορίες των Υπαλλήλων) και οι υλοποιήσεις (οι διαφορετικοί τρόποι πληρωµών) έχουν υψηλή σύζευξη. Κάθε τύπος Υπαλλήλου πρέπει να γνωρίζει την κλάση πουυπολογίζειτηνπληρωµήτου. Ο στόχος του προτύπου σχεδίασης "Γέφυρα" είναι ο διαχωρισµός των µεταβολών στην αφαίρεση από τις µεταβολές στην υλοποίηση, ώστε ο αριθµός των κλάσεων να αυξάνει γραµµικά Στρατηγική: εντοπισµός των εννοιών που µεταβάλλονται και ενσωµάτωσή τους επιλογήσύνθεσηςστηθέσητηςκληρονοµικότητας. Employee Pay Στη συγκεκριµένη εφαρµογή µεταβάλλονται οι έννοιες του Υπαλλήλου (Employee) και του Τρόπου Πληρωµής (Pay). Η ενσωµάτωση των εννοιών που µεταβάλλονται επιτυγχάνεται µε τη χρήση αφηρηµένων κλάσεων για κάθε έννοια. Οι διάφορες έννοιες πλέον αναπαριστώνται ως παράγωγες κλάσεις αυτών των αφηρηµένων κλάσεων. TechEmployee SalesEmployee PayPerMonth PayPerHour Το ερώτηµα που τίθεται είναι µε ποιο τρόπο οι δύο αυτές οµάδες κλάσεων θα συσχετιστούν µεταξύ τους. Η κληρονοµικότητα ωστόσο πρέπει να αποφευχθεί διότι η εισαγωγή ενός επιπλέον επιπέδου δηµιουργείταπροβλήµαταπουσυζητήθηκανπροηγουµένως. Ακολουθώντας τον κανόνα που επιβάλλει να προτιµηθεί η σύνθεση, επιλέγεται η επιλογή µιας σχέσης περιεκτικότηταςτουτρόπουπληρωµής (Pay) στηνέννοιατουυπαλλήλου (Employee)

4 TechEmployee Employee Αφαίρεση Υπάλληλος SalesEmployee PayPerMonth Pay Υλοποίηση Πληρωµής PayPerHour Πλεονεκτήµατα: Οι υλοποιήσεις δεν είναι µόνιµα συσχετισµένες µε µία διασύνδεση. Η υλοποίηση µιας αφαίρεσης µπορεί να διαµορφώνεται ή και να τροποποιείται κατά το χρόνο εκτέλεσης. Στο παράδειγµα, ένα αντικείµενο τύπου TechEmployee µπορεί κατά την εκτέλεση του προγράµµατος να συσχετιστεί µε τον τρόπο πληρωµής ανά ώρα και στη συνέχεια να τροποποιηθείοτρόποςπληρωµήςτουσεπληρωµήανάµήνα. Οποιαδήποτε αλλαγή στις υλοποιήσεις, δεν απαιτεί µεταγλώττιση των κλάσεων στην ιεραρχίατηςαφαίρεσηςήτωνπρογραµµάτωνπουτιςχρησιµοποιούν. Οποιαδήποτε από τις δύο ιεραρχίες κλάσεων (Αφαίρεση και Υλοποίηση) µπορεί να επεκταθεί (προσθέτοντας περισσότερα επίπεδα) µε τρόπο ανεξάρτητο Κατηγορία: Creational Πελάτης Σκοπός: Η εξασφάλιση ότι µία κλάση θα έχει µόνο ένα στιγµιότυπο και παρέχει ένα καθολικό σηµείο πρόσβασης σε αυτό. Αφαίρεση υλοπ Υλοποίηση Συνώνυµα: - +Λειτουργία() +ΥλοπΛειτουργία() υλοπ -> ΥλοπΛειτουργία(); ΕκλεπτυσµένηΑφαίρεση ΣυγκεκριµένηΥλοποίησηΑ +ΥλοπΛειτουργία() ΣυγκεκριµένηΥλοποίησηΒ +ΥλοπΛειτουργία() 15 16

5 Κλάσεις και στιγµιότυπα: Σχέση ένα-προς-πολλά. Τα αντικείµενα δηµιουργούνται δεσµεύοντας χώρο στη µνήµη όποτε κρίνεται σκόπιµο καιδιαγράφονταιαπότηµνήµηότιτερµατιστείηχρήσητους. Ορισµένες φορές, απαιτείται η ύπαρξη κλάσεων από τις οποίες παράγεται ένα µόνο αντικείµενο. Το αντικείµενο αυτό συνήθως δηµιουργείται κατά την έναρξη της εφαρµογής και διαγράφεται µε το πέραςτης. Ο ρόλος του µοναδικού αυτού αντικειµένου είναι η διαχείριση των υπολοίπων αντικειµένων της εφαρµογής και για το λόγο αυτό, αποτελεί λογικό σφάλµα να δηµιουργηθούν περισσότερα του ενός τέτοια αντικείµενα-διαχειριστές (managersήcontrollers). 17 Το πρότυπο σχεδίασης "Μοναδιαίο", εξασφαλίζει τη δηµιουργία ενός και µόνο αντικειµένου, περιλαµβάνοντας µία ειδική µέθοδο κατασκευής στιγµιοτύπων: Όταν καλείται αυτή η µέθοδος, ελέγχει αν κάποιο αντικείµενο έχει ήδη δηµιουργηθεί. Αν ναι, η µέθοδος επιστρέφει απλώς έναν δείκτη προς το υπάρχον αντικείµενο. Αν όχι, η µέθοδος δηµιουργεί ένα νέο αντικείµενο και επιστρέφει δείκτη προς αυτό. Για να εξασφαλισθεί ότι αυτός είναι ο µοναδικός τρόπος δηµιουργίας αντικειµένων από αυτή την κλάση, ο κατασκευαστής της κλάσης δηλώνεται ως προστατευµένος (protected) ή ιδιωτικός (private). Με τον τρόπο αυτό, δεν είναι δυνατόν να δηµιουργηθεί ένα αντικείµενο, χωρίς να κληθεί η παραπάνω ειδική µέθοδος. 18 Παράδειγµα: Μοντέλοµιας CPU. Πολλοί καταχωρητές γενικής χρήσης, µόνο ένας συσσωρευτής (Accumulator). Η εφαρµογή πρέπει να εξασφαλίσει ότι δεν θα δηµιουργηθούν πέραν του ενός τέτοιοι συσσωρευτές και ότι οι λειτουργίες του καταχωρητή θαείναικαθολικάπροσπελάσιµες. 19 Εφαρµογή του προτύπου "Μοναδιαίο" και ορίζοντας στην κλάση Accumulator µία στατική λειτουργία getinstance η οποία δηµιουργείένααντικείµενοµόνοόταναυτόδενυφίσταται. Η λειτουργία είναι δηλωµένη στατική, έτσι ώστε να µπορεί να κληθείκαιπριναπότηνκατασκευήτουµοναδικούαντικειµένου. Η κλάση περιλαµβάνει ένα στατικό µέλος instance, δείκτη προς το µοναδικό αντικείµενο (όσο αυτό δεν υφίσταται, η τιµή του δείκτη είναι NULL). Η λειτουργία getinstance σε περίπτωση που η τιµή του δείκτη instanceείναι NULLδηµιουργείένααντικείµενοτηςκλάσης.. Σεπερίπτωσηπουοδείκτηςέχειήδηµίατιµή, ηλειτουργίααπλώς επιστρέφειτηντιµήτου. 20

6 class Accumulator { public: static Accumulator* getinstance(); protected: Accumulator(); private: static Accumulator* instance; ; Accumulator* Accumulator::instance = 0; Lazy Initialization: Η τιµή που επιστρέφει η µέθοδος, δεν δηµιουργείται µέχρι την πρώτη κλήση της. Αν εποµένως ένα µοναδιαίοαντικείµενοδενχρησιµοποιηθεί, δενδηµιουργείται. Στο παρακάτω πρόγραµµα, οι δύο εντολές printf επιστρέφουν την ίδια διεύθυνση για τους δείκτες A και A1. int main() { Accumulator* A; A = Accumulator::getInstance(); Accumulator* Accumulator::getInstance() { if(instance == 0) instance = new Accumulator; return instance; 21 Accumulator* A1; A1 = Accumulator::getInstance(); printf("a address: %p\n", A); printf("a1 address: %p\n", A1); return 0; 22 Aπλότητα: οποιαδήποτε κλάση να µετατραπεί σε µοναδιαία. Πλεονέκτηµα: σε περίπτωση δηµιουργίας παράγωγων κλάσεων από µία µοναδιαία κλάση, κάθε απόγονος µπορεί να είναι επίσης µοναδιαία κλάση αν προστεθούν και σε αυτές η στατική ιδιότητα και µέθοδος. Για παράδειγµα, αν υπάρχουν ειδικές κατηγορίες συσσωρευτών από τις οποίες µπορεί να επιλέξει ο σχεδιαστής, κάθε κατηγορία µπορεί να κληρονοµεί από την κλάση Accumulator. Καθώς η ιδιότητα instance είναι δείκτης προς αντικείµενα τύπου Accumulator, η µέθοδος getinstance µπορεί να αναθέσει στην instance την τιµή ενόςδείκτηπροςοποιαδήποτεπαράγωγηκλάση. -στιγµιότυπο -δεδοµένο Μοναδιαίο +υλοποίηση_στιγµιοτύπου() +λειτουργία() +λήψη εδοµένου() return στιγµιότυπο 23 24

7 Visitor (Επισκέπτης) Visitor (Επισκέπτης) Υλοποιεί τη λεγόµενη "διπλή αποστολή" (double dispatch ή dual dispatch). Τα µηνύµατα στον OOP κατά κανόνα επιδεικνύουν συµπεριφορά που αντιστοιχεί στην "απλή αποστολή": -η λειτουργία που εκτελείται εξαρτάται: - από το όνοµα της αίτησης - τον τύπο του (µοναδικού) αποδέκτη Στη "διπλή αποστολή" η λειτουργία που εκτελείται εξαρτάται: -απότοόνοµατηςαίτησηςκαι - τον τύπο δύο αποδεκτών (στο συγκεκριµένο πρότυπο από τον τύπο του "Επισκέπτη" και τον τύπο του στοιχείου που 25 επισκέπτεται). Παράδειγµα: εφαρµογήηοποίαδιαχειρίζεταιτοεισόδηµα (Income) και τις µέρες αδείας (Vacation Days) των υπαλλήλων µιας εταιρείας Technician +getincome() Employee -name -income -vacationdays +getvacationdays() AdministrativeEmployee -bonus +getincome() donwload αρχικό κώδικα από macedonia.uom.gr 26 Visitor (Επισκέπτης) Visitor (Επισκέπτης) Νέες απαιτήσεις: Υποθέτουµε ότι η εταιρεία εφαρµόζει µία πολιτική τροποποίησης των µισθών και αδειών σε τακτά χρονικά διαστήµατα. Η τροποποίηση των κλάσεων είναι υπαρκτή δυνατότητα, αλλά δεν είναιρεαλιστική. Φιλοσοφία: προσθήκη λειτουργικότητας χωρίς την αλλαγή του κώδικα υπαρχόντωνκλάσεων. Υλοποίηση: ηµιουργίαµίαςιεραρχίαςκλάσεωνεπισκέπτη (Visitor class hierarchy) η οποία ορίζει αµιγώς υπερβατές µεθόδους visit() στην αφηρηµένη κλάση βάσης. Κάθε µέθοδος visit() λαµβάνει µία µοναδική παράµετρο έναν δείκτη ή αναφορά προς µία κλάση της αρχικήςιεραρχίας. 27 Σχεδίαση: 1ο Στάδιο: Κάθε νέα λειτουργία µοντελοποιείται ως παράγωγος κλάσηςτηςιεραρχίαςτωνεπισκεπτών. Οιαφηρηµένεςµέθοδοι visit() υλοποιούν την επιθυµητή λειτουργικότητα για τη συγκεκριµένη κλάση πουδέχονταιωςπαράµετρο. Πώς λαµβάνει κάθε κλάση "Επισκέπτης" το δείκτη ή την αναφορά προς το στοιχείο που καλείται να εµπλουτίσει µε νέα λειτουργικότητα? 2ο Στάδιο: προσθήκη αφηρηµένης µεθόδου accept() στη βασική κλάση της πρωτότυπης ιεραρχίας. Η accept() λαµβάνει έναν δείκτη προς την αφηρηµένη κλάση βάσης της ιεραρχίας των Επισκεπτών. Κάθε στοιχείο της πρωτότυπης ιεραρχίας, υλοποιεί την accept() καλώντας τη µέθοδο visit() του στιγµιοτύπου των Επισκεπτών που 28 τηςδόθηκεωςπαράµετρος, περνώνταςτον "this" pointer.

8 Visitor (Επισκέπτης) Visitor (Επισκέπτης) Εφαρµογή: όταν ο πελάτης χρειάζεται να προσθέσει µία λειτουργία: Βήµα 1ο: δηµιουργεί ένα στιγµιότυπο του αντικειµένου Επισκέπτη που αφοράστησυγκεκριµένηλειτουργικότητα. Βήµα 2ο: καλεί τη µέθοδο accept() σε κάθε στοιχείο της πρωτότυπης ιεραρχίας που επιθυµεί να εµπλουτίσει περνώντας ως όρισµα το αντικείµενοεπισκέπτη. Η µέθοδος accept() µέσω της "διπλής αποστολής" καθοδηγεί τη ροή του ελέγχου στην κατάλληλη κλάση Visitor και στη συνέχεια στην εκτέλεσητηςλειτουργικότηταςστηνεπιθυµητήαρχικήκλάση. 29 ιάγραµµα UML: Technician +getincome() Employee -name -income -vacationdays +getvacationdays() +accept(visitor)() -bonus +getincome() public void accept(visitor v) { v.visit(this); AdministrativeEmployee Visitor +visit(technician)() +visit(administrativeemployee)() IncomeVisitor VacationDaysVisitor 30 Visitor (Επισκέπτης) Visitor (Επισκέπτης) Παρατήρηση: Γενική οµή - Εφαρµογή: Η προσθήκη νέων µεθόδων είναι πλέον σχετικά εύκολη αρκεί η προσθήκη µιας νέας υποκλάσης στην ιεραρχία των Επισκεπτών. Ωστόσο, αν οι κλάσεις στην αρχική ιεραρχία δεν είναι σταθερές, τότε ο συγχρονισµός µεταξύ της ιεραρχίας των Επισκεπτών και της ιεραρχίας των αρχικών κλάσεων απαιτεί µεγάλη προσπάθεια, που ίσως να µη δικαιολογείτηχρήσητουπροτύπου. Χρησιµοποιείστε το πρότυπο σχεδίασης "Επισκέπτης" : όταν θέλετε να προσθέσετε λειτουργίες στα αντικείµενα µιας ιεραρχίας αντικειµένων χωρίς να "µολύνετε" τις κλάσεις τους µε αυτές τις λειτουργίες. Το πρότυπο "Επισκέπτης" σας επιτρέπει να διατηρείτε σχετιζόµενες λειτουργίες σε ένα µέρος ορίζοντας αυτές σε µία ξεχωριστή κλάση. ιάγραµµα: 31 32

9 Visitor (Επισκέπτης) Πελάτης ΣυγκεκριµένοςΕπισκέπτης1 +επίσκεψη(συγκεκριµένοστοιχείοα)() +επίσκεψη(συγκεκριµένοστοιχείοβ)() Επισκέπτης +επίσκεψη(συγκεκριµένοστοιχείοα)() +επίσκεψη(συγκεκριµένοστοιχείοβ)() ΣυγκεκριµένοςΕπισκέπτης2 +επίσκεψη(συγκεκριµένοστοιχείοα)() +επίσκεψη(συγκεκριµένοστοιχείοβ)() Κατηγορία: Behavioral Σκοπός: Ο ορισµός µιας σχέσης εξάρτησης ένα-προς-πολλά µεταξύ αντικειµένων έτσι ώστε όταν µεταβάλλεται η κατάσταση ενός αντικειµένου, όλα τα εξαρτώµενα αντικείµενα να ενηµερώνονται και να τροποποιούνται αυτόµατα. Συνώνυµα: Publish - Subscribe οµή εδοµένων Στοιχείο +αποδοχή(επισκέπτης)() ΣυγκεκριµένοΣτοιχείοΑ ΣυγκεκριµένοΣτοιχείοΒ +αποδοχή(επισκέπτης v)() +λειτουργίαα() v->επίσκεψη(this) +αποδοχή(επισκέπτης v)() +λειτουργίαβ() v->επίσκεψη(this) Στόχος της αντικειµενοστραφούς σχεδίασης είναι η δηµιουργία ενός συνόλου αλληλεπιδρώντων αντικειµένων. Συχνόπρόβληµα:ηαναγκαιότητασυνεργασίαςµεταξύκλάσεων, οδηγείσευψηλήσύζευξη. Ορισµένα από τα πρότυπα, µε χαρακτηριστικότερο το πρότυπο "Παρατηρητής", επιδιώκουν να µειώσουν τη σύζευξη µεταξύ των αντικειµένων, παρέχοντας αυξηµένη δυνατότητα επαναχρησιµοποίησηςκαιτροποποίησηςτουσυστήµατος. 35 Το συγκεκριµένο πρότυπο, επιτρέπει την αυτόµατη ειδοποίηση και ενηµέρωση ενός συνόλου αντικειµένων τα οποία "αναµένουν" ένα γεγονός, που εκδηλώνεται ως αλλαγή στην κατάσταση ενός αντικειµένου. Ο στόχος είναι η από-σύζευξη των παρατηρητών από το παρακολουθούµενο αντικείµενο, έτσι ώστε κάθε φορά που προστίθεται ένας νέος παρατηρητής (µε διαφορετική διασύνδεση ενδεχοµένως), να µην απαιτούνται αλλαγές στο παρακολουθούµενο αντικείµενο Το συγκεκριµένο πρότυπο είναι από τα πλέον ευρέως χρησιµοποιούµενα και υλοποιείται µε σχετική ευκολία σε διάφορες γλώσσεςπρογραµµατισµού. Το πρότυπο "Παρατηρητής" εφαρµόζεται για χρόνια στην γνωστή αρχιτεκτονικήμοντέλου-όψεως-έλεγκτή (Model-View-Controller) 36

10 Η εφαρµογή του προτύπου προϋποθέτει τον εντοπισµό των εξής δύο τµηµάτων: ενός υποκειµένου και του παρατηρητή. Μεταξύ των δύο υφίσταται µία συσχέτιση ένα-προς-πολλά Το υποκείµενο διατηρεί το µοντέλο των δεδοµένων και η λειτουργικότητα που αφορά στην παρατήρηση των δεδοµένων κατανέµεται σε διακριτά αντικείµενα παρατηρητές. Οιπαρατηρητέςαυτό-καταχωρούνταιστουποκείµενοκατάτηδηµιουργία. Οποτεδήποτε το υποκείµενο αλλάζει, "ανακοινώνει" προς όλους τους καταχωρηµένους παρατηρητές το γεγονός της αλλαγής. Κάθε παρατηρητής ερωτά το υποκείµενο για το υποσύνολο της κατάστασης του υποκειµένου που το ενδιαφέρει Στο ανωτέρω πρωτόκολλο επικοινωνίας η πληροφορία "αντλείται" αντί να 37 αποστέλλεταιστουςπαρατηρητές, Παράδειγµα: Κλάση Timer που υλοποιεί ένα χρονόµετρο class Timer extends Subject { private int state; public int getstate() { return state; public void setstate( int in ) { state = in; Notify(); 38 Αρχή Αντιστροφής των Εξαρτήσεων: Οι παρατηρητές δεν θα πρέπει να "βλέπουν" µία συγκεκριµένη κλάση, για αυτό και η Timer κληρονοµεί µία αφηρηµένη κλάση βάσης class Subject { private ArrayList observers = new ArrayList(); private int totalobs = 0; public void attach( Observer o ) { observers.add(o); //καταχώρηση παρατηρητή Η τιµή του χρονοµέτρου εµφανίζεται στην οθόνη από διάφορους παρατηρητές Όλοι οι παρατηρητές πρέπει να έχουν την ίδια διασύνδεση. Λύση: Κληρονοµούν µία αφηρηµένη βασική κλάση (Observer) abstract class Observer { public abstract void update(); public void detach( Observer o) { observers.remove( o ); public void Notify() { for (int i=0; i < observers.size(); i++) ((Observer)observers.get(i)).update(); //ανακοίνωση αλλαγών στους παρατηρητές 39 40

11 Οι παρατηρητές καταχωρούν τον εαυτό τους καλώντας την attach του υποκειµένου ( public void attach (Observer o) ) Αν ο παρατηρητής χρειάζεται περισσότερη πληροφορία, την "αντλεί" από το υποκείµενο class HexObserver extends Observer { Subject +attach(observer)() +detach(observer)() +Notify() observers for all o in observers { o -> Update() Observer +update() private Timer subj; public HexObserver( Timer s ) { subj = s; subj.attach( this ); //Οι παρατηρητές καταχωρούν τον εαυτό τους public void update() { System.out.print(" "+Integer.toHexString(subj.getState()) ); //Οι παρατηρητές αντλούν πληροφορία 41 Timer -state : int +getstate() +setstate() return state; subj HexObserver +update() OctObserver +update() subj BinObserver +update() subj 42 H εφαρµογή του προτύπου έχει νόηµα µόνο όταν η λίστα των παρατηρητών αλλάζει δυναµικά Ειδάλλως (αν για παράδειγµα το υποκείµενο επικοινωνεί πάντοτε µε ένα συγκεκριµένο παρατηρητή) η σύζευξη µεταξύ τους κωδικοποιείται ως απλή συσχέτιση Στρατηγική (Strategy) Ορίζει µια οικογένεια αλγορίθµων, τους ενσωµατώνει και επιτρέπει την εναλλαγή µεταξύ αυτών. Το χρησιµοποιούµε όταν θέλουµε να υλοποιήσουµε έναν κοινό γενικό αλγόριθµο (π.χ. ταξινόµηση) αλλά και πολλές διαφοροποιήσεις του (π.χ. φυσαλίδας, εισαγωγήςκ.τ.λ.) 43 44

12 Στρατηγική (Strategy) Στρατηγική (Strategy) Έστω ότι θέλουµε να δηµιουργήσουµε ένα πρόγραµµα το οποίοναβρίσκειτηνµέγιστηκαιτηνελάχιστητιµήσε έναν πίνακα Επιπλέον, επιθυµούµε για την υλοποίηση του προγράµµατος να εκτελείτε αρχικά µια ταξινόµηση του πίνακα. Τέλος, επιθυµητό είναι ο χρήστης του προγράµµατος να επιλέγει τον αλγόριθµο ταξινόµησης κατά τη διάρκεια της εκτέλεσης Σχεδιάστε το διάγραµµα κλάσεων για ένα θερµόµετρο το οποίο καταγράφει τη θερµοκρασία του περιβάλλοντος και στη συνέχεια ανάλογα µε αυτή µπορεί να αυξοµειώνει την ένταση του καλοριφέρ και να αλλάζει τις πληροφορίες (ώρα, βαθµοί C) που απεικονίζονται σε µια οθόνη 47 48

13 Θεωρούµε µία εφαρµογή η οποία απεικονίζει τρισδιάστατες σκηνές Scene e:object * [100 +displayall:void 0..1 Object +colormodel:floa style_type Style +colorprimitive:floa +colormesh:float Κάθε αντικείµενο στην σκηνή µπορεί να χρωµατιστεί µε δύοτρόπους: είτεµεβάσηκάποιαφωτογραφία, είτεµεβάσηένασυγκεκριµένοχρώµα. Ο χρωµατισµός των αντικειµένων πραγµατοποιείται από δύο ανεξάρτητα προγράµµατα, που αντιστοιχούν στις κλάσεις Textureκαι Material. Primitive colormodel:floa Mesh colormodel:floa Texture +colorprimitive:floa +colormesh:float Material +colorprimitive:floa +colormesh:float Wire +colorprimitive:floa +colormesh:float 49 50

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

Πρότυπα Σχεδίασης. Design Patterns Πρότυπα Σχεδίασης Design Patterns 1 Bridge (Γέφυρα) Κατηγορία: Structural Σκοπός: Η αποσύνδεση μιας αφαίρεσης από την υλοποίησή της, ώστε να μπορούν να μεταβάλλονται ανεξάρτητα. Συνώνυμα: Handle/Body 2

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

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

Πρότυπα Σχεδίασης. Design Patterns Πρότυπα Σχεδίασης Design Patterns 1 Bridge (Γέφυρα) Κατηγορία: Structural Σκοπός: Η αποσύνδεση μιας αφαίρεσης από την υλοποίησή της, ώστε να μπορούν να μεταβάλλονται ανεξάρτητα. Συνώνυμα: Handle/Body 2

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 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) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

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

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

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

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων 1 Γενικά Εξαιρετικά σηµαντικά: η απόφαση για το που ανήκουν οι µέθοδοι, και πως αλληλεπιδρούν τα αντικείµενα

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

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εφαρμογή Μεθοδολογίας ICONIX

Εφαρμογή Μεθοδολογίας ICONIX Πρόγραμμα Μεταπτυχιακών Σπουδών στην Εφαρμοσμένη Πληροφορική Προηγμένη Τεχνολογία Λογισμικού, 2016 Α. Χατζηγεωργίου Εφαρμογή Μεθοδολογίας ICONIX Παράδειγμα: Εγγραφή Φοιτητή σε Μάθημα Θέμα Θεωρείστε ότι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

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

Από τη UML στον Κώδικα. Μέρος Β Από τη UML στον Κώδικα Μέρος Β περιεχόμενα παρουσίασης Αμφίδρομες συσχετίσεις Συσσωμάτωση Σύνθεση Διαγράμματα ακολουθίας αμφίδρομες συσχετίσεις Μία αμφίδρομη συσχέτιση υλοποιείται με δύο μονόδρομες. Υπάρχει

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης: Αντικειμενοστρεφής Προγραμματισμός Τμήμα Εφαρμοσμένης Πληροφορικής Δημιουργία Κλάσεων/Αντικειμένων/Συσχετίσεων/Συνδέσεων Δημιουργία κλάσεων και αντικειμένων Θεωρούμε ένα υποθετικό σύστημα που αναφέρεται

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT = Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

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

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

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

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

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων Διαγράμματα UML στην Ανάλυση Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων περιεχόμενα παρουσίασης Διαγράμματα κλάσεων Διαγράμματα αντικειμένων διαγράμματα κλάσεων Χρησιμοποιούνται στην ανάλυση

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στη Σχεδίαση Λογισμικού

Εισαγωγή στη Σχεδίαση Λογισμικού Εισαγωγή στη Σχεδίαση Λογισμικού περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού σχεδίαση Η σχεδίαση του

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

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

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

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

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

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

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

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

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

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

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

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

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

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

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

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

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

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

Ηλεκτρονικό Κατάστημα

Ηλεκτρονικό Κατάστημα ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Παραδείγματα -UML Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2011-2012 1 Ηλεκτρονικό Κατάστημα Το αντικείμενο είναι η

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

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

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

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

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

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας Ανάλυση Πληροφοριακών Συστημάτων «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας 7 12 2005 Περιεχόμενα Παρουσίασης Βασικές Έννοιες Αντικειμενοστραφούς προγραμματισμού

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

Ολοκληρωµένο Σύστηµα ιαχείρισης Ασφαλισµένου

Ολοκληρωµένο Σύστηµα ιαχείρισης Ασφαλισµένου Εγχειρίδιο Χρήστη: Ολοκληρωµένο Σύστηµα ιαχείρισης ΦΑΣΗ Α: Ηλεκτρονική Καταγραφή Παρακλινικών Εξετάσεων Έκδοση 0.02 Ιστορικό Αναθεωρήσεων Date [Ηµ/νία] Version Description Author Approved by Date of [Έκδοση]

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

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

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

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

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

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

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

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

(Απλή) Κληρονομικότητα

(Απλή) Κληρονομικότητα Πολλαπλή κληρονομικότητα, υςχετίςεισ μεταξύ κλάςεων ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡ/ΜΟ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) (Απλή) Κληρονομικότητα Student + calctuition(): double GraduateStudent + calctuition(): double

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Η έννοια πρόβληµα Ανάλυση προβλήµατος Με τον όρο πρόβληµα εννοούµε µια κατάσταση η οποία χρήζει αντιµετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή ούτε προφανής. Μερικά προβλήµατα είναι τα εξής:

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

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

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

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

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

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

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης Αντικειµενοστραφής Σχεδίαση Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Μέθοδοι Στα πρώτα στάδια της γράφουµε µόνο τα ονόµατα των µεθόδων Γράφουµε τις

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

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

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

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων

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

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAVIS-V1-2012 TRAVIS Λογισμικό Διαχείρισης Παραβάσεων Φωτοεπισήμανσης Το σύστημα διαχείρισης παραβάσεων φωτοεπισήμανσης

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

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

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Πολλαπλή κληρονομικότητα, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) (Απλή) Κληρονομικότητα Student + calctuition(): double GraduateStudent + calctuition():

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης)

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης) ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Μηχανισμοί Ελέγχου Προσπέλασης) Καλλονιάτης Χρήστος Επίκουρος Καθηγητής Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας, Πανεπιστήμιο Αιγαίου http://www.ct.aegean.gr/people/kalloniatis

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