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

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

Αντικειμενοστρεφής Σχεδιασμός

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

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

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

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

UML: Unified modelling language

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

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

Οι περιπτώσεις χρήσης

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

1 η ΑΣΚΗΣΗ ΕΡΓΑΣΤΗΡΙΟΥ (ομαδική: 2 ή 3 ατόμων) (Ημερομηνία Παράδοσης: 18/11/2017) (Ζητούμενο)

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

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

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

Share and Storage Management. Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ

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

Περιπτώσεις Χρήσης και Διαγράµµατα Περιπτώσεων Χρήσης. Use Cases and Use Case Diagrams

Μεθοδολογίες Παραγωγής Λογισµικού

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

Use Cases: μια σύντομη εισαγωγή. Heavily based on UML & the UP by Arlow and Neustadt, Addison Wesley, 2002

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΑΠΟ EXCEL ΣΤΟ GRETL

Επίλυση προβλήματος με Access

Microsoft PowerPoint 2010 Πανεπιστήμιο Κύπρου

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

Αρχές Προγραμματισμού Υπολογιστών

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

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

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

Δείχτες Επιτυχίας και Δείχτες Επάρκειας

Management School School Profile Save

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

Document Scanning System Ιανουάριος, 2014

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Εισαγωγή στο περιβάλλον Code::Blocks

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Αρχιτεκτονική Λογισμικού

Το βιβλίο διευθύνσεων των Windows

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

Διαγράμματα περιπτώσεων χρήσης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Ιστορικό. *Ομάδα ανάπτυξης: Γρεασίδης Θοδωρής: 265 Κουτσαυτίκης Δημήτρης: 258 Μπούρα Βάγια: 257 Πετράκη Ελένη: 266 Φουντά Σταυρούλα: 256

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Joomla! with K2 - User Guide

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης.

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

Μοντελοποίηση Συστημάτων

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

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ

Απλά, γρήγορα, σωστά ΒΑΣΙΚΕΣ Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΩΝ

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

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

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Management Classes Create Class Create Class Management Classes List of Classes

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Τεχνολογία λογισμικού στην πράξη

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

Πίνακας Περιεχομένων

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

Περίπτωση Χρήσης Use case

Εισαγωγή στην Πληροφορική

Βάσεις δεδομένων (Access)

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

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

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

SIMATIC MANAGER SIMATIC MANAGER

Μοντελοποίηση Συστημάτων

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

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

Ελληνικό Ανοικτό Πανεπιστήµιο. Τα διαγράµµατα UML. ρ. Πάνος Φιτσιλής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ. Ενότητα 1 η : Ανάπτυξη Λογισμικού & Προγραμματισμός

Δημιουργία μιας εφαρμογής Java με το NetBeans

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1 ο επαναληπτικό μάθημα)

Epsilon Net PYLON Platform

Η Διαδικασία Σχεδιασμού Συστημάτων

Προσομείωση ασύρματων δικτύων με τη χρήση του OPNET Modeler

SPSS Statistical Package for the Social Sciences

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

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

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πεδί α

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Αρχίζοντας. Το Joomla τρέχει: Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) PHP MySql

Πληροφορική 2. Βάσεις Δεδομένων (Databases)

Active Directory Users and Computers. Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ

ΑΝΑΠΑΡΑΓΩΓΗ ΜΑΘΗΣΙΑΚΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΟ ΦΩΤΟΔΕΝΤΡΟ ΜΑΘΗΣΙΑΚΑ ΑΝΤΙΚΕΙΜΕΝΑ. Οδηγίες για Java

Λιβανός Γιώργος Εξάμηνο 2017Β

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

Transcript:

Διάλεξη 8-9: Αντικειμενοστρεφής Σχεδιασμός Ι Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διαδικασίες Ανάπτυξης Λογισμικού, Μοντέλα -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων -Φάση 1: Ανάλυση Απαιτήσεων & Προδιαγραφές (Αναφορά Απαιτήσεων, Περιπτώσεις Χρήσης, Ανάλυση Κλάσεων, Analysis Class Diagrams) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 1

Διαδικασία Ανάπτυξης Λογισμικού Διαδικασία Ανάπτυξης Λογισμικού (software process) Ένα δομημένο σύνολο (framework)από ενέργειες που χρειάζονται για να αναπτυχθεί ένα λογισμικό Υπάρχουν πολλές διαδικασίες ανάπτυξης λογισμικού (software models/frameworks) με πολλές ιδιαιτερότητες Μοντέλο Διαδικασίας Ανάπτυξης Λογισμικού (software process model) Είναι μία αφηρημένη/απλοποιημένη αναπαράσταση της διαδικασίας ανάπτυξης λογισμικού. Κάθε στάδιο της διαδικασίας ανάπτυξης λογισμικού αναγνωρίζεται Το μοντέλο (process model)αναπαριστά τις δραστηριότητες (activities) που σχετίζονται άμεσα με το κάθε στάδιο Η συλλογή των μοντέλων μπορεί να παράξει την γενική εικόνα που αναπαριστά την διαδικασία ανάπτυξης λογισμικού. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 2

