UML (Unified Modeling Language ) Μεγάια Έξγα Λνγηζκηθνύ = επηθνηλσλία Πνιινί πξνγξακκαηηζηέο, πνιινί πειάηεο-ρξήζηεο, νη επόκελεο γεληέο, επηβάιινπλ ηε ρξήζε θνηλήο νξνινγίαο ε άιια ηερληθά έξγα ε ρξήζε θνηλήο νξνινγίαο θαη ζπκβνιηζκώλ είλαη απηνλόεηε θαη θαζηεξσκέλε H UML είλαη κία γιώζζα κνληεινπνίεζεο (ζύλνιν από δηαγξάκκαηα) ησλ θαηαζθεπαζκάησλ ελόο ινγηζκηθνύ. Δελ είλαη γιώζζα πξνγξακκαηηζκνύ! 1
Εζσηεξηθή όςε Είδε Δηαγξακκάησλ ηεο UML Εμσηεξηθή όςε Δηάγξακκα Πεξηπηώζεσλ Xξήζεο (Use Case Diagram) Στατικά Διαγπάμματα Aντικειμένων και Kλάσεων Δςναμικά Kαταστάσεων, Ακολοςθίαρ, Σςνεπγασίαρ, Δπαστηπιοτήτων Υλοποίησηρ Σςστατικών, Διάταξηρ 2
Μνληεινπνίεζε ζπζηεκάησλ κε UML Η UML απνηππώλεη ηόζν ηε ζηαηηθή δνκή, όζν θαη ηε δπλακηθή ζπκπεξηθνξά ελόο ζπζηήκαηνο. Έλα αληηθεηκελνζηξεθέο ζύζηεκα κνληεινπνηείηαη σο κία ζπιινγή αληηθεηκέλσλ πνπ αιιειεπηδξνύλ γηα ηελ εθηέιεζε κηαο ιεηηνπξγίαο ε νπνία είλαη ηειηθά αμηνπνηήζηκε από ηνλ ρξήζηε. Η ζηαηηθή δνκή θαζνξίδεη ηα είδε ησλ αληηθεηκέλσλ πνπ είλαη ζεκαληηθά γηα ην ζύζηεκα θαζώο θαη ηηο ζπζρεηίζεηο κεηαμύ ηνπο. Η δπλακηθή ζπκπεξηθνξά πξνζδηνξίδεη ηελ εμέιημε ησλ αληηθεηκέλσλ ζε ζρέζε κε ηνλ ρξόλν θαη ηελ επηθνηλσλία κεηαμύ ηνπο. 3
ηαηηθή Δνκή ε έλα αληηθεηκελνζηξεθέο ζύζηεκα, ηα δνκηθά ηνπ ζηνηρεία είλαη νη θιάζεηο. Οη ζρέζεηο κεηαμύ ησλ θιάζεσλ επηηξέπνπλ ηε ζπλεξγαζία ησλ αληηθεηκέλσλ ηνπο Με ηελ έλλνηα «Κιάζε» νξίδνπκε κηα νκάδα από αληηθείκελα κε θνηλή δνκή (ηδηόηεηεο) θαη ζπκπεξηθνξά (ιεηηνπξγίεο) Σα δηαγξάκκαηα θιάζεσλ απνηππώλνπλ ηε ζηαηηθή δνκή Πνιύ ζπρλά, ηα δηαγξάκκαηα θιάζεσλ είλαη ην κόλν είδνο δηαγξακκάησλ πνπ ρξεζηκνπνηείηαη ιόγσ ησλ πιεξνθνξηώλ πνπ παξέρεη ζρεηηθά κε ηνλ θώδηθα 4
Κιάζε - όνομα : string - ΑΜ : string - Ημ.Γεν. : Date Φοιηηηήρ + εγγπαθήσεμάθημα(μάθημα x) : boolean + άθηζεμάθημα() + εκηύπωζεονομα() Οη ηδηόηεηεο (attributes) ηωλ θιάζεωλ πξνζδηνξίδνληαη κε ηνλ αθόινπζν ζπκβνιηζκό: οραηόηηηα όνομα : ηύπος = προκαθοριζμένη_ηιμή Οη ιεηηνπξγίεο (operations) ηωλ θιάζεωλ πξνζδηνξίδνληαη κε ηνλ αθόινπζν ζπκβνιηζκό: οραηόηηηα όνομα (λίζηα παραμέηρων) : επιζηρεθόμενος_ηύπος 5
Παξαδείγκαηα Κιάζεσλ θαη Αληηθεηκέλσλ 6
Οξαηόηεηα Η νξαηόηεηα κπνξεί λα ιάβεη ηηο ηηκέο: δημόζια (public) ζπκβνιίδεηαη κε (+), προζηαηεσμένη (protected) ζπκβνιίδεηαη κε (#) ιδιωηική (private) ζπκβνιίδεηαη κε (-). κία ηδηόηεηα κε δημόζια νξαηόηεηα είλαη απεπζείαο πξνζπειάζηκε από άιιεο θιάζεηο (θαη αληηθείκελα) κία ηδηόηεηα κε ιδιωηική νξαηόηεηα είλαη πξνζπειάζηκε κόλν από ηελ ίδηα ηελ θιάζε κία ηδηόηεηα κε προζηαηεσμένη νξαηόηεηα είλαη πξνζπειάζηκε κόλν από ηελ ίδηα ηελ θιάζε θαη ηηο ππνθείκελεο θιάζεηο ηεο (θιάζεηο-παηδηά). 7
ρέζεηο κεηαμύ Κιάζεσλ Στέζη Λειηοσργία Σσμβολιζμός Σπζρέηηζε (Association) Γελίθεπζε Κιεξνλνκηθόηεηα (Generalization, Inheritance) ή Πεξηγξαθή κηαο γεληθήο ζρέζεο κεηαμύ αληηθεηκέλωλ ή θιάζεωλ (είλαη ε «θόιια» ηνπ ζπζηήκαηνο) Μία ζπζρέηηζε κεηαμύ κηαο γεληθήο πεξηγξαθήο θαη κηαο εηδηθόηεξεο πεξίπηωζεο - ππνδειώλεη θιεξνλνκηθόηεηα: Η απόδνζε ραξαθηεξηζηηθώλ θαη ιεηηνπξγηώλ από κηα θιάζε (παηέξαο) ζε άιιεο (παηδηά) Σύλζεζε (Composition) Σρέζε πεξηεθηηθόηεηαο κεηαμύ θιάζεωλ (πην ζηελή): Όηαλ δηαγξάθεηαη ην ζύλζεην αληηθείκελν, δηαγξάθνληαη απηόκαηα θαη όια ηα Σπλαξκνιόγεζε (Aggregation) ζηηγκηόηππα ηωλ ζπζηαηηθώλ ηνπ. Σρέζε πεξηεθηηθόηεηαο κεηαμύ θιάζεωλ: Η ζρέζε πνπ ζπλδέεη θιάζεηο πνπ πεξηγξάθνπλ ηε ζύλζεζε ζπλόινπ από απινύζηεξα κέξε 8
πζρέηηζε (Association) Όλνκα ζπζρέηηζεο (π.ρ. «Δηδάζθεη») Πνιιαπιόηεηα (π.ρ. 1 ή 1..3, θηι) Ρόινη (π.ρ. «Δηδάζθσλ», «Αληηθείκελν») 9
Γελίθεπζε ή Κιεξνλνκηθόηεηα Η ζρέζε Γελίθεπζεο ή Κιεξνλνκηθόηεηαο είλαη κία ζρέζε κεηαμύ κηαο γεληθήο πεξηγξαθήο (παηέξαο) θαη κηαο εηδηθόηεξεο πεξηγξαθήο (παηδί) πνπ ηελ επεθηείλεη. Κάζε θιάζε-παηδί θιεξνλνκεί όιεο ηηο ηδηόηεηεο θαη ιεηηνπξγίεο ηεο θιάζεο-παηέξαο, αιιά κπνξεί λα έρεη θαη δηθά ηνπ. Υπάλληλορ - όνομα : string - κωδικόρ : string + ςπολογιζμόρμιζθού() Τεσνικόρ - αμοιβή/ωπα : double Διοικηηικόρ Υπάλληλορ - αμοιβή/μήνα : double Πωληηήρ - αμοιβή/mήνα : double - bonus : double 10
ύλζεζε (Composition):κηα παξαιιαγή ηεο ζπλαξκνιόγεζεο περιέτει, είναι μέρος ηοσ, αποηελείηαι από Τα ζσζηαηικά (π.τ. «Επικεθαλίδα», «Κσρίως Σώμα», «Υποζέλιδο») είναι τρήζιμα μόνο όζο σπάρτει ηο ζύνθεηο ανηικείμενο (π.τ. «Αναθορά») 11
πλαξκνιόγεζε - πλάζξνηζε (Αggregation) περιέτει, είναι μέρος ηοσ, αποηελείηαι από Τα ζσζηαηικά (π.τ. «Άηρακηος», «Φηερό», «Κινηηήρας», κηλ) είναι τρήζιμα ακόμα κι αν δεν σπάρτει ηο ζύνθεηο ανηικείμενο (π.τ. «Αεροζκάθος») 12
Πνιιαπιόηεηεο * Οπνηνζδήπνηε αξηζκόο αληηθεηκέλσλ 1 Αθξηβώο έλα αληηθείκελν n Αθξηβώο n αληηθείκελα (όπνπ n αθέξαηνο) 0..1 Μεδέλ ή έλα αληηθείκελα (ππνδειώλεη όηη ε ζπζρέηηζε είλαη πξναηξεηηθή) n..m Εύξνο ηηκώλ κε κηθξόηεξε δπλαηή ηηκή n θαη κέγηζηε ηηκή m n, m Δηαθξηηνί ζπλδπαζκνί (π.ρ. έλα απηνθίλεην κπνξεί λα έρεη 2 ή 4 πόξηεο) 13
UML Παξαδείγκαηα Πνιιαπιόηεηαο Έλαο Φνηηεηήο δηαηεξεί αθξηβώο έλα Αληίγξαθν, ελώ έλα Αληίγξαθν αλήθεη ζε έλαλ αθξηβώο Φνηηεηή Φοιηηηήρ διαηηρεί ένα 1 1 Ανηίγπαθο Καθηγηηήρ Καθηγηηήρ εργάζεηαι ζε 1..n 1 προεδρεύει ζε 1 0..1 Τμήμα Τμήμα Φοιηηηήρ 0..n παρακολουθεί 0..n Τάξη 14