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

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

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

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

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

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

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

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

UML: Unified modelling language

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μέθοδοι μοντελοποίησης

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

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

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

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

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

Εισαγωγή στη γλώσσα UML

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

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

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

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

Ανάλυση και Σχεδιασμός ΠΣ Σχεδίαση: Σχεδίαση Κλάσεων και Μεθόδων

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

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

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

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

Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII

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

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

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

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

ΟΔΗΓΙΕΣ ΓΙΑ ΧΡΗΣΗ ΤΟΥ ΕΡΓΑΛΕΙΟΥ RATIONAL ROSE

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

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

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

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

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

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

Περιεχόμενα. ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη UML... 19

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

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

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

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

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

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

Ειδικά θέματα τεχνολογίας λογισμικού

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

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

Σχεδιασμός Βάσεων Δεδομένων

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

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

Rational Unified Process:

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

Transcript:

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

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

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

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

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

Μοντελοποίηση με τη γλώσσα 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λειτουργίες και ιδιότητες με εμβέλεια κλάσης Β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; }

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

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

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

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

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

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

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

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

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

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

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

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

Πηγές Ε. Κιουντούζης, Μεθοδολογίες Ανάλυσης και Σχεδιασμού Πληροφοριακών Συστημάτων,Εκδόσεις Α.Σταμούλη, Αθήνα 2002 Γιάννης Τζίτζικας. Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων, Πανεπιστήμιο Κρήτης Shari Lawrence Pfleeger. Τεχνολογία Λογισμικού: Θεωρία και Πράξη, τόμος 1, Κλειδάριθμος, Αθήνα, 2003 Leszek A. Maciaszek, Requirements Analysis and System Design (2nd edition), Addison Wesley, 2005 A.Dennis, B. Haley Wixom, D. Tegarden, Systems Analysis and Design with UML Version 2.0 (2nd edition) Wiley, 2005 Booch G., Rumbaugh J., Jacobson I. Unified Modeling Language User Guide. Addison- Wesley Professional 2 Edition, ISBN 0321267974. Pascal Roques, UML in Practice, John Wiley, 2004 UML Fundamentals & OOAD UML 2.0, www.acm.org Αφροδίτη Τσαλγατίδου. Εισαγωγή στη UML, Καποδιστριακό Πανεπιστήμιο Αθηνών Αντικειμενοστρεφής Ανάπτυξη Λογισμικού με τη UML, επιμέλεια Π. Φιτσιλής, Κλειδάριθμος 2006 Ιωάννης Γαβιώτης. Πληροφοριακά Συστήματα Μοντελοποίηση με UML, Πανεπιστήμιο Αιγαίου www.agilemodeling.com/style/classdiagram.htm http://www.devx.com/enterprise/article/28576