Δραστηριότητες των Μοντέλων Διαδικασίας Ανάπτυξης Λογισμικού Βασικές Δραστηριότητες των μοντέλων συμπεριλαμβάνουν: Απαιτήσεις:Συλλογή απαιτήσεων σε διάφορα επίπεδα (επίπεδο οργανισμού, στρατηγικό επίπεδο) Ανάλυση:κατανόηση της φύσης του λογισμικού που θα αναπτυχθεί, το πεδίο πληροφόρησης, απαραίτητες λειτουργίες, συμπεριφορά, απόδοση και διαπροσωπεία Σχεδίαση:Αναγνώριση/Σχεδίαση δομών δεδομένων, αλγόριθμων, αρχιτεκτονικής προγράμματος και διαπροσωπείας Υλοποίηση:μετάφραση των απαιτήσεων και της ανάλυσης σε εκτελέσιμο κώδικα Συντήρηση:τροποποίηση του λογισμικού μετά την παράδοση του στον πελάτη. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 3

Γενικά Μοντέλα Διαδικασίας Ανάπτυξης Λογισμικού Waterfall: Γραμμικό framework Prototyping: Επαναληπτικό framework Αυξητικό: Συνδυασμός γραμμικού/ επαναληπτικού framework Spiral: Συνδυασμός γραμμικού/ επαναληπτικού framework, έμφαση στην εκτίμηση του κινδύνου (risk assessment) Rapid Application Development (RAD): Επαναληπτικό framework, έμφαση στη γρήγορη ανάπτυξη Extreme Programming:καινούριες εκδόσεις δημιουργούνται πολύ συχνά, μικροί κύκλοι ανάπτυξης(time-boxing), σχεδιασμένο για συχνές αλλαγές απαιτήσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 4

Build & Fix Καθόλου απαιτήσεις! Καθόλου Σχεδίαση! Καθόλου Προδιαγραφές! Υλοποίηση της πρώτης έκδοσης + Πολύ αποδοτικό οικονομικά για μικρά προγράμματα - Χαμηλής ποιότητας λογισμικό - Καθόλου αποδοτικό για μεγάλα προγράμματα - Υψηλό κόστος για μεγάλα προγράμματα - Ο χρόνος παράδοσης σχεδόν δεν τηρείται ποτέ - Εφιάλτης Συντήρησης Αλλαγές µέχρι να ικανοποιηθεί ο πελάτης Συντήρηση (µετά την παράδοση) Απόσυρση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 5

Waterfall Model Γραμμικό μοντέλο Διαδοχικές φάσεις με κάποια μικρή επικάλυψη Απαιτήσεις Έμφαση στον προγραμματισμό, προϋπολογισμούς και προθεσμίες Ανάλυση + Διακριτές φάσεις + Αποδοτικό για μεγάλα συστήματα με ξεχωριστά αυτόνομα components - Δύσκολο να προσαρμοστεί στην αλλαγή - Όχι πολύ ευέλικτο - Συνήθως βγαίνεις εκτός προϋπολογισμού Σχεδίαση Υλοποίηση Συντήρηση Απόσυρση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 6

Waterfall Model + feedback loops Ανατροφοδότηση από τη συντήρηση σε προηγούμενες φάσεις Απαιτήσεις Αλλαγή Απαιτήσεων + Πιο ευέλικτο από το απλό waterfall model - Όχι κατάλληλο για μικρά προγράμματα Ανάλυση Σχεδίαση Υλοποίηση Συντήρηση Απόσυρση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 7

Rapid Prototyping Βασισμένο σε Πρωτότυπα: ατελείς εκδόσεις του λογισμικού Διατίθενται από τα αρχικά στάδια του προγράμματος + Οι χρήστες πειραματίζονται γρήγορα με το σύστημα πιο ποιοτικές απαιτήσεις + Πιο αποδεκτό από τους τελικούς χρήστες αφού έχουν εμπλακεί στην υλοποίηση - Συνήθως γίνεται συμβιβασμός για να εξελιχθεί το πρωτότυπο ως το τελικό προϊόν πιο γρήγορα - Χρειάζεται αρκετή εμπειρία από τους προγραμματιστές Rapid Prototype Ανάλυση Σχεδίαση Αλλαγή Απαιτήσεων Υλοποίηση Συντήρηση Απόσυρση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 8

