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

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

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

Transcript

1 Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού 30/10/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια

2 Class Diagrams Διαγράμματα Κλάσεων

3 Διαγράμματα UML Διάγραμμα περιπτώσεων χρήσης (use case diagram) Διάγραμμα κλάσεων (class diagram) Διάγραμμα αντικειμένων (object diagram) Διάγραμμα καταστάσεων (state diagram) Διάγραμμα δραστηριοτήτων (activity diagram) Διαγράμματα αλληλεπίδρασης (interaction diagrams) Διάγραμμα ακολουθίας (sequence diagram) Διάγραμμα επικοινωνίας (communication diagram) Διαγράμματα υλοποίησης (physical diagrams) Διάγραμμα συστατικών (component diagram) Διάγραμμα ανάπτυξης (deployment diagram)

4 Άξονες Μοντελοποίησης Λειτουργικότητα functionality Τι κάνει το σύστημα; Ποιες λειτουργίες υποστηρίζει; Ανάλυση απαιτήσεων Περιγραφές από κείμενο Στατικά διαγράμματα Πώς είναι οργανωμένα τα συστατικά του τμήματα; Δυναμική συμπεριφορά Πώς ανταποκρίνεται και από ποιες καταστάσεις περνάει; Δομή structure Συμπεριφορά behaviour

5 Κατηγοριοποίηση Διαγραμμάτων UML 2.0

6 Μοντελοποίηση με τη γλώσσα UML Περιγραφή Λειτουργίας από την πλευρά του χρήστη Στατική δομή Δυναμικά χαρακτηριστικά - Συμπεριφορά Μοντελοποίηση Απαιτήσεων Μοντελοποίηση στατικής δομής του συστήματος Μοντελοποίηση δυναμικών χαρακτηριστικών του συστήματος Μοντελοποίηση της συμπεριφοράς συγκεκριμένων αντικειμένων Μοντελοποίηση των βημάτων εκτέλεσης μιας διαδικασίας Σενάρια, Διαγράμματα περιπτώσεων χρήσης (Scenaria, Use Case Diagrams) Διαγράμματα Κλάσεων (Class Diagrams) Διαγράμματα Αντικειμένων (Object Diagrams) Διαγράμματα Συστατικών (Component Diagrams) Διαγράμματα Ανάπτυξης (Deployment Diagrams) Διαγράμματα Ακολουθίας (Sequence Diagrams) Διαγράμματα Επικοινωνίας (Collaboration Diagrams Communication Diagrams στη UML 2.0) Διαγράμματα Κατάστασης (State Machine Diagrams) Διαγράμματα Δραστηριότητας (Activity Diagrams)

7 Μοντελοποίηση δομής Σκοπός είναι η περιγραφή της δομής δεδομένων που υποστηρίζουν τις επιχειρηματικές διαδικασίες. Εστιάζουμε στην αντικειμενοστρεφή προσέγγιση δεδομένα μαζί με λειτουργίες.

8 Γιατί να μοντελοποιήσουμε τη δομή??? Για να μειώσουμε το «σημασιολογικό χάσμα» μεταξύ του πραγματικού κόσμου και του κόσμου του λογισμικού. Για να παραστήσουμε πράγματα, ιδέες και έννοιες που είναι σημαντικές για το πεδίο εφαρμογής. Για να ορίσουμε ένα κοινό λεξιλόγιο για τους αναλυτές και τους χρήστες.

