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

Σχετικά έγγραφα
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

Μεθοδολογία Προγραμματισμού

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

Περιεχόμενο του μαθήματος

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

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

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

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

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

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

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

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

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

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

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

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

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

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

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

Rational Unified Process:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

UML: Unified modelling language

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

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

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

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

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

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

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

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

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

POINTERS, AGGREGATION, COMPOSITION

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

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

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

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

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

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

ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9)

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Ένα πρώτο πρόγραμμα ΔΟΜΗ TOY ΠΡΟΓΡΑΜΜΑΤΟΣ. Τι σημαίνουν οι εντολές. Από τι αποτελείται ένα πρόγραμμα

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

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

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

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

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

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

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

Γλώσσες Προγραμματισμού

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

Διάλεξη 10: Αντικειμενοστρεφής Σχεδιασμός ΙI. Διδάσκων: Παναγιώτης Ανδρέου

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

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

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Generics και η κλάση ArrayList. Εισαγωγή στα Generics

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση

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

Transcript:

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

Generics Generics Γράψτε ένα πρόγραμμα σε Java που υλοποιεί μια στοίβα από ακεραίους Γράψτε ένα πρόγραμμα σε Java που υλοποιεί μια στοίβα από String Σε τι διαφέρουν; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 2 / 1

Generics Generics Υπάρχουν στην Java από την έκδοση 1.5. Επιτρέπουν τον ορισμό κλάσεων χωρίς να αναφερόμαστε σε συγκεκριμένους τύπους Κάνουν τον κώδικα πιο καθαρό και πιο ασφαλή Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 3 / 1