Incremental Development Συνεχής αναπληροφόρηση Συνεχής βελτίωση Το πρόγραμμα διασπάται σε μικρότερες εκδόσεις Κάθε φάση έχει μερική επικάλυψη με τις διπλανές της + Μειώνει το ρίσκο + Πολύ ευέλικτο + Μικρά, επαναχρησιμοποιήσιμα κομμάτια κώδικα Περιγραφή Απαιτήσεων - Κατάλληλο για Μικρά ως Μεσαία προγράμματα Προδιαγραφές Ανάπτυξη Επαλήθευση Αρχική Έκδοση Ενδιάμεσες Ενδιάμεσες Ενδιάμεσες Εκδόσεις Εκδόσεις Εκδόσεις Τελική Έκδοση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 9

Άλλα γνωστά μοντέλα Rapid Application Development RAD Spiral Development Model TEAM A TEAM B TEAM C Extreme Programming ΥΒΡΙΔΙΚΑ και πολλά άλλα! ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 10

To Συμπέρασμα! How the customer explained it How the project leader understood it How the analyst designed it How the programmer coded it How the business consultant described it How the project was documented What operations were installed What the customer was billed How it was supported What the customer really needed ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 11

Τι θα χρησιμοποιήσουμε; Rapid Prototyping Rapid Prototype Αλλαγή Απαιτήσεων Ανάλυση Φάση 1:Ανάλυση Απαιτήσεων και Προδιαγραφές Σχεδίαση 4 Φάσεις: Φάση 2:Σχεδίαση Φάση 3: Υλοποίηση Φάση 4:Συντήρηση Υλοποίηση Συντήρηση Απόσυρση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 12

Φάση 1: Ανάλυση Απαιτήσεων και Προδιαγραφές 1Α. Ανάλυση Απαιτήσεων (Requirements Analysis) Περιγραφή των αναγκών του πελάτη (requirements statement) Αναγνώριση ενδιαφερομένων Συνεντεύξεις χρηστών Ανάπτυξη περιπτώσεων χρήσης (use cases). Αποκαλύπτουν βασικά χαρακτηριστικά του προγράμματος. Αποτελούν περιγραφικές απαντήσεις σε ερωτήσεις όπως: Ποιός θα χρησιμοποιήσει το σύστημα; Τι ενέργειες μπορούν να κάνουν οι χρήστες; Πώς αλλιώς θα μπορούσε αυτό να λειτουργήσει αν κάποιος άλλος έκανε την ενέργεια ή ο ίδιος χρήστης είχε διαφορετικό στόχο; Τι προβλήματα μπορεί να προκύψουν με το σύστημα; Ανάπτυξη Γρήγορων Πρωτοτύπων(rapid prototyping) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 13

Φάση 1: Ανάλυση Απαιτήσεων και Προδιαγραφές (συν.) 1Β. Προδιαγραφές Συστήματος (System Specification) Προκαταρκτική αναγνώριση κλάσεων (Analysis Class Diagram) Συγκεκριμένη περιγραφή του τι θα πρέπει κάνει το πρόγραμμα (όχι πως θα το κάνει). Παράδειγμα του τι μπορεί να περιλαμβάνουν οι προδιαγραφές: Overall description Product perspective System Interfaces User Interfaces Hardware interfaces Software interfaces Communication Interfaces Memory Constraints Operations Site Adaptation Requirements Product functions User characteristics Constraints, assumptions and dependencies Specific requirements External interface requirements Functional requirements Performance requirements Design constraints Standards Compliance Logical database requirement Software System attributes Reliability, Availability, Security, Maintainability, Portability Other requirements ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 14

Φάση 2: Σχεδίαση Σχεδιασμός των αναγνωρισμένων κλάσεων και της αλληλεπίδρασης των κλάσεων Χρήση της τεχνικής των Καρτών Class-Responsibilities-Collaborators (CRC) Χρήση Διαγραμμάτων Ακολουθίας (sequence diagrams) Χρήση Διαγραμμάτων Κλάσεων (class diagrams) Πέντε στάδια σχεδιασμού αντικειμένων: Ανακάλυψη Αντικειμένου (Object discovery) Συναρμολόγηση Αντικειμένου (Object assembly) Κατασκευή Συστήματος Επέκταση Συστήματος Επαναχρησιμοποίηση κλάσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 15

Φάση 2: Σχεδίαση Κατευθυντήριες γραμμές για σχεδιασμό των αντικειμένων: Οι κλάσεις προκύπτουν από το πρόβλημα επεκτείνονται και ωριμάζουν καθώς χρησιμοποιούνται για την επίλυση και άλλων προβλημάτων. Το μεγαλύτερο τμήμα του σχεδιασμού σας είναι να ανακαλύψετε τις κλάσεις που σας χρειάζονται. Δεν είναι ανάγκη να προβλέψετε τα πάντα από την αρχή μαθαίνετε καθώς προχωράτε. Ξεκινήστε τον προγραμματισμό νωρίς, ώστε να έχετε κάτι που θα αποδεικνύει την αξία ή προχειρότητα του σχεδιασμού σας. KIS: keep-it-simple.οι απλές λύσεις είναι συνήθως οι καλύτερες. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 16