9 Μοντελοποίηση στην Ανάλυση και Σχεδίαση ΠΣ Υψηλού επιπέδου επιχειρηματικές ανάγκες καταγεγραμμένες στην Πρόταση Συστήματος Καθορισμός Απαιτήσεων Αναλυτική Καταγραφή συγκεκριμένων απαιτήσεων Μοντελοποίηση του Συστήματος Λειτουργικότητα / Δομή / Συμπεριφορά (Functionality/Structure/Behavior

10 Εισαγωγή Τα διαγράμματα περιπτώσεων χρήσης είναι διαγράμματα καταγραφής προδιαγραφών! Τα διαγράμματα κλάσεων όμως, καταγράφουν τις κλάσεις που ανήκουν σε ένα σύστημα τύπους αντικειμένων και τις στατικές συσχετίσεις που υπάρχουν μεταξύ τους! ΜΗΝ ΞΕΧΝΑΤΕ: Τα αντικείμενα αποτελούν στιγμιότυπα κλάσεων. Η κλάση είναι ένας τύπος από τον οποίο δημιουργούνται κατά τη διάρκεια της εκτέλεσης του προγράμματος, αντικείμενα που ανήκουν στον τύπο αυτόν. Δηλ. μία κλάση περιγράφει ένα σύνολο αντικειμένων με: Όμοιες ιδιότητες (similar properties/attributes) Κοινή συμπεριφορά (common behavior/operations) Κοινές συσχετίσεις με άλλα αντικείμενα (common associations to other objects)

11 Διάγραμμα Κλάσεων Αναπαριστά τη στατική δομή του συστήματος σε επίπεδο κλάσεων (class structure) και τα περιεχόμενά τους (contents). Αναπαριστά τις σχέσεις μεταξύ των κλάσεων με τη χρήση σχέσεων, όπως είναι η συσχέτιση (association), η σχέση εξειδίκευσης (specialization), η σχέση γενίκευσης (generalization) και άλλες. Ένα σύστημα τυπικά έχει πολλά διαγράμματα κλάσεων. Μια κλάση μπορεί να συμμετέχει σε πολλά διαγράμματα κλάσεων.

12 Τι Προσφέρει το Διάγραμμα Κλάσεων Δίνει μια στατική όψη των στοιχείων που αποτελούν το σύστημα. Όπως το σχέδιο με τα εξαρτήματα μιας μηχανής δείχνει πώς συναρμολογούνται, αλλά όχι πώς συμπεριφέρονται όταν η μηχανή τεθεί σε λειτουργία. Περιλαμβάνει ιδιότητες, λειτουργίες (μεθόδους), συσχετίσεις μεταξύ κλάσεων.

13 Διάγραμμα Κλάσεων (1) Σε ένα διάγραμμα κλάσεων, τα ονόματα των κλάσεων πρέπει να είναι περιγραφικά και να ονομάζονται σύμφωνα με τις επιχειρησιακές οντότητες. ΠΡΟΣΟΧΗ πάντα χρησιμοποιούμε ουσιαστικό (ή φράση που περιέχει ουσιαστικό) για την ονομασία της κλάσης! Σε ενικό αριθμό! Οι σχέσεις μεταξύ των κλάσεων μπορεί να μην είναι εμφανείς από την αρχή της ανάλυσης του συστήματος. Επαναληπτική δραστηριότητα! Σε κάθε επανάληψη διευκρινίζονται περισσότερο οι κλάσεις και οι σχέσεις μεταξύ τους

14 Διάγραμμα Κλάσεων (2) Αρχικά, περιλαμβάνει τις βασικές κλάσεις του συστήματος. Έπειτα, εμπλουτίζεται με νέες κλάσεις που προκύπτουν κατά την ανάλυση του συστήματος. Στη συνέχεια, προστίθενται κλάσεις και διεπαφές που σχετίζονται με τον τρόπο υλοποίησης του συστήματος (π.χ. κλάσεις για τη σύνδεση με μια βάση δεδομένων, μια διεπαφή για τη σύνδεση με ένα άλλο σύστημα).

15 Διάγραμμα Κλάσεων (3) Κατά την ανάπτυξη ενός συστήματος (παραγωγή κώδικα), οι αλλαγές που προκύπτουν στις κλάσεις, στις διεπαφές, στα χαρακτηριστικά και στις λειτουργίες των κλάσεων ΠΡΕΠΕΙ πρώτα να αναπαρίστανται στα μοντέλα των κλάσεων και ύστερα αυτές οι αλλαγές να πραγματοποιούνται στον κώδικα του συστήματος. Έτσι, πετυχαίνουμε: Σωστή και πλήρης τεκμηρίωση συστήματος (system specification) Σωστά και πλήρη παραδοτέα συστήματος (system deliverables) Διάγραμμα κλάσεων: κατάλληλο σημείο αναφοράς για όλους που εμπλέκονται στην ανάλυση, σχεδιασμό και ανάπτυξη συστήματος Πιο εύκολη συντήρηση συστήματος

16 Οπτική γωνία σχεδίασης Διαγραμμάτων Κλάσεων Ανάλυση προδιαγραφών: ΟΔΗΓΕΙ ΣΕ γνώση για το πεδίο του προβλήματος του συστήματος. Διάγραμμα κλάσεων: μοντέλο του πεδίου προβλήματος (problem domain model). Καταγραφή κλάσεων ως έννοιες του πεδίου του προβλήματος Μπορεί οι κλάσεις αυτές να μην υπάρχουν στο λογισμικό που θα κατασκευαστεί (έστω και αν, κατά πάσα πιθανότητα, οι περισσότερες από αυτές θα υπάρχουν) Για κάθε κλάση του μοντέλου αυτού ενδεχομένως, να αναγραφούν κάποιες υψηλού επιπέδου υποχρεώσεις (σαν λειτουργίες τους) ΟΧΙ απαραίτητο οι λειτουργίες αυτές να εμφανισθούν στο διάγραμμα κλάσεων του λογισμικού ως μέθοδοι των αντίστοιχων κλάσεων ΕΠΟΜΕΝΩΣ, αρχικά μοντελοποίηση προβλήματος και όχι λύσης

17 Προοπτικές Διαγράμματος Κλάσεων Εννοιολογική (Conceptual) Ανεξάρτητη υλοποίησης, μοντέλο πεδίου (domain model) Προδιαγραφής (Specification) Αφορά κυρίως στις διεπαφές λογισμικού (interfaces of the software), και δεν αντανακλά την υλοποίηση Υλοποίησης (Implementation) Εδώ μοντελοποιούμε τις συγκεκριμένες κλάσεις υλοποίησης (implementation classes)

18 Παραδοσιακή αναπαράσταση

19 ΟΟ αναπαράσταση

20 Κλάση, ιδιότητες και λειτουργίες Κλάσεις: ενσωματώνουν δεδομένα + λειτουργίες που επενεργούν στα δεδομένα αυτά Όνομα κλάσης Υποχρεωτικό Ορθογώνιο Παραλληλόγραμμο με τρία διαμερίσματα Account - balance: Money + withdraw(amount: Money) + deposit(amount: Money) Ιδιότητες Λειτουργίες Από ποια οπτική γωνία σχεδίασης??? κλάση λογισμικού ή έννοια του πεδίου του προβλήματος Οι λειτουργίες??? μέθοδοι ή υποχρεώσεις υψηλού επιπέδου

21 Ιδιότητες (γνωρίσματα) Υποχρεωτικό Ορθογώνιο Παραλληλόγραμμο με τρία διαμερίσματα Account - balance: Money + withdraw(amount: Money) + deposit(amount: Money) Όνομα κλάσης Ιδιότητες Λειτουργίες Εννοιoλογική: Ιδιότητα Π.χ. Ο «λογαριασμός» (account) έχει «υπόλοιπο» (balance) Προδιαγραφής Π.χ. Ένα αντικείμενο «λογαριασμός» (account) μπορεί να πει ή να θέσει το «υπόλοιπο» (balance) του Υλοποίησης Π.χ. Ενα αντικείμενο «λογαριασμός» (account) έχει ένα πεδίο «υπόλοιπο» (balance)

22 Κλάση, ιδιότητες και λειτουργίες Συνήθως: Iδιότητες ιδιωτικές (private) χαρακτηριστικά μιας κλάσης που δεν είναι προσπελάσιμα από άλλες κλάσεις. Ιδιότητες δημόσιες (public) χαρακτηριστικά μιας κλάσης που είναι προσπελάσιμα από άλλες κλάσεις. Οι μέθοδοι, ουσιαστικά, αποτελούν τη διεπαφή (interface) ανάμεσα στην κλάση και το υπόλοιπο σύστημα. Ιδιωτικές??? Δηλαδή??? Τα αντικείμενα άλλων κλάσεων δεν έχουν τη δυνατότητα να προσπελάσουν απευθείας τις ιδιότητες μίας κλάσης, αλλά χρησιμοποιούν για αυτό τις μεθόδους της κλάσης.

23 Δομή αντικειμένου Στατικό μέρος (private) Δεδομένα (Μεταβλητές) Δυναμικό μέρος (public) Διαδικασίες (Μέθοδοι)

24 Κλάση, ιδιότητες και λειτουργίες Μια κλάση «Φοιτητής» (Student) αναπαριστά την οντότητα του φοιτητή σε ένα σύστημα. Η κλάση «Φοιτητής» ενσωματώνει πληροφορίες για το φοιτητή, όπως το μοναδικό κωδικό του φοιτητή, το όνομα του φοιτητή κ.α., τα οποία αποτελούν τα χαρακτηριστικά/ιδιότητες της κλάσης «Φοιτητής». Η κλάση «Φοιτητής» έχει επίσης κάποια λειτουργικότητα, η οποία αναπαρίσταται με λειτουργίες, όπως είναι οι λειτουργίες: getstudentname(), getstudentid() κ.α.

25 Κλάση, ιδιότητες και λειτουργίες Student -StudentId -StudentName -StudentAddress +getstudentid () +getstudentname () +getstudentaddress ()

26 Αναπαράσταση κλάσεων - παράδειγμα Ελέφαντας Χρώμα: string Αριθμός χαυλιοδόντων: integer Τοποθεσία: string Βάρος: real Ύψος: real κίνηση_προς (τοποθεσία) πλύσιμο (ημερομηνία) λήψη_τροφής ( ποσότητα, ημερομηνία, ώρα)

27 Αναπαράσταση κλάσεων - παράδειγμα Μάθημα Κωδικός μαθήματος Θεματική ενότητα Τίτλος Διδάσκων Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος ()

28 Αναπαράσταση κλάσεων - παράδειγμα Καθηγητής Αρ. Ταυτότητας Όνομα Επώνυμο Διεύθυνση Τηλέφωνο Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή ()

29 Κλάση, ιδιότητες και λειτουργίες Αρχή απόκρυψης των δεδομένων (information hiding principle) ενθυλάκωση (encapsulation) Πλεονεκτήματα: Αλλαγή, κατά βούληση, της εσωτερικής παράστασης των δεδομένων, χωρίς να επηρεάσει τους χρήστες των αντικειμένων της κλάσης (άλλα αντικείμενα που αλληλεπιδρούν με αυτήν) εφόσον η δημόσια διασύνδεση και η σημασιολογία της παραμένουν ίδιες. Εφαρμογή πολιτικών ελέγχου από τις μεθόδους της κλάσης για την προσπέλαση της κλάσης. Παράδειγμα έλεγχος έγκυρων παραμέτρων κλήσης (π.χ. το ποσό που ζητείται για ανάληψη δεν είναι αρνητικό) και εκτέλεση κώδικα μόνο στην περίπτωση αυτή.

30 Προσδιοριστές πρόσβασης / Ετικέτες ορατότητας (visibility tags) " " : ιδιωτική πρόσβαση (by owing class) "+" : δημόσια πρόσβαση (by all used) "#" : προστατευμένη πρόσβαση (by owing class and its subclasses) η ιδιότητα ή λειτουργία είναι προσπελάσιμη από την κλάση και τις τυχόν υποκλάσεις της "~" : πρόσβαση σε επίπεδο πακέτου η ιδιότητα ή λειτουργία είναι προσπελάσιμη από την κλάση στην οποία δηλώνεται και τις άλλες κλάσεις που βρίσκονται στο ίδιο πακέτο με αυτήν.

31 Συντακτικό για τη δήλωση ιδιοτήτων (properties) στη UML (1) Προσδιοριστής_πρόσβασης όνομα_ιδιότητας: Τύπος [πολλαπλότητα διάταξη] = Αρχική_τιμή {συμβολοσειρά ιδιοτήτων} Προσδιοριστής_πρόσβασης: +,-,#, ή ~ Τύπος: τύπος δεδομένων (π.χ. String, int, boolean, char, real, πίνακας) Πολλαπλότητα: διάστημα τιμών με κάτω και πάνω όριο (π.χ. 1..5) ή συγκεκριμένη αριθμητική τιμή (π.χ. 1). Αν πάνω όριο αστερίσκος άπειρες τιμές (π.χ. 1...*) Αν μόνο * 0 ή περισσότερα. Διάταξη: μπορεί να μην υπάρχει ή λέξη unordered οπότε θεωρείται πως δεν υπάρχει διάταξη ή λέξη ordered, οπότε υπάρχει διάταξη Η διάταξη αφορά την περίπτωση που έχουμε πολλαπλότητα μεγαλύτερη από 1.

32 Συντακτικό για τη δήλωση ιδιοτήτων (properties) στη UML (2) Προσδιοριστής_πρόσβασης όνομα_ιδιότητας: Τύπος [πολλαπλότητα διάταξη] = Αρχική_τιμή {συμβολοσειρά ιδιοτήτων} Όταν έχουμε πολλές τιμές (π.χ. έναν πίνακα τιμών), η διάταξη σημαίνει πως έχει σημασία η σειρά των τιμών (ποια είναι πρώτη, ποια δεύτερη κ.λπ.). Επομένως, στην υλοποίηση της συγκεκριμένης κλάσης με γλώσσα προγραμματισμού ΠΡΕΠΕΙ να χρησιμοποιηθεί συλλογή που σέβεται τη διάταξη (π.χ. λίστα), και όχι κάποια που δεν εγγυάται τη διάταξη (π.χ. σύνολο). Αρχική_τιμή: η τιμή που αποδίδεται στη συγκεκριμένη ιδιότητα (με την οποία "αρχικοποιείται") μετά τη δημιουργία ενός αντικειμένου της κλάσης. Η τιμή θα πρέπει να ανήκει στον τύπο της ιδιότητας. Συμβολοσειρά ιδιοτήτων: περιέχει ιδιότητες για τη συγκεκριμένη δήλωση. Μια ιδιότητα που χρησιμοποιείται συχνά είναι η {frozen}, που χαρακτηρίζει μία ιδιότητα ως αμετάβλητη, δηλαδή αφού πάρει κάποια τιμή για πρώτη φορά, στη συνέχεια δεν μεταβάλλεται.

33 Παραδείγματα (1) Προσδιοριστής_πρόσβασης όνομα-ιδιότητας: Τύπος [πολλαπλότητα διάταξη] = Αρχική_τιμή {συμβολοσειρά ιδιοτήτων} 1. Διατήρηση συλλογής με τα ονόματα των φοιτητών ενός τμήματος με αλφαβητική σειρά: - students : string[* ordered] Πολλαπλότητα * επειδή υπάρχουν πολλοί φοιτητές. Διάταξη ordered επειδή η συγκεκριμένη συλλογή τιμών είναι διατεταγμένη.

34 Παραδείγματα (2) Προσδιοριστής_πρόσβασης όνομα-ιδιότητας: Τύπος [πολλαπλότητα διάταξη] = Αρχική_τιμή {συμβολοσειρά ιδιοτήτων} 2. Δήλωση σταθεράς για το επιτόκιο καταθέσεων τράπεζας το επιτόκιο είναι πραγματικός αριθμός και, αφού πάρει κάποια τιμή, η τιμή αυτή διατηρείται (δηλαδή είναι σταθερά). Έστω, ότι το αρχικό επιτόκιο είναι 3,5% - interestrate : double = {frozen} Χρήση αρχικής τιμής και συμβολοσειράς ιδιοτήτων {frozen} για να υποδηλώσουμε ότι πρόκειται για σταθερά.

35 Συντακτικό για τη δήλωση λειτουργιών/μεθόδων στη UML (1) Προσδιοριστής_πρόσβασης όνομα (λίστα_παραμέτρων): Τύπος_επιστροφής {συμβολοσειρά ιδιοτήτων} Προσδιοριστής_πρόσβασης: +,-,#, ή ~ Όνομα: όνομα λειτουργίας, μία συμβολοσειρά... Λίστα_παραμέτρων: προσδιορίζει τις παραμέτρους της λειτουργίας, χωρισμένες με κόμμα. Μπορεί να είναι και κενή. Για κάθε παράμετρο, έχουμε direction, όνομα και τύπο: [in out inout] όνομα-παραμέτρου : τύπος = εξ ορισμού τιμή. in η παράμετρος εισάγεται στη λειτουργία, αλλά δεν μεταβάλλεται από αυτήν (default τιμή, αν δεν εμφανίζεται κάτι άλλο). out ΔΕΝ εισάγεται κάποια τιμή για την παράμετρο, αλλά επιστρέφεται τιμή από τη λειτουργία. inout ΚΑΙ εισάγεται τιμή στην παράμετρο, ΚΑΙ η λειτουργία μπορεί να μεταβάλλει την τιμή αυτή. Τύπος: τύπος της παραμέτρου και προαιρετικά, μπορούμε να δώσουμε και κάποια εξ ορισμού τιμή για την παράμετρο.

36 Συντακτικό για τη δήλωση λειτουργιών/μεθόδων στη UML (2) Προσδιοριστής_πρόσβασης όνομα (λίστα_παραμέτρων): Τύπος_επιστροφής {συμβολοσειρά ιδιοτήτων} Τύπος_επιστροφής: προσδιορίζει τον τύπο των δεδομένων που επιστρέφει η συνάρτηση (π.χ. int, boolean κ.λπ.), αν απαιτείται. Συμβολοσειρά ιδιοτήτων: προσδιορίζουμε κάποιες ιδιότητες για τη λειτουργία. Μια πολύ κοινή ιδιότητα είναι η {query} (ερώτημα) με την οποία προσδιορίζεται ότι η λειτουργία είναι ερώτημα, δηλαδή δεν μεταβάλλει την κατάσταση (state) του αντικειμένου όταν καλείται. Ο προσδιορισμός των ερωτημάτων είναι πολύ χρήσιμος στην πράξη, επειδή επισημαίνουν ποιες λειτουργίες δεν χρειάζεται να μας ανησυχούν σε περιπτώσεις πολλαπλών ταυτόχρονων προσπελάσεων (σε ταυτόχρονα συστήματα). Αφού τα ερωτήματα δεν μεταβάλλουν την κατάσταση ενός αντικειμένου, η ταυτόχρονη πρόσβαση σε αυτά δεν μπορεί να οδηγήσει σε ασυνέπειες στην κατάσταση του αντικειμένου.

37 Συντακτικό για τη δήλωση λειτουργιών/μεθόδων στη UML (3) Προσδιοριστής_πρόσβασης όνομα (λίστα_παραμέτρων): Τύπος_επιστροφής {συμβολοσειρά ιδιοτήτων} Συμβολοσειρά ιδιοτήτων: προσδιορίζουμε κάποιες ιδιότητες για τη λειτουργία. {abstract}: χρειάζεται ένα παιδί για την ολοκλήρωση της υλοποίησης {static}: συμπεριφέρεται ως global procedure Το όνομα, ο τύπος επιστροφής και οι παράμετροι μιας λειτουργίας αποτελούν την υπογραφή μιας λειτουργίας (signature of an operation).

38 Παραδείγματα (1) Προσδιοριστής_πρόσβασης όνομα (λίστα_παραμέτρων): Τύπος_επιστροφής {συμβολοσειρά ιδιοτήτων} 1. Λειτουργία για την ανάληψη μετρητών από ένα λογαριασμό: δέχεται το ποσό της ανάληψης ως παράμετρο, επιστρέφει ως αποτέλεσμα μία λογική τιμή (true ή false) ανάλογα με το αν η ανάληψη ήταν επιτυχής ή απέτυχε (π.χ. δεν επαρκεί το υπόλοιπο) + withdraw(in amount: Money) : boolean Παράμετρος: αναφερόμαστε σε τύπο δεδομένων που ονομάζεται Money. Έχει σίγουρα δηλωθεί σε άλλο σημείο του συστήματος. Παράμετρος in, διότι δεν μεταβάλλεται από τη λειτουργία Οι παράμετροι in υλοποιούνται στις γλώσσες προγραμματισμού με "κλήσεις με τιμές" (call by value).

39 Παραδείγματα (2) Προσδιοριστής_πρόσβασης όνομα (λίστα_παραμέτρων): Τύπος_επιστροφής {συμβολοσειρά ιδιοτήτων} 2. Λειτουργία που να επιστρέφει το τρέχον υπόλοιπο ενός τραπεζικού λογαριασμού + getbalance():money {query} Συμβολοσειρά ιδιοτήτων {query} σημαίνει πως η λειτουργία είναι ερώτημα, δεν μεταβάλλει την κατάσταση του αντικειμένου στο οποίο καλείται (δεν αλλάζει το υπόλοιπο).

40 Λειτουργίες και ιδιότητες με εμβέλεια κλάσης (1) Παράδειγμα: θέλουμε να μπορούμε να δημιουργήσουμε αντικείμενα Account, διαβάζοντας τα στοιχεία για τη δημιουργία κάθε τέτοιου αντικειμένου από μια βάση δεδομένων. +createaccount(accountld : String) : Account Παράμετρος εισόδου: AccountID (αναγνωριστικό λογαριασμού). Γίνεται προσπέλαση βάσης δεδομένων για τη δημιουργία αντικειμένου Account με τα στοιχεία που υπάρχουν αποθηκευμένα με αυτό το AccountlD, και επιστροφή αυτού του αντικειμένου.

41 Λειτουργίες και ιδιότητες με εμβέλεια κλάσης (2) Η λειτουργία αυτή δεν έχει σχέση με τα δεδομένα κάποιου συγκεκριμένου αντικειμένου. Βρίσκεται όμως στην κλάση «Account», επειδή η κλάση αυτή περιέχει τις πληροφορίες που είναι απαραίτητες για τη δημιουργία ενός λογαριασμού. ΑΡΑ, δήλωση λειτουργίας με εμβέλεια κλάσης (class scope) στην κλάση «Account». Οι λειτουργίες ή ιδιότητες με εμβέλεια κλάσης στις γλώσσες προγραμματισμού (π.χ. Java) συνήθως ονομάζονται static. Account Υπογράμμιση λειτουργίας με εμβέλεια κλάσης - balance: Money +create(accountid: String) : Account + withdraw(amount: Money) + deposit(amount: Money)

42 Λειτουργίες και ιδιότητες με εμβέλεια κλάσης (3) Βicycle public class Bicycle{ private int gear; private int speed; private int id; private static int numberofbicycles = 0; -gear: int -speed: int -id: int -numberofbicycles: int +getnumberofbicycles(): int +Bicycle(in startspeed:int, in startgear:int) } public Bicycle(int startspeed, int startgear){ gear = startgear; speed = startspeed; // increment number of Bicycles and assign ID number id = ++numberofbicycles; } public static int getnumberofbicycles() { return numberofbicycles; }

43 Συνδέσεις μεταξύ κλάσεων 1. Συσχετίσεις (associations) 2. Γενικεύσεις (generalizations) 3. Συναθροίσεις (aggregations) 4. Συνθέσεις (compositions) 5. Εξαρτήσεις (dependencies)

44 Συσχετίσεις κλάσεων Συσχέτιση (association) μεταξύ δύο κλάσεων: στατική σχέση μεταξύ των δύο κλάσεων. ΠΟΤΕ ΧΡΕΙΑΖΕΤΑΙ??? ΟΤΑΝ για τη λειτουργία μιας κλάσης απαιτείται η συνεργασία της με μία ή περισσότερες άλλες κλάσεις. Αν αυτή η συνεργασία απαιτείται να είναι: σε μόνιμη βάση, τότε χρησιμοποιούμε συσχέτιση παροδική (π.χ. όταν αντικείμενα της κλάσης «Α» είναι παράμετροι σε μια λειτουργία της κλάσης «Β»), τότε χρησιμοποιούμε εξάρτηση.

45 Συσχετίσεις κλάσεων (1) Ένας τραπεζικός λογαριασμός μπορεί να έχει έναν ή περισσότερους δικαιούχους που είναι στιγμιότυπα της κλάσης «Customer». ΤΟΤΕ, συσχέτιση μεταξύ των κλάσεων «Account» και «Customer». Account -accounts has -holders 1..* 1..* Customer Ευθεία γραμμή μεταξύ των κλάσεων για την αναπαράσταση της συσχέτισης

46 Συσχετίσεις κλάσεων (2) Προαιρετικά, μπορούμε να έχουμε σε μία συσχέτιση τα εξής στοιχεία: Όνομα συσχέτισης Ονόματα άκρων συσχέτισης Πολλαπλότητα (multiplicity) Πλοηγησιμότητα (navigability)

47 Όνομα συσχέτισης Λέξη που υποδηλώνει το νόημα της συσχέτισης. Το όνομα, όταν αναγράφεται, θα πρέπει να τοποθετείται στο μέσο του συνδέσμου, έτσι ώστε να μη συγχέεται με τα ονόματα που πιθανώς θα υπάρχουν στα άκρα των συσχετίσεων. Account -accounts has -holders 1..* 1..* Customer Η λέξη "has" ("έχει") πρέπει να διαβάζεται από την κλάση «Customer» προς την κλάση «Account»: ένας πελάτης έχει λογαριασμούς.

48 Ονόματα άκρων συσχέτισης (1) Σε κάθε άκρο συσχέτισης όνομα που υποδηλώνει το ρόλο της κλάσης στη συσχέτιση. Account -accounts has -holders 1..* 1..* Customer Στο άκρο της συσχέτισης που αφορά την κλάση «Customer»: όνομα "holders" ("δικαιούχοι"), επειδή η συσχέτιση αφορά τους πελάτες που είναι δικαιούχοι ενός λογαριασμού. Το όνομα του άκρου συσχέτισης προσδιορίζει το ρόλο μίας κλάσης στη συσχέτιση (κάποιες φορές αναφέρεται και ως όνομα ρόλου (role name)).

49 Ονόματα άκρων συσχέτισης (2) ΟΤΑΝ η ίδια κλάση συσχετίζεται με μία άλλη κλάση με δύο διαφορετικές συσχετίσεις. ΤΟΤΕ, όνομα άκρου συσχέτισης απαραίτητο για να υποδηλώσει ποιος είναι ο ρόλος της πρώτης συσχέτισης και ποιος της δεύτερης. 1 Department -teachers 1..* Teacher 1 -president 1 Κλάση «Department» για τμήμα εκπαιδευτικού ιδρύματος και κλάση «Teacher» για τους εκπαιδευτικούς του τμήματος. 1. Συσχέτιση που αφορά τους εκπαιδευτικούς του τμήματος (teachers) 2. Συσχέτιση που αφορά τον πρόεδρο του τμήματος (επίσης εκπαιδευτικός (president).

50 Πολλαπλότητα (1) Αφορά ένα άκρο μίας συσχέτισης. Είναι το πλήθος των αντικειμένων που μπορούν να μετέχουν σε μία συσχέτιση. Εκφράζονται με κάτω και πάνω όρια. 1, 1..1 *, 0..*, * , 4 μία και μόνο μία, υποχρεωτική & μονότιμη συσχέτιση 0 ή περισσότερες, ΔΗΛ κανένας περιορισμός μία ή περισσότερες, υποχρεωτική & πλειότιμη συσχέτιση 0 ή 1, δηλαδή προαιρετική συσχέτιση κάποιος συγκεκριμένος αριθμός κάποια συγκεκριμένη περιοχή τιμών μη συνεχόμενες σειρές τιμών Παραδείγματα πιο γενικών περιορισμών: (για ποδοσφαιρικές ομάδες) 3..4 (για τροχούς αυτοκινήτων)

51 Πολλαπλότητα (2) Account -accounts has -holders 1..* 1..* Customer Ένας λογαριασμός μπορεί να έχει έναν ή περισσότερους δικαιούχους (1..* στο άκρο holders) και ένας πελάτης μπορεί να έχει έναν ή περισσότερους λογαριασμούς (1..* στο άκρο accounts)

52 Πολλαπλότητα (3) Copy is a copy of 1..* 1 Book Κάθε copy συσχετίζεται μέσω της συσχέτισης is a copy of με ακριβώς ένα book. Για αυτό βάλαμε 1 στο άκρο της συσχέτισης που αφορά την κλάση Book. Από την άλλη πλευρά, μπορεί να υπάρχουν πολλά αντίγραφα ενός συγκεκριμένου βιβλίου στο σύστημά μας. Επομένως, η πολλαπλότητα στο άκρο της συσχέτισης που αφορά την κλάση Copy είναι 1..*

53 Παραδείγματα (4) Author uses Computer Ένας συγγραφέας (author) χρησιμοποιεί υπολογιστή (computer). Η κλάση author συνδέεται με την κλάση computer. Person owns 1..* * Ένας άνθρωπος (person) έχει πολλά (0 ως πολλά) αυτοκίνητα (car). Ένα αυτοκίνητο μπορεί να κατέχεται από πολλούς (1 ως πολλούς) ανθρώπους. Car

54 Πλοηγησιμότητα (1) Συμβολίζεται με ένα βέλος στο πέρας της συσχέτισης και υποδηλώνει πλοηγησιμότητα μόνο προς τη φορά του βέλους. Αφορά τη δυνατότητα που έχουμε από μία κλάση να ανακτήσουμε αντικείμενα της άλλης σε μία συσχέτιση. Είναι χρήσιμη μόνο για την προοπτική Προδιαγραφής και Υλοποίησης (δεν είναι χρήσιμη για την Εννοιoλογική προοπτική).

55 Πλοηγησιμότητα (2) Account -accounts has -holders 1..* 1..* Customer Εδώ, δεν υπάρχει πλοηγησιμότητα, ΑΡΑ έχουμε πλοηγησιμότητα και προς τις δύο κατευθύνσεις: έχοντας ένα αντικείμενο Account μπορούμε να βρούμε τους πελάτες που είναι δικαιούχοι του λογαριασμού και έχοντας ένα αντικείμενο Customer μπορούμε να βρούμε τους λογαριασμούς του. Η πλοηγησιμότητα και προς τις δύο κατευθύνσεις έχει την έννοια της αμοιβαιότητας: Αν το αντικείμενο-λογαριασμός Α συσχετίζεται με το αντικείμενοπελάτη C, τότε θα πρέπει και ο πελάτης C να συσχετίζεται με το λογαριασμό Α.

56 Πλοηγησιμότητα (3) Department -teachers 1..* Teacher -president 1 Εδώ, υπάρχει πλοηγησιμότητα μόνο από την κλάση «Department» προς την κλάση «Teacher»: έχοντας ένα αντικείμενο Department μπορούμε να βρούμε ποιοι διδάσκουν σε αυτό το τμήμα ή ποιος είναι ο πρόεδρός του, ΑΛΛΑ έχοντας ένα αντικείμενο Teacher δεν μπορούμε να βρούμε σε ποιο τμήμα διδάσκει.

57 Πλοηγησιμότητα (4) Η κλάση «Department» έχει την υποχρέωση να γνωρίζει τους εκπαιδευτικούς, αλλά ένας εκπαιδευτικός δεν έχει την αντίστοιχη υποχρέωση να γνωρίζει σε ποιο τμήμα διδάσκει! ΠΡΑΓΜΑ ΠΟΥ ΔΕΙΧΝΕΙ ότι, ο πραγματικός κόσμος και ο κόσμος του λογισμικού δεν είναι αναγκαστικά ταυτόσημοι. Στον πραγματικό κόσμο, ο εκπαιδευτικός γνωρίζει πάντα σε ποιο τμήμα διδάσκει. Στον κόσμο του λογισμικού, μπορεί να μην κριθεί απαραίτητο για τις λειτουργίες που θέλουμε να παρέχει το λογισμικό μας, η συσχέτιση να είναι δύο κατευθύνσεων.

58 Πλοηγησιμότητα (5) Order employment * 1 Customer Η κλάση «Order» έχει την υποχρέωση να λέει για ποιον πελάτη είναι, από πλευράς προδιαγραφών. Η κλάση «Order» περιλαμβάνει έναν pointer προς τον πελάτη (και όχι αντίστροφα) από πλευράς υλοποίησης. Order employment * 1 Customer Η κλάση «Πελάτης» έχει την υποχρέωση να λέει τις παραγγελίες του, από πλευράς προδιαγραφών. Η κλάση «Customer» περιλαμβάνει έναν pointer προς την παραγγελία από πλευράς υλοποίησης.

59 Πλοηγησιμότητα (6) Order employment * 1 Customer Και οι δύο κλάσεις έχουν την υποχρέωση να λένε για το άλλο άκρο, από πλευράς προδιαγραφών. Και οι δύο κλάσεις περιλαμβάνουν pointers προς το άλλο άκρο από πλευράς υλοποίησης.

60 Παραδείγματα (1) Person * Car Η κατευθυνόμενη σύνδεση λέει ότι ένας άνθρωπος (person) μπορεί να έχει πολλά αυτοκίνητα (car), ΑΛΛΑ δεν λέει τίποτα σχετικά με το πόσοι άνθρωποι μπορούν να έχουν ένα αυτοκίνητο.

61 Παραδείγματα (2) Insurance Company makes 1 * Insurance Contract * concerns 1..* Customer Μία ασφαλιστική εταιρεία (insurance company) έχει πολλά (0 ως πολλά) ασφαλιστικά συμβόλαια (insurance contracts). Ένας πελάτης (customer) μπορεί να έχει από 0 ως πολλά ασφαλιστικά συμβόλαια. Ένα συμβόλαιο σχετίζεται με μία ασφαλιστική εταιρεία. Ένα συμβόλαιο αφορά έναν ή περισσότερους πελάτες.

62 Συσχέτιση γενίκευσης / κληρονομικότητα Ειδική μορφή συσχέτισης, όπου μία γενική κλάση αποτελεί τη βάση για τη δήλωση μίας ή περισσοτέρων ειδικότερων, υπό κάποια έννοια, κλάσεων. Η γενική κλάση ονομάζεται υπερκλάση και οι ειδικές κλάσεις ονομάζονται υποκλάσεις. Η γενίκευση στις περισσότερες γλώσσες προγραμματισμού υλοποιείται με το μηχανισμό της κληρονομικότητας ή της επέκτασης. Η γενική κλάση παρέχει λειτουργίες, ιδιότητες, συσχετίσεις κ.λ.π. χρήσιμες σε όλες τις υποκλάσεις. Οι υποκλάσεις επεκτείνουν τη λειτουργικότητα της υπερκλάσης και παρέχουν επιπλέον λειτουργίες, όπου απαραίτητο ή εξειδικεύουν τη συμπεριφορά τους.

63 Συσχέτιση γενίκευσης (1) Animal Amhibian Mammal Reptile Dog Cat Cow Ο σκύλος, η γάτα, η αγελάδα «είναι ένα είδος» Θηλαστικού.

64 Συσχέτιση γενίκευσης (2) Vehicle Car Boat Sports car Passenger car Truck Sailing boat Motor boat Cargo ship Οι κλάσεις Vehicle, Car και Boat μπορούν να οριστούν ως αφαιρετικές κλάσεις. Μία αφαιρετική κλάση είναι αυτή που δεν έχει αντικείμενα, δεν μπορεί να έχει στιγμιότυπα.

65 Τι κληρονομείται Σε μια ιεραρχία κληρονομικότητας, όλα τα ιδιοχαρακτηριστικά και οι μέθοδοι κληρονομούνται από μια υπερκλάση σε όλες τις υποκλάσεις της. Στο διάγραμμα κλάσεων, προσδιορίζονται μόνο οι νέες ιδιότητες και οι νέες μέθοδοι που έχουν προστεθεί σε αυτές που κληρονομούνται. Παράδειγμα: Οι υπάλληλοι μπορεί να πληρώνονται με την ώρα ή να είναι μισθωτοί.

66 Προστατευμένες ιδιότητες Συνήθως, οι ιδιότητες προσδιορίζονται ως ιδιωτικές (private) για λόγους που επιβάλλει η ενθυλάκωση. Έτσι, οι ιδιότητες είναι ορατές στο εσωτερικό της κλάσης και όχι έξω από αυτή. Στα πλαίσια μιας ιεραρχίας κληρονομικότητας απαιτείται ασθενέστερος περιορισμός της ορατότητας. Για το λόγο αυτό, οι ιδιότητες προσδιορίζονται ως προστατευμένες (protected), δηλαδή ως ορατές στο εσωτερικό της κλάσης και σε όλες τις υποκλάσεις της.

67 Λάθος χρήση κληρονομικότητας Πρέπει πάντοτε να εφαρμόζεται και να ακολουθείται ο κανόνας είναι ένα είδος για την κληρονομικότητα. Τρία συνηθισμένα λάθη: Το τρίγωνο που απεικονίζει την κληρονομικότητα δείχνει προς λάθος κατεύθυνση. Γίνεται χρήση κληρονομικότητας, ενώ θα έπρεπε να γίνει χρήση άλλης σχέσης (συσσώρευσης). Χρήση κληρονομικότητας εκεί που δεν πρέπει, π.χ. κληρονομικότητα της κλάσης Άτομο (Person) από την κλάση Διεύθυνση (Address).

68 Συσχέτιση γενίκευσης (1) Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Η κλάση «Person» επεκτείνεται για να δημιουργηθεί η υποκλάση «Student». Η κλάση «Student» κληρονομεί όλες τις ιδιότητες και τις λειτουργίες της από την υπερκλάση της. Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String Σύμβολο γενίκευσης: βέλος από την ειδική (απογονική) στη γενική κλάση (γονική)

69 Συσχέτιση γενίκευσης (2) Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Προσθέτει επίσης, και μία λειτουργία (και την αντίστοιχη ιδιότητα) που επιτρέπει την ανάκτηση του πεδίου σπουδών του φοιτητή (fieldofstudy) Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

70 Συσχέτιση γενίκευσης (3) Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Η κλάση «Person» περιέχει λειτουργία που επιστρέφει κάποιες πληροφορίες με μορφή κειμένου (String) για ένα άτομο: tostring Η λειτουργία αυτή δηλώνεται και στην κλάση «Student». Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

71 Συσχέτιση γενίκευσης (4) -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Student Person Τι σημαίνει? Η λειτουργία στην κλάση «Student» υπερβαίνει (overrides) τη λειτουργία της κλάσης «Person» για τα αντικείμενα που είναι φοιτητές: όταν δηλαδή, καλούμε τη λειτουργία αυτή σε αντικείμενα «Person», τότε αν το αντικείμενο είναι όντως «Person» θα κληθεί η λειτουργία της υπερκλάσης, ενώ αν είναι «Student» θα κληθεί η λειτουργία της υποκλάσης. -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

72 Συσχέτιση γενίκευσης (5) Κλάσεις «Person» και «Student» σε Java Η κλάση «Student» δηλώνεται ως υποκλάση της κλάσης «Person» με τη χρήση της φράσης extends στη δήλωσή της, Η κλάση «Student» υπερβαίνει τη μέθοδο tostring της υπερκλάσης της, δηλώνοντας τη μέθοδο tostring εκ νέου. public class Person { protected String name; // όνομα ατόμου private int age; // ηλικία ατόμου // Κατασκευαστής public Person() { }

73 Συσχέτιση γενίκευσης (6) public void setname(string name) { this.name = name; } // Μέθοδος που θέτει το όνομα public void setage{int age) { // Μέθοδος που θέτει την ηλικία this.age = age; } public String getnameo { // Μέθοδος ανάκτησης του ονόματος return name; } public int getage() {// Μέθοδος ανάκτησης ηλικίας return age; } // Μέθοδος επιστροφής πληροφοριών για το άτομο σε αλφαριθμητ. Μορφή public String tostring() { return "Είμαι ο " + name + " και είμαι" + age + " ετών. " ;

74 Συσχέτιση γενίκευσης (7) public class Student extends Person { private String fieldofstudy; // To Πεδίο σπουδών του φοιτητή // Μέθοδος ανάθεσης του πεδίου σπουδών public void setfieldofstudy (String fieldofstudy) { this.fieldofstudy = fieldofstudy; } // Μέθοδος ανάκτησης του πεδίου σπουδών public String getfield() { } return fieldofstudy; //Νέα δήλωση (υπέρβαση) της μεθόδου tostring ειδικά για τους φοιτητές public String tostring() { } return "Είμαι ο " + name + " και είμαι " + getage() + " ετών. + "Σπουδάζω " + fieldofstudy; }

75 Υπερκαλυπτόμενη γενίκευση Vehicle Car Boat Amphibian Η κλάση Amphibian μπορεί να κληρονομήσει χαρακτηριστικά και λειτουργίες από δύο υποκλάσεις, οι οποίες κληρονομούν από μία υπερκλάση.

76 Πλήρη γενίκευση Person (complete) Man Woman Σε μία πλήρη γενίκευση δεν επιτρέπεται να προστεθεί άλλη υποκλάση, όλες οι επιτρεπτές υποκλάσεις έχουν οριστεί. Το αντίθετο είναι μία ελλειπής γενίκευση, όπου επιπλέον υποκλάσεις επιτρέπεται να προστεθούν στο μέλλον. Συνήθως, οι σχέσεις γενίκευσης είναι ελλειπείς.

77 Συσσώρευση και σύνθεση Συσσώρευση (aggregation) και σύνθεση (composition): δύο ειδικές περιπτώσεις συσχετίσεων. Yποδηλώνουν τη συσχέτιση μίας κλάσης με κάποια άλλη κλάση που αποτελεί μέρος της. Συσχέτιση όλου και μερών

78 Συσσώρευση (Aggregation) Σε τι διαφέρει από συσχέτιση??? Δεν επιτρέπεται η κυκλική συσχέτιση του μέρους με το όλο, αλλά μόνο μία συσχέτιση από το όλο προς το μέρος. Μία κλάση αποτελεί συλλογή από άλλες κλάσεις: «Αποτελείται από» «Περιέχει» «Περιλαμβάνει» «Έχει» Παράδειγμα: PC monitor, keyboard, tower Συμβολίζεται με μια συσχέτιση από το όλο προς το μέρος, στην οποία τοποθετείται ένας άσπρος ρόμβος στην πλευρά του όλου (aggregating entity)

79 Συσσώρευση (Aggregation) Ο προσωπικός υπολογιστής (η κλάση «PC») αποτελείται από μία οθόνη (κλάση «Monitor»), ένα πληκτρολόγιο (κλάση «Keyboard») και μία κεντρική μονάδα (κλάση «Tower») Monitor PC Keyboard Tower

80 Συσσώρευση (Aggregation) Wheel Person * members Car * Club Η κλάση «Club» αποτελεί συσσώρευση της κλάσης «Person»

81 Σύνθεση (Composition) Σε τι διαφέρει από συσχέτιση??? Iσχυρή μορφή συσχέτισης μεταξύ των κλάσεων: το όλο περιέχει αποκλειστικά τα μέρη του, ΔΕΝ ΜΠΟΡΕΙ κάποιο άλλο όλο να περιέχει το ίδιο αντικείμενο το αντικείμενο-τμήμα ανήκει μόνο σε ένα αντικείμενο-όλο! υπάρχει μια σχέση ''ζωής και θανάτου" μεταξύ του όλου και των μερών του: τα μέρη δημιουργούνται και καταστρέφονται ταυτόχρονα με το όλο Συμβολίζεται με μια συσχέτιση από το όλο προς το μέρος, στην οποία τοποθετείται ένας μαύρος ρόμβος στην πλευρά του όλου (aggregating entity)

82 Συσσώρευση και σύνθεση Σε τι διαφέρουν μεταξύ τους??? Η συσσώρευση χρησιμοποιείται όταν οι επιμέρους κλάσεις έχουν διάρκεια ζωής ανεξάρτητη από τη σύνθετη κλάση! Μία ρόδα μπορεί να υπάρξει και ανεξάρτητα από ένα αυτοκίνητο! Η σύνθεση χρησιμοποιείται όταν οι επιμέρους κλάσεις έχουν διάρκεια ζωής που εξαρτάται και συμπίπτει με αυτή της σύνθετης κλάσης! Δηλαδή, διαγραφή του όλου συνεπάγεται διαγραφή των μερών του!

83 Σύνθεση (Composition) Ένα πολύγωνο (κλάση «Polygon») συσχετίζεται μέσω σύνθεσης με τα σημεία (κλάση «Point») που αποτελούν τις κορυφές του. Polygon corners 3..* Point

84 Σύνθεση (Composition) Γιατί σύνθεση??? Γιατί ακόμη και στην περίπτωση που δύο πολύγωνα έχουν τις ίδιες γωνίες, εξακολουθούν να είναι δύο διαφορετικά πολύγωνα!!! Polygon corners 3..* Point

85 Σύνθεση (Composition) Η μετακίνηση σε ένα πολύγωνο θα πρέπει να συνεπάγεται τη μεταβολή των δικών του σημείων, που είναι οι κορυφές του. ΟΧΙ, όμως και για κάποιο άλλο πολύγωνο το οποίο τυχαίνει να έχει κάποιες ή όλες τις κορυφές ίδιες!!! Polygon corners 3..* Point

86 Σύνθεση (Composition) Η διαγραφή ενός πολυγώνου συνεπάγεται τη διαγραφή των σημείων του, που είναι οι δικές του κορυφές. ΟΧΙ όμως και για άλλα πολύγωνα που τυχόν έχουν για τις γωνίες τους τις ίδιες τιμές με το πολύγωνο που διαγράφεται. Polygon corners 3..* Point

87 Παράδειγμα με συσσώρευση & σύνθεση

88 Παράδειγμα με σύνθεση Ένα κτίριο αποτελείται από ένα ή περισσότερα δωμάτια και ένα δωμάτιο μπορεί να αποτελείται από μερικά υποδωμάτια

89 Σύνθεση... Κανόνας του "part of Αν έχει νόημα να πούμε ότι κάτι είναι μέρος κάποιου άλλου, τότε πολύ πιθανή η σύνθεση! Ένα δωμάτιο είναι μέρος ενός κτιρίου! ΑΛΛΑ, μία διεύθυνση δεν είναι μέρος ενός ανθρώπου! If in doubt, leave it out!!!!

90 Συσσώρευση και σύνθεση Έστω ένα πολύγωνο που αποτελείται από 3 σημεία: p1, p2, p3. Ποιο όμως είναι; Πώς θα δηλώσουμε ότι η σειρά των σημείων έχει σημασία???? Polygon 3..* Point -X:int -Y: int

91 Συλλογές από πλειότιμα άκρα συσχετίσεων Πλειότιμο άκρο: το πάνω όριο της πολλαπλότητας του άκρου είναι > 1 (π.χ. *) Σημαίνει σύνολο, δηλαδή απουσία σειράς ή διπλοεμφανίσεων (duplicates) Μπορούμε να ορίσουμε τι θέλουμε: {set} : απουσία σειράς, απουσία διπλοεμφανίσεων {ordered set} : τα αντικείμενα έχουν σειρά, απουσία διπλοεμφανίσεων {bag}: επιτρέπονται διπλοεμφανίσεις (ή πολλές εμφανίσεις) αντικειμένων {list} ή {sequence}: τα αντικείμενα έχουν σειρά και μπορεί να υπάρχουν επαναλήψεις

92 Συλλογές από πλειότιμα άκρα συσχετίσεων {ordered set} : τα αντικείμενα έχουν σειρά, απουσία διπλοεμφανίσεων. Polygon 3..* {ordered set} Point -X:int -Y: int

93 Συλλογές από πλειότιμα άκρα συσχετίσεων Car 3..* {set} Wheels Triangle 3 {set} Point Polygon 3..* {ordered set} Point Rectangle 4 {ordered set} Point Text 1..* {list} Word

94 Αυτοπαθής συσχέτιση(reflexive association) Μία κλάση μπορεί να συσχετίζεται και με τον εαυτό της με μία αυτοπαθή συσχέτιση. Πώς??? Οι κλάσεις είναι αφαιρέσεις! Η κλάση «Employee» μπορεί να συσχετίζεται με τον εαυτό της μέσω του ρόλου manager/manages. Όταν μία κλάση συσχετίζεται με τον εαυτό της: ένα στιγμιότυπο της κλάσης συσχετίζεται με ένα άλλο στιγμιότυπο της ίδιας κλάσης. Employee firstname:string lastname:string -manages 0..* 1 -manager Ένα στιγμιότυπο της κλάσης «Employee» μπορεί να είναι ο manager ενός άλλου στιγμιότυπου της κλάσης «Employee». Πολλαπλότητα του ρόλου «manages»: 0..* ΑΡΑ, ένας Employee μπορεί να μην έχει άλλους Employees να κάνει manage.

95 Αυτοπαθής συσχέτιση(reflexive association) Node * * Ένα δίκτυο αποτελείται από πολλούς κόμβους (nodes) που συνδέονται μεταξύ τους -wife Person 1 1 -husband married to Ένας σύζυγος είναι παντρεμένος με τη σύζυγό του Εάν ένας άνθρωπος δεν είναι παντρεμένος, τότε η σχέση married to δεν μπορεί να εφαρμοστεί

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Ανάλυση Πληροφοριακών Συστημάτων Εαρινό Εξάμηνο 2018-2019 Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Διαγράμματα Κλάσεων Τα βασικά στοιχεία Διαλέξεις παρουσιάσεις Το υλικό του μαθήματος στηρίζεται

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 31/10/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Class Diagrams Διαγράμματα Κλάσεων Διαγράμματα

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 7/11/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Class Diagrams Διαγράμματα Κλάσεων Άξονες

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

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

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

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

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

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams Μοντελοποίηση Συστημάτων Διαγράμματα Κλάσεων ClassDiagrams Διαγράμματα Κλάσεων Χρησιμοποιούνται στα βήματα: Ανάλυση απαιτήσεων Π.Σ. Σχεδιασμός Π.Σ. Είναι στατικά διαγράμματα που δείχνουν: Κλάσεις Ιδιότητες

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

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

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

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια. Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων 21/11/2016 Τεχνολογία Λογισμικού & Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Ανάλυση Συστημάτων Object Diagrams Διαγράμματα Αντικειμένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 5: Διαγράμματα Κλάσης (1ο Μέρος)

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

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

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

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

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

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

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

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

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

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

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 14/11/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Class Diagrams Διαγράμματα Κλάσεων Άξονες

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

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

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

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

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

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων Διαγράμματα UML στην Ανάλυση Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων περιεχόμενα παρουσίασης Διαγράμματα επικοινωνίας Διαγράμματα ακολουθίας Διαγράμματα

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

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

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

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

Τα διαγράµµατα κλάσεων

Τα διαγράµµατα κλάσεων 1 Ελληνικό Ανοικτό Πανεπιστήµιο Τα διαγράµµατα κλάσεων ρ. Πάνος Φιτσιλής 2 Περιεχόµενα Βασικές έννοιες µοντέλου κλάσεων Βασικές συσχετίσεις Παραδείγµατα 3 ιαγράµµατα κλάσεων (class diagrams) Είναι το βασικότερο

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΤΕΛΑ ΣΥΣΤΗΜΑΤΟΣ Διδάσκων: Γ. Χαραλαμπίδης, Επ. Καθηγητής

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις. Μέσω της κληρονομικότητας μπορούμε να δημιουργήσουμε µια νέα τάξη (θυγατρική)

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

Η γλώσσα μοντελοποίησης UML. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Η γλώσσα μοντελοποίησης UML. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Η γλώσσα μοντελοποίησης UML 1 Περιεχόμενα Διαγράμματα περιπτώσεων χρήσης Διαγράμματα ακολουθίας Διαγράμματα συνεργασίας Διαγράμματα καταστάσεων Διαγράμματα κλάσεων 2 Περιπτώσεις χρήσης Οι περιπτώσεις χρήσης

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

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

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

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

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

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

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

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

ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9) ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΜΕΣΟΛΟΓΓΙ) ΑΝΑΛΥΣΗ ΚΑΙ ΣΧΕΔΙΑΣΜΟΣ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9) ΓΙΩΡΓΟΣ ΜΟΥΡΚΟΥΣΗΣ Μηχανικός Η/Υ & Πληροφορικής

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

Η γλώσσα μοντελοποίησης UML. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 7

Η γλώσσα μοντελοποίησης UML. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 7 Η γλώσσα μοντελοποίησης UML 1 Περιεχόμενα Διαγράμματα περιπτώσεων χρήσης Διαγράμματα ακολουθίας Διαγράμματα συνεργασίας Διαγράμματα καταστάσεων Διαγράμματα κλάσεων 2 Περιπτώσεις χρήσης Οι περιπτώσεις χρήσης

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

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

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

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

Μοντελοποίηση Πεδίου

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

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

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

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο 09 Η γλώσσα UML I Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Εαρινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Unified Modeling Language

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

Διαχείριση Πληροφοριακών Συστημάτων

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

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

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

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

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

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

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

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

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής περιεχόμενα παρουσίασης Διαγράμματα πακέτων Διαγράμματα συστατικών Διαγράμματα παράταξης Το μοντέλο των 4+1 όψεων τεκμηρίωση αρχιτεκτονικής και UML

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εννοιολογικός σχεδιασμός βάσεων δεδομένων Το μοντέλο Οντοτήτων/Συσχετίσεων Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Γενικά για οντότητες και συσχετίσεις 2 Διαγράμματα

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

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα ΕΙΣΑΓΩΓΗ ΣΤΗ UML UML Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις ιαγράµµατα Παραδείγματα Ορισμός του μοντέλου Αποτελεί µια αφηρηµένη περιγραφή ενός Φυσικού συστήµατος. Αποτελεί ένα σχέδιο για την

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

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

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

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

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

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) Σκοπός Σκοπός των συσχετίσεων είναι να αναπαριστούν την αλληλεπίδραση μεταξύ των κλάσεων και των αντικειμένων. Απεικονίζονται διαγραμματικά με μία γραμμή μεταξύ

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

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

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

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

ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS

ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS Διάγραμμα Περιπτώσεων χρήσης 2 Να κατασκευάσουμε ένα διάγραμμα περιπτώσεων χρήσης για το παρακάτω σύστημα. Το σύστημα τηρεί αρχεία μαθητών, καθηγητών και μαθημάτων.

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

Ανάλυση Περιπτώσεων Χρήσης

Ανάλυση Περιπτώσεων Χρήσης Ανάλυση Περιπτώσεων Χρήσης ανάλυση απαιτήσεων ü Διαγράμματα Δραστηριότητας. Επιχειρησιακή μοντελοποίηση και ροή εργασιών σε περιπτώσεις χρήσης ü Μοντελοποίηση Πεδίου. Δημιουργία διαγραμμάτων κλάσεων για

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

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

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

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

UML: Unified modelling language

UML: Unified modelling language UML: Διαγράμματα UML: Unified modelling language Γλώσσα μοντελοποίησης για ανάλυση και σχεδιασμό Παρέχει το συμβολισμό για ανάλυση και σχεδιασμό. Είναι γλώσσα συμβολισμού. Δεν είναι ολόκληρη μεθοδολογία.

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

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

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

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

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

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

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια Περιεχόμενα Πρόλογος... 11 Κεφάλαιο 1ο. Εισαγωγή στη γλώσσα UML 1.1 Προσθέτοντας μια νέα μέθοδο...13 1.2 Πως αναπτύχθηκε η UML...14 1.3 Κατανοώντας την UML...15 1.4 Αναγνωρίζοντας τα επί μέρους τμήματα

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 7: Εισαγωγή στη UML Τι είναι η UML; 2 Βασικό πρόβλημα τεχνολογίας λογισμικού Έλλειψη κοινά αποδεκτής «γλώσσας» για την έκφραση των σχεδίων λογισμικού. Το

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML για το µάθηµα ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ Ακαδηµαϊκό Έτος 2012-2013 «Αντικειµενοστρεφής Ανάλυση Ηλεκτρονικού Καταστήµατος Προσφορών (e-shop)» Η άσκηση αφορά στη χρήση της

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 18/11/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων

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

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

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

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

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

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 1: Αντικειμενοστραφής Προγραμματισμός Εισαγωγή OBJECT-ORIENTED PROGRAMMING ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

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

Εισαγωγή στον Προγραμματισμό με C++

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

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

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

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

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

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

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

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

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία 1 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στην αντικειµενοστρεφή τεχνολογία ρ. Πάνος Φιτσιλής Περιεχόµενα Γιατί µοντελοποιούµε Εισαγωγή στη UML Ένα απλό παράδειγµα 2 Γιατί µοντελοποιούµε; Ησηµασία της µοντελοποίησης

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

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

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

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

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

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

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

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

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

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