Generics Παραδείγματα Χωρίς generics L i s t m y I n t L i s t = new L i n k e d L i s t ( ) ; m y I n t L i s t. add ( new I n t e g e r ( 0 ) ) ; I n t e g e r x = ( I n t e g e r ) m y I n t L i s t. i t e r a t o r ( ). n e x t ( ) ; Με Generics L i s t < I n t e g e r > m y I n t L i s t = new L i n k e d L i s t < I n t e g e r > ( ) m y I n t L i s t. add ( new I n t e g e r ( 0 ) ) ; I n t e g e r x = m y I n t L i s t. i t e r a t o r ( ). n e x t ( ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 4 / 1

Generics Παράδειγμα ορισμού Generics p u b l i c i n t e r f a c e L i s t <E> { v o i d add ( E x ) ; I t e r a t o r <E> i t e r a t o r ( ) ; p u b l i c i n t e r f a c e I t e r a t o r <E> { E n e x t ( ) ; b o o l e a n h a s N e x t ( ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 5 / 1

Generics Επεξήγηση Το <E> είναι η παράμετρος Αντικαθίσταται από μια συγκεκριμένη κλάση όταν δημιουργούμε ένα αντικείμενο Μια κλάση που έχει generics μεταγλωτίζεται μόνο μια φορά Κατά σύμβαση τα ονόματα των παραμέτρων είναι μονά γράμματα και κεφαλαία Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 6 / 1

Generics Περισσότερα παραδείγματα c l a s s P a i r <T> { p u b l i c T f i r s t ; p u b l i c T s e c o n d ; p u b l i c P a i r ( T f, T s ) { f i r s t = f ; s e c o n d = s ; p u b l i c P a i r ( ) { f i r s t = n u l l ; s e c o n d = n u l l ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 7 / 1

Generics Πολλαπλές παράμετροι c l a s s P a i r 2 <T, U> { p u b l i c T f i r s t ; p u b l i c U s e c o n d ; p u b l i c P a i r 2 ( T f, U s ) { f i r s t = f ; s e c o n d = s ; p u b l i c P a i r 2 ( ) { f i r s t = n u l l ; s e c o n d = n u l l ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 8 / 1

Generics Δημιουργία Pair P a i r < S t r i n g > p a i r = new P a i r < S t r i n g > ( " 1 ", " 2 " ) ; P a i r 2 < S t r i n g, I n t e g e r > p a i r 2 = new P a i r 2 < S t r i n g, I n t e g e r > ( " 1 ", 2 ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 9 / 1

Generics Generic static algorithms Μπορεί κάποιος να ορίσει και generic μεθόδους c l a s s A l g o r i t h m s { p u b l i c s t a t i c <T> T g e t M i d d l e ( T [ ] a ) { r e t u r n a [ a. l e n g t h / 2 ] ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 10 / 1

Generics Καλώντας generic μεθόδους Ορίζοντας τον τύπο S t r i n g s = A l g o r i t h m s. < S t r i n g > g e t M i d d l e ( names ) ; ή αφήνοντας τον compiler να τον καταλάβει S t r i n g s = A l g o r i t h m s. g e t M i d d l e ( names ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 11 / 1

Generics Κανόνες κληρονομικότητας Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 12 / 1

Generics Επεξήγηση κανόνων Pair <Manager> ταιριάζει Pair <? extends Employee> Pair < Object > ταιριάζει Pair <? super Employee> Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 13 / 1

Generics Unbounded wildcards Μερικές φορές θέλουμε να γράψουμε μεθόδους που δε χρησιμοποιούν ιδιότητες κάποιες συγκεκριμένης κλάσης. Για παράδειγμα θέλουμε να τυπώσουμε τα στοιχεία μιας λίστας p u b l i c v o i d p r i n t S t u f f ( I t e r a b l e <? > s t u f f ) { f o r ( O b j e c t i t e m : s t u f f ) { S y s t e m. o u t. p r i n t l n ( i t e m ) ; Δείτε τη διαφορά C o l l e c t i o n <? > c = new A r r a y L i s t < S t r i n g > ( ) ; c. add ( " f o o " ) ; / / f a i l s C o l l e c t i o n c2 = new A r r a y L i s t < S t r i n g > ( ) ; c2. add ( " f o o " ) ; / / ok c2. add ( new I n t e g e r ( 3 0 0 ) ) ; / / ok c2. add ( new O b j e c t ( ) ) ; / / ok Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 14 / 1

Generics Type erasure Το JVM δε γνωρίζει για generic types Ένας generic ορισμός τύπου μεταγλωττίζεται μία φορά και ένας απλός τύπος παράγεται Τι ξέρει το JVM για το Pair <T> c l a s s P a i r { p u b l i c O b j e c t f i r s t ; p u b l i c O b j e c t s e c o n d ; p u b l i c P a i r ( O b j e c t f, O b j e c t s ) {... Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 15 / 1

Unified Modeling Language Απόγονος των αντικειμενοστραφών μεθόδων ανάλυσης και σχεδιασμού που εμφανίστηκαν στα τέλη της δεκαετίας του 80 Ενοποιεί τις μεθόδους των Booch, Rambaugh και Jacobson Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 16 / 1

Τι μας επιτρέπει να κάνουμε Να παράγουμε μοντέλα αντικειμενοστραφών προγραμμάτων με εύκολο τρόπο χωρίς να μπλεκόμαστε στις λεπτομέρειες γλωσσών προγραμματισμού όπως η C++ και η Java Μπορεί εύκολα ένα μοντέλο σε UML να μεταφραστεί σε μια αντικειμενοστραφή γλώσσα προγραμματισμού Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 17 / 1

Αναπαράσταση κλάσης στη UML Δεδομένα (Κατάσταση, χαρακτηριστικά) Συμπεριφορά (Ενέργειες, λειτουργίες, μετασχηματισμοί Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 18 / 1

Συσχετίσεις Oι κλάσεις μπορεί να συσχετίζονται μεταξύ τους Η UML αναπαριστά τη συσχέτιση μεταξύ δύο κλάσεων πολύ απλά με μια γραμμή Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 19 / 1

Συσχετίσεις - Παράδειγμα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 20 / 1

Απλή συσχέτιση - Association c l a s s P a s s e n g e r s { A i r p l a n e a i r p l a n e ; c l a s s A i r p l a n e { P a s s e n g e r s p a s s e n g e r s ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 21 / 1

Κατευθυνόμενη συσχέτιση - Directed Association c l a s s P a s s e n g e r s { c l a s s A i r p l a n e { P a s s e n g e r s p a s s e n g e r s ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 22 / 1

Αυτό-συσχέτιση Reflexive Association c l a s s A i r l i n e S t a f f { L i s t < A i r l i n e S t a f f > s t a f f ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 23 / 1

Συσχέτιση με πολλαπλότητα - Multiplicity c l a s s A i r p l a n e { L i s t < P a s s e n g e r s > p a s s e n g e r s ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 24 / 1

Συσσωμάτωση (Aggregation) Όταν μια κλάση είναι τμήμα μιας άλλης κλάσης c l a s s L i b r a r y { L i s t < Book > b o o k s ; / / Hey! Same as A s s o c i a t i o n Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 25 / 1

Σύνθεση (Composition) Όταν μια κλάση είναι ΠΑΝΤΑ αναπόσπαστο κομμάτι μιας άλλης κλάσης c l a s s L i b r a r y { L i s t < Book > b o o k s ; / / Hey! Same as A s s o c i a t i o n Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 26 / 1

Συσσωμάτωση - Σύνθεση: Που χρειάζονται πουθενά (αν απλώς θέλετε κάτι στα γρήγορα)! Είναι χρήσιμοι σε περιπτώσεις όπου θέλουμε να δείξουμε λεπτομέρειες αλλά πάντα μπορούν να αντικατασταθούν από μια συσχέτιση Η σύνθεση χρησιμοποιείται για να τονίσουμε ότι η διαγραφή μιας κλάσης συνεπάγεται και τη διαγραφή της άλλης Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 27 / 1

Κληρονομικότητα (Inheritance) c l a s s B a n k A c c o u n t e x t e n d s F i x e d A c c o u n t { Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 28 / 1

Υλοποίηση (Realization) c l a s s P r i n t e r S e t u p i m p l e m e n t s P r i n t e r { Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 29 / 1

Εξαρτήσεις Εξάρτηση υπάρχει αν μια κλάση χρησιμοποιεί μια άλλη κλάση κατά κάποιο τρόπο c l a s s M y F i l e { p u b l i c : M y F i l e ( s t r i n g f i l e n a m e ) ; p r i v a t e : FILE * f p ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 30 / 1

Κλάσεις συσχέτισης Πολλές φορές θέλουμε να κρατήσουμε το ιστορικό της συσχέτισης μιας κλάσης με μια άλλη. Για παράδειγμα ποιες ημερομηνίας εξετάστηκε ένας φοιτητής σε ένα μάθημα. Αυτή η πληροφορία δεν αφορά ούτε το μάθημα ούτε το φοιτητή αλλά τη σχέση που έχουν αυτοί μεταξύ τους. Τέτοιες πληροφορίες μπορεί να αποθηκευτούν σε μια κλάση συσχέτισης Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 31 / 1

Κλάσεις συσχέτισης c l a s s R e g i s t r a t i o n { L e s s o n l e s s o n ; S t u d e n t s t u d e n t ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 32 / 1

Παράδειγμα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 33 / 1