Φάση 3: Υλοποίηση Φάση της μετατροπής του αρχικού σχεδιασμού σε πρόγραμμα προς μετάφραση και εκτέλεση 3Α. Αναγνώριση Τμήματος Πυρήνα Πυρήνας: Στόχος εδώ είναι να εντοπίσετε το τμήμα που αποτελεί τον πυρήνα του προγράμματός σας, από τον οποίο θα προκύψει το τελικό σύστημα. Ο πυρήνας μπορεί να μην περιέχει τα πάντα, είναι όμως η βάση για το χτίσιμο των λειτουργιών του συστήματός σας. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 17

Φάση 3: Υλοποίηση (συν.) 3Β. Πρόσθεση Λειτουργιών Μετά το κτίσιμο του πυρήνα, γίνεται η υλοποίηση των λειτουργιών του συστήματος. Κάθε ξεχωριστή λειτουργία αντιπροσωπεύεται στη φάση τού σχεδιασμού από μια αντίστοιχη περίπτωση χρήσης (use case). Η υλοποίηση των διαφορετικών περιπτώσεων χρήσης γίνεται διαδοχικά σε διαφορετικές επαναλήψεις και μέχρι να ολοκληρωθεί η υλοποίηση όλων των συστατικών του συστήματος. Πως δικαιολογείται η «επαναληπτική» προσέγγιση (iteration over the use cases); ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 18

Φάση 4: Συντήρηση Η φάση της συντήρησης ή εξέλιξης του κώδικα: Διόρθωση σφαλμάτων. Αλλαγές στον κώδικα με βάση την εμπειρία χρήσης του. Πρόσθεση νέων λειτουργιών. Καλύτερη ικανοποίηση των απαιτήσεων. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 19

ΟΟ Σχεδιασμός και Ευθύνες Πως σχεδιάζουμε αντικειμενοστρεφή προγράμματα; Ο ΟΟ σχεδιασμός εστιάζει στην αναγνώριση των κλάσεωνενός προβλήματος και στην ανάθεση ευθυνώνστις κλάσεις (λειτουργίες που η κλάση είναι υπεύθυνη να εκτελέσει). Η ανάθεση ευθυνών συνεπάγεται ανάθεση ανεξαρτησίας. Δημιουργία ανεξάρτητων υποσυστημάτων, τα οποία μπορούν εύκολα να επαναχρησιμοποιηθούν. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 20

Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού Στις ακόλουθες διαφάνειες θα δούμε σαν παράδειγμα τη διαδικασία ανάπτυξης του συστήματος «Βιβλίο Διευθύνσεων»* αναλύοντας όλες τις φάσεις που αναφέραμε. Φάση 1Α: Ανάλυση Απαιτήσεων Σενάριο, Use Cases Φάση 1Β: Προδιαγραφές Ανάλυση Κλάσεων, Αναφορά Φάση 2: Σχεδιασμός CRC, Sequence Diagrams, Class Diagram Φάση 3: Υλοποίηση Λεπτομερής Σχεδ. Κλάσεων, Κώδικας Φάση 4: Συντήρηση: Νέες Απαιτήσεις, μετάφραση/διάδοση στις άλλες φάσεις Όπου υπάρχουν επιπρόσθετα εργαλεία από αυτά που θα χρησιμοποιήσουμε, θα αναφέρονται περιληπτικά * Το παράδειγμα έχει προσαρμοστεί από το παράδειγμα που βρίσκεται στη ιστοσελίδα http://www.cs.gordon.edu/courses/cs211/addressbookexample/ ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 21

Παράδειγμα: Βιβλίο Διευθύνσεων Φάση 1Α: Ανάλυση Απαιτήσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 22

Αναφορά Απαιτήσεων Βιβλίο Διευθύνσεων: το πρόγραμμα αυτό διατηρεί και συντηρεί ένα βιβλίο διευθύνσεων. Το βιβλίο διευθύνσεων θα είναι μία συλλογή από οντότητες οι οποίες αναπαριστούν άτομα με πληροφορίες για όνομα, επίθετο, διεύθυνση, πόλη, επαρχία, ταχυδρομικό κώδικα και τηλέφωνο Το πρόγραμμα πρέπει να υποστηρίζει προσθήκη ενός ατόμου, ενημέρωση υφιστάμενου ατόμου (εκτός από το όνομα) και διαγραφή ατόμου Επιπρόσθετες λειτουργίες: Ταξινόμηση των ατόμων αλφαβητικά με επίθετο, όνομα ή ταχ. κώδικα Εκτύπωση όλων των ατόμων σε μορφή mailing label Δημιουργία ενός καινούριου και άνοιγμα ενός υφιστάμενου βιβλίου διευθύνσεων από τον δίσκο με τη χρήση διαπροσωπείας με τις συνηθισμένες επιλογές κάτω από το File (New, Open, Close, Save and Save As) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 23

Αναφορά Απαιτήσεων (συν.) Επιπρόσθετες λειτουργίες (συν.): Το πρόγραμμα θα πρέπει να επεξεργάζεται, ανά πάσα στιγμή, μόνο ένα βιβλίο διευθύνσεων. Στην περίπτωση που ο χρήστης επιλέξει «Νέο Βιβλίο Διευθύνσεων» ή «Άνοιγμα Υφιστάμενου Βιβλίου Διευθύνσεων» τότε το πρόγραμμα θα σταματάει/ κλείνει το υφιστάμενο/τρέχον βιβλίο διευθύνσεων Σε κάποια φάση στο μέλλον, το πρόγραμμα πιθανόν να μπορεί να υποστηρίζει να τρέχουν πολλά γραμματοκιβώτια ταυτόχρονα, το καθένα στο δικό του παράθυρο. Σε αυτή την περίπτωση, όταν ο χρήστης επιλέξει «Νέο Βιβλίο Διευθύνσεων» ή «Άνοιγμα Υφιστάμενου Βιβλίου Διευθύνσεων» τότε το πρόγραμμα δεν θα επηρεάζει τα τρέχοντα βιβλία διευθύνσεων Το πρόγραμμα θα παρακολουθεί τις αλλαγές που γίνονται στο βιβλίο διευθύνσεων και θα παρέχει στο χρήστη την δυνατότητα να αποθηκεύσει τις αλλαγές στο υφιστάμενο ή σε νέο βιβλίο διευθύνσεων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 24

Αναφορά Απαιτήσεων (συν.) Επιπρόσθετες λειτουργίες (συν.): Το πρόγραμμα θα παρακολουθεί το αρχείο από το οποίο έχει διαβαστεί ή που έχει αποθηκευτεί πιο πρόσφατα, θα παρουσιάζει το όνομα του αρχείου στον τίτλο του παραθύρου και θα το χρησιμοποιεί όταν ο χρήστης επιλέξει το «Save» Όταν ένα καινούριο παράθυρο δημιουργηθεί, τότε το παράθυρο θα παρουσιάζει τον τίτλο «Untitled» και η επιλογή «Save» μετατρέπεται σε «Save As»και ο χρήστης θα πρέπει να δώσει ένα όνομα αρχείου ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 25

Αναφορά Απαιτήσεων (συν.) Ανάλυση Διαπροσωπείας: Τίτλος Βιβλίου Διευθύνσεων: (π.χ., ΕΠΛ233) Όνομα Αρχείου: (π.χ., C:\ΕΠΛ233.txt) Ανδρέας Ανδρέου Ανδρέας Βάσου Βάσος Βάσου Γεώργιος Γεωργίου Δήμητρα Δημητρίου Ελένη Δημητρίου Add Edit Delete Sort by Name Sort by Zip ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 26

Περιπτώσεις Χρήσης (Use Cases) Τεχνική ανάλυσης με την οποία περιγράφουμε, με τρόπο τυπικό (use case), πώς πρέπει να λειτουργήσει ένα πρόγραμμα. Μετάφραση της Αναφοράς Απαιτήσεων σε Use Cases Κάθε use caseεστιάζει σε ένα συγκεκριμένο σενάριο Κάθε σενάριο περιγράφειτα βήματαπου πρέπει να πραγματοποιηθούν για να φέρουν το σενάριο σε μία επιτυχημένη ολοκλήρωση. Η ολοκλήρωση του σεναρίου πρέπει να αντιστοιχεί στην επίτευξη ενός σημαντικού στόχου Κάθε βήμα αναπαριστά μια αλληλεπίδραση του προγράμματος με ανθρώπους ή εξωτερικές οντότητες του προγραμματιστικού συστήματος ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 27

Διαγράμματα Περίπτωσης Χρήσης (Use Case Diagrams) Use Case Diagram: γραφική αναπαράσταση υψηλού επιπέδου του συστήματος Βλέποντας ένα use case diagram πρέπει να μπορούμε να πούμε εύκολα τι κάνει το σύστημα και ποιος αλληλεπιδρά μαζί του Περιλαμβάνει τα use cases, που αντιπροσωπεύουν τις διάφορες λειτουργίες του συστήματος και actors, που αντιπροσωπεύουν τους χρήστες/ρόλους του συστήματος ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 28

Διαγράμματα Περίπτωσης Χρήσης (Use Case Diagrams) Μπορούμε να δημιουργήσουμε περισσότερο του ένα use case diagrams για ένα σύστημα: Το κάθε use case θα δείχνει ένα υποσύνολο του συστήματος Μπορούν να οργανωθούν σε πακέταγια καλύτερη οργάνωση του μοντέλου Ένα use case diagram μπορεί να βοηθήσει στην επικοινωνία με τους τελικούς χρήστες του συστήματος. Είναι απλό, μη τεχνικό ώστε ο καθένας στην ομάδα (προγραμματιστές και τελικοί χρήστες) να καταλήξουν σε μία κοινή κατανόηση του συστήματος Συνήθως δημιουργείται από την τεχνική ομάδα σε συνδυασμό με αντιπρόσωπους των τελικών χρηστών ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 29

Περιπτώσεις Χρήσης (Use Cases) (συν.) Χρήση των πιο κάτω διαγραμμάτων Ρόλος/Χρήστης (actor):ένα άτομο ή ένα σύνολο από άτομα που ανήκουν στον ίδιο ρόλο και αλληλεπιδρούν με το σύστημα ή μεταξύ τους Περιπτώσεις Χρήσης (use case):μία υψηλού επιπέδου λειτουργία που παρέχει το σύστημα Σχέσεις (relationships): αλληλεπίδραση actor με use case Σχέση «include»: υποδηλώνει ότι ένα use case ΠΡΕΠΕΙ να χρησιμοποιήσει κάποιο άλλο Σχέση «extend»: υποδηλώνει ότι έναuse case επεκτείνει την βασική λειτουργία κάποιου άλλου use case Σχέση «generalization»: ένας actorή use case κληρονομεί τα χαρακτηριστικά κάποιου άλλου actor ή use case Add a Person «include» «extend» ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 30

Βιβλίο Διευθύνσεων: Use Case Diagram Address Book (AdBook) Application Add a Person Edit a Person Delete a Person Sort by Name Sort by ZIP Print AdBook User Create New AdBook Open Existing AdBook Save AdBook «include» Save AdBook As Quit Program «extend» «extend» «include» «extend» Prompt to save changes ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 31

Βιβλίο Διευθύνσεων: Use Case Package Diagram Address Book (AdBook) Application Manage Entries Sort/Print Entries User Manage AddressBook ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 32

Βιβλίο Διευθύνσεων: Use Case Diagram (packets) Manage Entries Add a Person Edit a Person Delete a Person User ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 33

Βιβλίο Διευθύνσεων: Use Cases Add Person Το εν λόγω usecaseξεκινά όταν ο χρήστης κάνει κλικ στο κουμπί "Προσθήκη" στο κύριο παράθυρο. Εμφανίζεται ένα παράθυρο διαλόγου, με τίτλο "Νέο Άτομο", το οποίο περιέχει πεδία στα οποία πρέπει να συμπληρωθεί το όνομα και το επώνυμο του νέου ατόμου και άλλες πληροφορίες. Το παράθυρο διαλόγου μπορεί να κλείσει είτε κάνοντας κλικ στο κουμπί "OK" ή "Άκυρο". Εάν πατηθεί το κουμπί "OK", ένα νέο άτομο προστίθεται στο τέλος του βιβλίου διευθύνσεων, και το όνομα του ατόμου, προστίθεται στο τέλος της λίστας των ονομάτων στο κύριο παράθυρο. Εάν πατηθεί το κουμπί "Άκυρο", δεν γίνονται αλλαγές ούτε στο βιβλίο διευθύνσεων, ούτε στο κύριο παράθυρο. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 34

Βιβλίο Διευθύνσεων: Use Cases Edit Person Το εν λόγω use caseξεκινά όταν ο χρήστης επιλέξει είτε ένα όνομα από τη λίστα των ονομάτων στο κύριο παράθυρο και, στη συνέχεια κάνει κλικ στο κουμπί "Επεξεργασία", είτε κάνει διπλό κλικ σε ένα όνομα. Σε κάθε περίπτωση, ένα παράθυρο διαλόγου, με τίτλο "Επεξεργασία ονόματος του ατόμου", εμφανίζεται περιέχοντας πληροφορίες σχετικές με το επιλεγμένο πρόσωπο (εκτός από το όνομα του ατόμου, το οποίο εμφανίζεται μόνο στον τίτλο). Ο χρήστης μπορεί στη συνέχεια να επεξεργαστεί τα πεδία με τα χαρακτηριστικά του ατόμου. Το παράθυρο διαλόγου μπορεί να κλείσει είτε κάνοντας κλικ στο "OK" ή "Άκυρο". Εάν πατηθεί το κουμπί "OK", η καταχώρηση στο βιβλίο διευθύνσεων για το επιλεγμένο πρόσωπο ενημερώνεται με τις αλλαγές που έγιναν από το χρήστη. Εάν πατηθεί το κουμπί "Άκυρο", δεν γίνονται αλλαγές στο βιβλίο διευθύνσεων. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 35

Βιβλίο Διευθύνσεων: Use Cases Sort by Name Το εν λόγω use caseξεκινά όταν ο χρήστης κάνει κλικ στο κουμπί Ταξινόμηση κατά Όνομα στο κύριο παράθυρο. Οι καταχωρήσεις στο βιβλίο διευθύνσεων ταξινομούνται αλφαβητικά κατά όνομα, και ο κατάλογος στο κύριο παράθυρο ενημερώνεται ώστε να αντικατοπτρίζει τη ταξινόμηση. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 36

Βιβλίο Διευθύνσεων: Use Cases Prompt to Save Changes Extension Το εν λόγω use caseξεκινά μέσα από τη Δημιουργία νέου βιβλίου διευθύνσεων, Άνοιγμα υπάρχον βιβλίο διευθύνσεων, ή Έξοδος προγράμματος, εφόσον το τρέχον βιβλίο διευθύνσεων έχει αλλάξει από τη τελευταία επιτυχημένη λειτουργία New, Open, Save, ή Save As. Ένα παράθυρο διαλόγου εμφανίζεται, ενημερώνοντας τον χρήστη ότι υπάρχουν μη αποθηκευμένες αλλαγές, και ζητώντας από το χρήστη είτε να αποθηκεύσει τις αλλαγές, να μην αποθηκεύσει τις αλλαγές, ή να ακυρώσει τη λειτουργία. Αν ο χρήστης επιλέξει να αποθηκεύσει τις αλλαγές, τοuse caseαποθήκευση Βιβλίου Διευθύνσεων εκτελείται (το οποίο μπορεί να οδηγήσει στην εκτέλεση του use caseαποθήκευση Βιβλίου Διευθύνσεων ως, σε περίπτωση που δεν υπάρχει τρέχον αρχείο). Εάν ο χρήστης δεν επιλέξει να αποθηκεύσει τις αλλαγές, η αρχική λειτουργία απλά επαναλαμβάνεται. Εάν ο χρήστης επιλέξει να ακυρώσει (ή ακυρώσει το διάλογο Αποθήκευση αρχείου), η αρχική λειτουργία ακυρώνεται. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 37

Πλήρης Περιγραφή Use Cases 1.Title 2.Primary Actor 3.Goal in Context 4.Scope 5.Level 6.Stakeholders and Interests 7.Precondition 8.Minimal Guarantees 9.Success Guarantees 10.Trigger 11.Main Success Scenario 12.Extensions 13.Technology & Data Variations List 14.Related Information. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 38

Περιγραφή Αποκλίσεων (Variations List) Κατά την εκτέλεσή του, ένα σενάριο μπορεί σε κάποιο στάδιο να αποτύχει. Για παράδειγμα, στις Περιπτώσεις Χρήσης του Βιβλίου Διευθύνσεων: η αποθήκευση σε ένα αρχείο μπορεί να αποτύχει γιατί το αρχείο ήδη υπάρχει και επιτρέπεται μόνο η ανάγνωση η δημιουργία ενός καινούριου ατόμου μπορεί να αποτύχει γιατί δεν υπάρχει άλλη μνήμη Για την κάλυψη των περιπτώσεων αποτυχίας ενός σεναρίου, στην περιγραφή της Περίπτωσης Χρήσης συμπεριλαμβάνεται και η περιγραφή Αποκλίσεων (variations) Σε αυτό το κείμενο αναφέρονται και εναλλακτικές λύσεις για επίλυση των προβλημάτων ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 39

Παράδειγμα: Βιβλίο Διευθύνσεων Επόμενη Φάση 1Β: Προδιαγραφές ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 40

Φάση 1: Ανάλυση Απαιτήσεων και Προδιαγραφές (συν.) 1Β. Προδιαγραφές Συστήματος (System Specification) Προκαταρκτική αναγνώριση κλάσεων (Analysis Class Diagram) Συγκεκριμένη περιγραφή του τι θα πρέπει κάνει το πρόγραμμα (όχι πως θα το κάνει). Παράδειγμα του τι μπορεί να περιλαμβάνουν οι προδιαγραφές: Overall description Product perspective System Interfaces User Interfaces Hardware interfaces Software interfaces Communication Interfaces Memory Constraints Operations Site Adaptation Requirements Product functions User characteristics Constraints, assumptions and dependencies Specific requirements External interface requirements Functional requirements Performance requirements Design constraints Standards Compliance Logical database requirement Software System attributes Reliability, Availability, Security, Maintainability, Portability Other requirements ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 41

Ανάλυσης Κλάσεων Στα αρχικά στάδια του προγράμματος, είναι καλό να διεξαχθεί μία προκαταρκτική αναγνώριση των κλάσεων/αντικειμένων του συστήματος (Class Analysis) καθώς και οι αλληλεπιδράσεις μεταξύ τους. Οι κλάσεις σε αυτό το προκαταρκτικό στάδιο παίρνουν την μορφή κλάσεων συνόρων, κλάσεων οντοτήτωνκαι κλάσεων ελέγχου. Τα use cases συνήθως αποκαλύπτουν το μεγαλύτερο ποσοστό των κλάσεων Οι έμπειροι αναλυτές/προγραμματιστές μπορεί να αναγνωρίσουν όλες τις κλάσεις προς ολοταχώς στην υλοποίηση, χωρίς σχεδίαση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 42

Διαγράμματα Ανάλυσης Κλάσεων Κλάσεις Σύνορα (Boundary Classes): χειρίζονται την επικοινωνία μεταξύ actors και components του συστήματος, π.χ., user interface, device interface. Συνήθως μόνο ένα boundary class για κάθε use case. Κλάσεις Οντότητες (Entity Classes): μοντελοποιούν την πληροφορία που χειρίζεται το σύστημα Κλάσεις Ελέγχου (Control Classes): αντιπροσωπεύουν το συντονισμό/ροή ελέγχου για ένα use case. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 43

Βιβλίο Διευθύνσεων: Class Analysis Το πρόγραμμα, ανά πάσα στιγμή διαχειρίζεται ένα βιβλίο διευθύνσεων (AddressBook). οντότητα Κάθε άτομο (Person)μπορεί να αναπαρασταθεί σαν μία οντότηταμε τα χαρακτηριστικά της οντότητα Μία διαπροσωπεία(addressbookgui)θα υπάρχει μεταξύ χρήστη και συστήματος. Ο χρήστης δεν θα μπορεί να έχει πρόσβαση διαφορετικά με το σύστημα σύνορο Μία διαπροσωπεία/αντικείμενο(filesystem)θα υπάρχει μεταξύ του συστήματος και του λειτουργικούώστε το σύστημα να μπορεί να διαχειρίζεται αρχεία σύνορο Ένα αντικείμενο διαχειριστής (AddressBookController)χρειάζεται για να αναλάβει την εκτέλεση των use casesσε ανταπόκριση των διαφόρων λειτουργιών που θα επιλέξει ο χρήστης από το μενού. controller *(Για ένα τέτοιο μικρό πρόβλημα, ένας controller είναι αρκετός.) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 44

Βιβλίο Διευθύνσεων: Analysis Class Diagram FileSystem AddressBook Controller User AddressBook GUI Person AddressBook ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 45

Βιβλίο Διευθύνσεων: Class Analysis (συν.) Τοuse case Add a Person έχει σχέση με την εισαγωγή νέας πληροφορίας (δηλ. νέο άτομο) από τον χρήστη. Τέλος, θα καλεστεί το αντικείμενο AddressBook ώστε να εισάξει το νέο άτομο στη συλλογή. Τοuse case Edit a Person έχει σχέση με τηνπαρουσίαση της τρέχουσας πληροφορίες κάποιου ατόμου μέσω του αντικειμένου AddressBookκαι παροχή της ικανότητας αλλαγή των στοιχείων αυτού. Στο τέλος, θα καλεστεί το αντικείμενο AddressBook για να αποθηκεύει τις αλλαγές. Τοuse case Delete a Person έχει σχέση με την διαγραφή ενός υπάρχον ατόμου. παρουσίαση της τρέχουσας. Στο τέλος, θα καλεστεί το αντικείμενο AddressBook για να αφαιρέσει το άτομο από την συλλογή. Τοuse case Sort by Name θα καλέσει το αντικείμενο AddressBook για να ταξινομήσει τη συλλογή των ατόμων με το όνομα και επίθετο τους. Τοuse case Sort by ZIP θα καλέσει το αντικείμενο AddressBook για να ταξινομήσει τη συλλογή των ατόμων με τον ταχυδρομικό κώδικα τους. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 46

Βιβλίο Διευθύνσεων: Class Analysis (συν.) Τοuse case Create New Address Book δημιουργεί ένα καινούριο αντικείμενο τύπου AddressBook. Τοuse case Open Existing Address Book θα ζητήσει από τον χρήστη ένα αρχείο και μετά θα χρησιμοποιήσει το αντικείμενο FileSystem για να διαβάσει ένα αντικείμενο τύπου AddressBookπου έχει αποθηκευτεί στο αρχείο. Τοuse case Save Address Book θα χρησιμοποιήσει το αντικείμενο FileSystem για να αποθηκεύσει ένα αντικείμενο τύπου AddressBookστο πιο πρόσφατο αρχείο που έχει διαβαστεί ή αποθηκευτεί). Αν δεν υπάρχει κάποιο αρχείο τότε θα εκτελέσει το use case Save Address Book As Τοuse case Print Address Book θα ζητήσει από το αντικείμενο AddressBook να τυπώσει την συλλογή της σύμφωνα με την τρέχουσα ταξινόμηση. Τοuse case Quit Program δεν έχει σχέση με τα υπόλοιπα αντικείμενα. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 47

Παράδειγμα: Βιβλίο Διευθύνσεων Επόμενη Φάση 2: Σχεδίαση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 48