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



Σχετικά έγγραφα
Introduction to Java. Module 6: Class Diagrams and Use case Diagrams. Prepared by Costantinos Costa for EPL 233

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

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

Περίγραμμα. Κάρτες CRC. Παράδειγμα. n για να πραγματοποιηθεί μια ενέργεια, κάποιος πρέπει να είναι

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

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

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Μοντελοποίηση Εστιατορίου (take-away)

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

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

(C) 2010 Pearson Education, Inc. All rights reserved.

How to register an account with the Hellenic Community of Sheffield.

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

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Can I open a bank account online? Ερώτηση αν μπορείτε να ανοίξετε τραπεζικό λογαριασμό μέσω του ίντερνετ

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

PortSip Softphone. Ελληνικά Ι English 1/20

CYTA Cloud Server Set Up Instructions

Instruction Execution Times

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Ενότητα 2 Εργαλεία για την αναζήτηση εργασίας: Το Βιογραφικό Σημείωμα

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

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

Πώς μπορεί κανείς να έχει έναν διερμηνέα κατά την επίσκεψή του στον Οικογενειακό του Γιατρό στο Ίσλινγκτον Getting an interpreter when you visit your

Architecture οf Integrated Ιnformation Systems (ARIS)

2 Composition. Invertible Mappings

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

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

Προσομοίωση BP με το Bizagi Modeler

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Υλοποίηση Εφαρμογής Εστιατορίου (take-away)

Advanced Subsidiary Unit 1: Understanding and Written Response

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

Homework 3 Solutions

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

Πρώτη είσοδος στην θυρίδα φωνητικού ταχυδρομείου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Bizagi Modeler: Συνοπτικός Οδηγός

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

The challenges of non-stable predicates

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

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

UML: Unified modelling language

The Simply Typed Lambda Calculus

SOAP API. Table of Contents

Modbus basic setup notes for IO-Link AL1xxx Master Block

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

TMA4115 Matematikk 3

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

Κατανεμημένα Συστήματα. Javascript LCR example

Potential Dividers. 46 minutes. 46 marks. Page 1 of 11

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ «ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΚΑΤΕΥΘΥΝΣΗ «ΕΥΦΥΕΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΑΝΘΡΩΠΟΥ - ΥΠΟΛΟΓΙΣΤΗ»

6. Εισαγωγή στη Ενοποιημένη Γλώσσα Μοντελοποίησης UML (Unified Modeling Language)

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

Galatia SIL Keyboard Information

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

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

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

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

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

ΙΚΤΥΩΤΟ ΜΟΝΤΕΛΟ (Network Model) Μαθ. # 15

POINTERS, AGGREGATION, COMPOSITION

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

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

FSM Toolkit Exercises

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

8. Μέθοδοι (Methods)

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου. Σχεδίαση Συστήματος

Wrapper Classes, Abstract Classes and Interfaces

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

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

UNIVERSITY OF CALIFORNIA. EECS 150 Fall ) You are implementing an 4:1 Multiplexer that has the following specifications:

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Section 1: Listening and responding. Presenter: Niki Farfara MGTAV VCE Seminar 7 August 2016

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

the total number of electrons passing through the lamp.

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

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

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

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

[1] P Q. Fig. 3.1

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014

Transcript:

Αντικειμενοστρεφής Σχεδιασμός Μ. Δικαιάκος Πανεπιστήμιο Κύπρου

Μεθοδολογία Μεθοδολογία (ή μέθοδος):σύνολο από διαδικασίες και ευρετικές προσεγγίσεις που αποσκοπούν στην απλούστευση ενός προγραμματιστικού προβλήματος. Οι Α/Σ μεθοδολογίες βασίζονται στην οπτική ότι τα πάντα είναι αντικείμενα. Επομένως, μας βοηθούν να ανακαλύψουμε: Ποια είναι τα αντικείμενα του προβλήματός μας; Ποιές διαπροσωπείες έχουν αυτά τα αντικείμενα; Μ. Δικαιάκος 2

3 Μια απλή Α/Σ Μέθοδος Ανάλυσης και Σχεδιασμού 5 Φάσεις: Φάση 0: Κατάρτιση Σχεδίου. Φάση 1: Τι κατασκευάζουμε; Φάση 2: Πως το κατασκευάζουμε; Φάση 3: Κατασκευή του πυρήνα. Φάση 4: Πρόσθεση των λειτουργιών. Φάση 5: Εξέλιξη

4 Φάση 0: Κατάρτιση Σχεδίου Έργου Make a Plan: Καταρτίστε το σχέδιο της δουλειάς σας αποφασίστε για τη μεθοδολογία και τα βήματα που θα ακολουθήσετε. Διατυπώσατε την «Αποστολή» σας (mission statement). Ποιός είναι ο στόχος του έργου, σε 2-3 προτάσεις.

5 Φάση 1: Ανάλυση και Προδιαγραφές Ανάλυση Απαιτήσεων (Requirements Analysis): τι θέλει ο «πελάτης» Προδιαγραφές Συστήματος (System Specification): τι θα κάνει το πρόγραμμα (όχι πως θα το κάνει). Πιο σύντομη προσέγγιση: Ανάπτυξη περιπτώσεων χρήσης (use cases). Αποκαλύπτουν βασικά χαρακτηριστικά του προγράμματος. Αποτελούν περιγραφικές απαντήσεις σε ερωτήσεις όπως: Ποιός θα χρησιμοποιήσει το σύστημα; Τι μπορούν να κάνουν οι χρήστες με το σύστημα; Πως μπορεί αυτός ο χρήστης να κάνει εκείνο με το σύστημα; Πώς αλλιώς θα μπορούσε αυτό να λειτουργήσει αν κάποιος άλλος έκανε εκείνο, ή ο ίδιος χρήστης είχε διαφορετικό στόχο; (reveal variations) Τι προβλήματα μπορεί να προκύψουν ενώ κάνουμε αυτό με το σύστημα (reveal exceptions).

Φάση 2: Πώς θα το κατασκευάσουμε; Πρέπει να σχεδιάσουμε τις κλάσεις και την αλληλεπίδρασή τους. Χρήση της τεχνικής των Καρτών CRC. Πέντε στάδια σχεδιασμού αντικειμένων: Ανακάλυψη Αντικειμένου (Object discovery) Συναρμολόγηση Αντικειμένου (Object assembly) Κατασκευή Συστήματος Επέκταση Συστήματος Επαναχρησιμοποίηση κλάσεων Μ. Δικαιάκος 6

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

8 Φάση 3: Κατασκευάζοντας τον πυρήνα Φάση της μετατροπής του αρχικού σχεδιασμού σε πρόγραμμα προς μετάφραση και εκτέλεση, Στόχος εδώ είναι να εντοπίσετε το τμήμα που αποτελεί τον πυρήνα του προγράμματός σας, από τον οποίο θα προκύψει το τελικό σύστημα. Ο πυρήνας μπορεί να μην περιέχει τα πάντα, είναι όμως η βάση για το χτίσιμο των λειτουργιών του συστήματός σας.

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

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

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

12 Use cases - Περιπτώσεις Χρήσης

12 Use cases - Περιπτώσεις Χρήσης Τεχνική ανάλυσης με την οποία περιγράφουμε, με τρόπο τυπικό, πώς πρέπει να λειτουργήσει ένα πρόγραμμα.

12 Use cases - Περιπτώσεις Χρήσης Τεχνική ανάλυσης με την οποία περιγράφουμε, με τρόπο τυπικό, πώς πρέπει να λειτουργήσει ένα πρόγραμμα. Κάθε περίπτωση χρήσης εστιάζει σε ένα συγκεκριμένο σενάριο και περιγράφει τα βήματα που πρέπει να πραγματοποιηθούν για να φέρουν το σενάριο σε επιτυχημένη ολοκλήρωση. Η ολοκλήρωση του σεναρίου πρέπει να αντιστοιχεί στην επίτευξη ενός σημαντικού στόχου του χρήστη του προγράμματος

12 Use cases - Περιπτώσεις Χρήσης Τεχνική ανάλυσης με την οποία περιγράφουμε, με τρόπο τυπικό, πώς πρέπει να λειτουργήσει ένα πρόγραμμα. Κάθε περίπτωση χρήσης εστιάζει σε ένα συγκεκριμένο σενάριο και περιγράφει τα βήματα που πρέπει να πραγματοποιηθούν για να φέρουν το σενάριο σε επιτυχημένη ολοκλήρωση. Η ολοκλήρωση του σεναρίου πρέπει να αντιστοιχεί στην επίτευξη ενός σημαντικού στόχου του χρήστη του προγράμματος Κάθε βήμα αναπαριστά μια αλληλεπίδραση του προγράμματος με ανθρώπους ή οντότητες εξωτερικές του προγραμματιστικού συστήματος

13 Περιπτώσεις Χρήσης Οι περιπτώσεις χρήσης είναι συλλογές από σενάρια τα οποία περιγράφουν πως λειτουργεί το σύστημα σε διάφορες περιπτώσεις. Οι περιπτώσεις χρήσης αποσκοπούν στην αποτύπωση του πως το σύστημα φαίνεται στους χρήστες του (λειτουργικά) και πρέπει να είναι απλές.

13 Περιπτώσεις Χρήσης Οι περιπτώσεις χρήσης είναι συλλογές από σενάρια τα οποία περιγράφουν πως λειτουργεί το σύστημα σε διάφορες περιπτώσεις. Οι περιπτώσεις χρήσης αποσκοπούν στην αποτύπωση του πως το σύστημα φαίνεται στους χρήστες του (λειτουργικά) και πρέπει να είναι απλές. Actor Use-cases Interactions

14 Περιπτώσεις Χρήσης Στην περίπτωση σχεδιασμού ενός φωνοκιβωτίου, στο οποίο εισάγονται τηλεφωνικά μηνύματα: Η Περίπτωση Χρήσης Άφησε Μήνυμα περιγράφει τα βήματα που πρέπει να ακολουθήσει ένας χρήστης ώστε να καλέσει ένα φωνοκιβώτιο και να αφήσει μήνυμα. Η Περίπτωση Χρήσης Ανάκτησε Μηνύματα περιγράφει τα βήματα που πρέπει να ακολουθήσει ένας χρήστης ώστε να καλέσει το φωνοκιβώτιο και να ακούσει τα μηνύματά του.

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

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

17 Περίπτωση Χρήσης Φωνοκιβωτίου Άφησε Μήνυμα 1. Ο καλών, σχηματίζει τον αριθμό του τηλεφωνικού κέντρου 2.Το τηλεφωνικό κέντρο απαντά με ανακοίνωση προτροπής (prompt): Enter mailbox number followed by #. 3. Ο καλών δίνει τον αριθμό φωνοκιβωτίου του παραλήπτη 4.Το τηλεφωνικό κέντρο απαντά με το ακόλουθο μήνυμα: You have reached mailbox xxxx. Please leave a message now. 5.Ο καλών δίνει το μήνυμά του. 6. Ο καλών κλείνει το τηλέφωνο. 7.Το τηλεφωνικό κέντρο τοποθετεί το καταγεγραμμένο μήνυμα στο φωνοκιβώτιο του παραλήπτη.

18 Περίπτωση Χρήσης Φωνοκιβωτίου

Περίπτωση Χρήσης Φωνοκιβωτίου Απόκλιση 1η: 1. Στο Βήμα 3, ο καλών δίνει λάθος αριθμό φωνοκιβωτίου. 2. Το τηλεφωνικό κέντρο δίνει το ακόλουθο μήνυμα: You have typed an invalid mailbox number. 3.Συνέχισε με το Βήμα 2 Μ. Δικαιάκος 18

Περίπτωση Χρήσης Φωνοκιβωτίου Απόκλιση 1η: 1. Στο Βήμα 3, ο καλών δίνει λάθος αριθμό φωνοκιβωτίου. 2. Το τηλεφωνικό κέντρο δίνει το ακόλουθο μήνυμα: You have typed an invalid mailbox number. 3.Συνέχισε με το Βήμα 2 Απόκλιση 2η: 1.Μετά το Βήμα 4, ο καλών κλίνει το τηλέφωνο αντί να μιλήσει 2. Το τηλεφωνικό κέντρο αγνοεί το άδειο μήνυμα Μ. Δικαιάκος 18

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

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ)

Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Μ. Δικαιάκος 20

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται:

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών.

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών. Η χρήση απλών χάρτινων καρτών Class-Responsibility- Collaboration (CRC) 10cm x 15cm αντί για διαγράμματα, μοντέλα, ή προσδιορισμό μεθόδων και διαπροσωπειών.

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών. Η χρήση απλών χάρτινων καρτών Class-Responsibility- Collaboration (CRC) 10cm x 15cm αντί για διαγράμματα, μοντέλα, ή προσδιορισμό μεθόδων και διαπροσωπειών. Ο συμμετοχικός σχεδιασμός.

20 Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών. Η χρήση απλών χάρτινων καρτών Class-Responsibility- Collaboration (CRC) 10cm x 15cm αντί για διαγράμματα, μοντέλα, ή προσδιορισμό μεθόδων και διαπροσωπειών. Ο συμμετοχικός σχεδιασμός. Υπευθυνότητα είναι μια υψηλού επιπέδου περιγραφή της αποστολής μιας κλάσης.

Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ- ΣΥΝΕΡΓΑΤΕΣ) Μ. Δικαιάκος Προτάθηκε από τους Cunningham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών. Η χρήση απλών χάρτινων καρτών Class-Responsibility- Collaboration (CRC) 10cm x 15cm αντί για διαγράμματα, μοντέλα, ή προσδιορισμό μεθόδων και διαπροσωπειών. Ο συμμετοχικός σχεδιασμός. Υπευθυνότητα είναι μια υψηλού επιπέδου περιγραφή της αποστολής μιας κλάσης. Με μια CRC κάρτα μπορούμε να απεικονίσουμε μια κλάση και τα χαρακτηριστικά της, στη φάση της σχεδίασης. 20

21 Δομή καρτών CRC CLASS NAME RESPONSIBILITIES Κατάλογος µε τις ευθύνες αυτής της κλάσης COLLABORATORS Τα ονόµατα των κλάσεων που θα εξυπηρετήσουν αυτή την κλάση

22

23 Παράδειγμα CRC Mailbox manage passcode MessageQueue manage greeting manage new and saved messages

24 Παράδειγμα CRC MailSystem MessageQueue manage mailboxes

25 Παράδειγμα CRC Order Check if items in stock Determine price Check for valid payment Dispatch to delivery address Order Line Customer

26 Αρχές Ονοματολογίας Κλάσεων Πολύ σημαντική η ονοματολογία: διευκολύνει την ανάγνωση και κατανόηση του κώδικα. Βασικές αρχές: χρήση ευανάγνωστων και καλόηχων ονομάτων χρήση κεφαλαίων στην αρχή καινούργιας λέξης, έστω κι αν ενώνουμε δύο ή περισσότερες λέξεις (π.χ. CardReader) προσεκτική χρήση συντομογραφιών για αποφυγή παραξηγήσεων αποφυγή χρήσης αριθμών εντός των ονομάτων κατάλληλη ονομασία λογικών μεταβλητών (π.χ. PrinterIsReady - PrinterStatus)

Κάρτες CRC: Περιγραφή Ευθυνών Ο χώρος των υπευθυνοτήτων είναι το συµβόλαιο με το οποίο καθορίζονται τα χαρακτηριστικά και οι ευθύνες μιας κλάσης. Οι ευθύνες περιγράφουν το πρόβλημα που πρέπει να επιλύει η κλάση: χρησιμοποιώντας σύντομα ρήματα και μικρές εκφράσεις περιγράφοντας το τι πρέπει να γίνει και όχι το πως θα γίνει βασική επεξήγηση: ποιό θα είναι το αποτέλεσμα αν χρησιμοποιηθεί το αντικείμενο κατά τον Α ή Β τρόπο το πολύ µια κάρτα ανά κλάση Μ. Δικαιάκος 27

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

Ανακαλύπτοντας τις κλάσεις Κατηγορίες Κλάσεων: Διαχειριστές πληροφοριών, δεδομένων και καταστάσεων (Data managers, Data or state classes). Πηγές ή αποδέκτες πληροφοριών (data sources or sinks). Κλάσεις απεικονίσεως ή παρουσιάσεως (view or observer classes) Data Manager Classes: Models Display Classes: Views Βοηθητικές κατηγορίες (facilitater or helper class) Μ. Δικαιάκος 29

Σχεδιασμός με Σενάρια Ο σχεδιασμός με κάρτες CRC δεν ακολουθεί ούτε το top-down ούτε το bottom-up μοντέλο σχεδιασμού λογισμικού. Διεργασία σχεδίασης με CRC: από το γνωστό προς το άγνωστο Ξεκινάµε από τις προφανείς κλάσεις κι αυτές που απαιτούνται για το ξεκίνηµα της εφαρµογής Συνεχίζουµε ξετυλίγοντας υποθετικά σενάρια (what if ) Χρησιµοποιούµε τις κάρτες για να προσοµοιώσουµε την εξέλιξη του προγράµµατος Κάθε ενέργεια που αναγνωρίζεται, καταχωρείται σαν υπευθυνότητα της σχετικής κλάσης Μ. Δικαιάκος 30

Σχεδιασμός με Σενάρια Δοκιμάζονται διαφορετικά σενάρια και δημιουργούνται νέες υπευθυνότητες. Ελέγχονται σενάρια που εμπεριέχουν καταστάσεις σφάλματος ή έκτακτα περιστατικά. Οι σχεδιαστές ενθαρρύνονται να εργάζονται με το συγκεκριμένο ανά χείρας πρόβλημα και να μην προσπαθούν να προβλέψουν μελλοντικές απαιτήσεις του λογισμικού, οι οποίες δεν προκύπτουν από τα εξεταζόμενα σενάρια. Συχνά, οι υπευθυνότητες αλλάζουν κλάση, καθώς εξελίσσεται η σχεδίαση και εξετάζονται διαφορετικά σενάρια. Μ. Δικαιάκος 31

Πλεονεκτήματα των CRC Ως τεχνική σχεδιασμού είναι: απλή φθηνή όι κάρτες αντικαθιστούνται εύκολα εύκολα μεταβάλλονται Με την χρήση και τον έλεγχο σεναρίων βεβαιωνόμαστε ότι το σχέδιο του λογισμικού περιέχει όλες τις πληροφορίες, οι οποίες είναι αναγκαίες για την εκτέλεση και την εκπλήρωση μιας εργασίας. Μ. Δικαιάκος 32

Σχεδιασμός με CRC Η τεχνική CRC χωρίζεται σε δύο μέρη: 1.Το ερευνητικό μέρος (exploratory phase) ανακαλύπτουμε τις κλάσεις που χρειάζονται για την υλοποίηση του προβλήματος καθορίζουμε και αναθέτουμε τις υπευθυνότητες στις διάφορες κατηγορίες αναγνωρίζουμε την συνεργασία που υπάρχει μεταξύ των διαφόρων κατηγοριών Μ. Δικαιάκος 33

Σχεδιασμός με CRC 2.Το αναλυτικό μέρος (analysis phase) εκλέπτυνση του σχεδίου που προέκυψε από το ερευνητικό μέρος δημιουργία κλάσεων που περιέχουν κοινές ευθύνες (ιεραρχία) τοποθέτηση σχετικών κλάσεων μαζί Μ. Δικαιάκος 34

35 Βασική παρατήρηση Η μεθοδολογία δεν υποκαθιστά τη σκέψη!

36 Σουβλάκι-233

36 Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Μ. Δικαιάκος 36

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Μ. Δικαιάκος 36

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Πώς θα προσθέσουμε λίγο ρεαλισμό; Μ. Δικαιάκος 36

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Πώς θα προσθέσουμε λίγο ρεαλισμό; Μ. Δικαιάκος 36

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Πώς θα προσθέσουμε λίγο ρεαλισμό; Μ. Δικαιάκος 36

Σουβλάκι-233 Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Πώς θα προσθέσουμε λίγο ρεαλισμό; Ουρά Λήψης Παραγγελιών Σταθµός εξυπηρέτησης Μ. Δικαιάκος 36

Σουβλάκι233 - η φουκού Διαθέτουμε φουκού μήκους x εκατοστών Χρειάζεται χρόνος t για να ανάψουν τα κάρβουνα Μ. Δικαιάκος 37

Σουβλάκι233 - η φουκού Διαθέτουμε φουκού μήκους x εκατοστών Χρειάζεται χρόνος t για να ανάψουν τα κάρβουνα Μ. Δικαιάκος 37

Σουβλάκι233 - τα τηγάνια Διαθέτουμε Ν τηγάνια Κάθε τηγάνι: έχει χωρητικότητα c μερίδες πατάτες. χρειάζεται χρόνο t για να τηγανίσει το περιεχόμενό του Μ. Δικαιάκος 38

Σουβλάκι233: πρώτες ύλες Σουβλάκια: Κάθε σμίλα παίρνει χώρο χ εκατοστά Χοιρινό: ψήνεται σε χρόνο 20-25 λεπτών Κοτόπουλο: ψήνεται σε χρόνο 15-20 λεπτών Σεφταλιά: κάθε σμίλα παίνρει χώρο y εκατοστά ψήνεται σε χρόνο 25 λεπτών Πίττα: ψήνεται σε χρόνο 5 λεπτών Μ. Δικαιάκος 39

40 Σουβλάκι233: τα υλικά

Άλλα (σημαντικά) θέματα Τι είναι η παραγγελία; Πώς διαχειριζόμαστε τις παραγγελίες; Με τι αλγόριθμο εκτελούμε τις παραγγελίες; Πώς αξιολογούμε την ικανοποίηση των πελατών μας; Πώς επιτυγχάνουμε την γραφική απεικόνιση της προσομοίωσης; Άσκηση για το σπίτι: αναλύστε το πρόβλημα και εντοπίστε τις κλάσεις/δομές δεδομένων/μεθόδους που χρειάζονται για την προσομοίωση Μ. Δικαιάκος δουλέψτε σε ομάδες των 3 ατόμων 41

42 Unified Modeling Language Σύντοµη Ανασκόπηση

Unified Modeling Language Ένα σύνολο από διαγραμματικές συμβάσεις, οι οποίες μπορούν να χρησιμοποιηθούν για την περιγραφή σχεδίων λογισμικού. Υπάρχουν διάφοροι τύποι διαγραμμάτων UML Κάθε τύπος χρησιμοποιείται για περιγραφή διαφορετικών πραγμάτων Πχ: class diagrams, state diagrams, sequence diagrams Μ. Δικαιάκος 43

UML Class Diagrams Represent the (static) structure of the system General In Java Name Name State Data Fields Behavior Methods Μ. Δικαιάκος 44

UML Class Diagrams Represent the (static) structure of the system General In Java Name Name State Data Fields Behavior Methods Attributes (Data fields) Μ. Δικαιάκος 44

UML Class Diagrams Represent the (static) structure of the system General In Java Name Name State Data Fields Behavior Methods Methods Attributes (Data fields) Μ. Δικαιάκος 44

Relationships Between Classes Dependency - εξάρτηση Temporary, uses a Aggregation - συνάθροιση Composition - σύνθεση Association - συσχέτιση Permanent, structural, has a Solid line (arrowhead optional) Inheritance - κληρονομικότητα Inheritance, is a OR Solid line with open (triangular) arrowhead Implementation - υλοποίηση Dotted line with open (triangular) arrowhead Μ. Δικαιάκος 45

Multiplicity of Associations Some relationships may be quantified Multiplicity denotes how many objects the source object can legitimately reference Notation * 0, 1, or more 5 5 exactly 5..8 between 5 and 8, inclusive 5..* 5 or more Μ. Δικαιάκος 46

Aggregation (συνάθροιση) Aggregation (συνάθροιση): προκύπτει όταν αντικείμενα μιας κλάσης περιέχουν αντικείμενα κάποιας άλλης κλάσης για μια χρονική περίοδο Ειδική κατηγορία συσχέτισης ( has-a ) Ένα πεδίο δεδομένων μιας κλάσης μπορεί να περιγραφεί είτε με συνάθροιση είτε σαν κατηγόρημα (attribute) της κλάσης. Message Queue 1 * Message Μ. Δικαιάκος 47

Composition (σύνθεση) Πιό ισχυρή μορφή συνάθροισης τα συναθροιζόμενα αντικείμενα δεν έχουν ανεξάρτητη ύπαρξη έξω από το αντικείμενα που τα συναθροίζει Κάνετε χρήση συνάθροισης ή σύνθεσης μόνο όταν η μια κλάση διαχειρίζεται τα αντικείμενα της άλλης Mailbox Message Queue Μ. Δικαιάκος 48

Association - Συσχέτιση More general than aggregation/composition Denotes permanent, structural relationship State of class A contains class B Represented by solid line (arrowhead optional) Car and Engine classes know about each other Μ. Δικαιάκος 49

50 Association with Roles Course registers for has as participant Student

Multiplicity of Associations Many-to-one Bank has many ATMs, ATM knows only 1 bank One-to-many Inventory has many items, items know 1 inventory Μ. Δικαιάκος 51

Associations w/ Navigation Information Can indicate direction of relationship Represented by solid line with arrowhead Gas Pedal class knows about Engine class Engine class doesn t know about Gas Pedal class Μ. Δικαιάκος 52

Associations w/ Navigation Information Denotes has-a relationship between classes Gas Pedal has a Engine State of Gas Pedal class contains instance of Engine class can invoke its methods Μ. Δικαιάκος 53

Dependency Denotes dependence between classes Always directed (Class A depends on B) Represented by dotted line with arrowhead A B A depends on B Μ. Δικαιάκος 54

Dependency Caused by class methods Method in Class A temporarily uses a object of type Class B Change in Class B may affect class A A B A uses object of class B Μ. Δικαιάκος 55

Dependency -εξάρτηση Dependence may be caused by Local variable Parameter Return value Example Class A { Class B { B Foo(B x) { B y = new B(); return y; } } } Μ. Δικαιάκος 56

57 Dependency Example Class Driver depends on Class Car

Generalization - γενίκευση Denotes inheritance between classes Can view as is-a relationship Represented by line ending in (open) triangle Laptop, Desktop, PDA inherit state & behavior from Computers Μ. Δικαιάκος 58

Implementation - υλοποίηση Denotes class implements Java interface Represented by dotted line ending in (open) triangle A «B» A implements interface B Μ. Δικαιάκος 59

Sequence Diagrams Διαγράμματα Ακολουθιών 60

Διαγράμματα Ακολουθιών Περιγράφουν την δυναμική εξέλιξη ενός σεναρίου, κατά την εκτέλεση ενός προγράμματος: Χρησιμοποιούνται για να περιγράψουν: τις αλληλεπιδράσεις ανάμεσα σε αντικείμενα Βασική χρησιμότητα: να περιγράψει τα αντικείμενα που εμπλέκονται στην υλοποίηση ενός σεναρίου και την ακολουθία με την οποία επιτελούνται οι κλήσεις των διαφόρων μεθόδων Μ. Δικαιάκος 61

62 Διαγράμματα Ακολουθιών amailbox newmessages : MessageQueue add

62 Διαγράμματα Ακολουθιών amailbox Όνοµα αντικειµένου (υπογραµµισµένο) newmessages : MessageQueue Όνοµα αντικειµένου κλάσης add

62 Διαγράμματα Ακολουθιών amailbox Όνοµα αντικειµένου (υπογραµµισµένο) newmessages : MessageQueue Όνοµα αντικειµένου κλάσης add Χρόνος ζωής αντικειµένου (lifeline)

62 Διαγράμματα Ακολουθιών amailbox Όνοµα αντικειµένου (υπογραµµισµένο) newmessages : MessageQueue Όνοµα αντικειµένου κλάσης add Στήλη ενεργοποίησης (activation bar) Χρόνος ζωής αντικειµένου (lifeline)

63 Διαγράμματα Ακολουθιών :MailSystem :MailSystem locatemailbox <<create>> :Mailbox

State Diagrams Διαγράμματα Κατάστασης 64

Διαγράμματα κατάστασης Ορισμένα αντικείμενα μπορούν να βρεθούν σε ένα διακριτό σύνολο καταστάσεων - όπου κάθε κατάσταση επηρεάζει την συμπεριφορά τους. Για παράδειγμα, το σύστημα φωνοκιβωτίων: Εισέρχεται κατάσταση σύνδεσης, όταν ο καλών συνδέεται με το σύστημα. Εισέρχεται στην κατάσταση εγγραφής όταν ο καλών δώσει τον αριθμό του φωνοκιβωτίου στο οποίο θέλει να αφήσει μήνυμα - στην κατάσταση αυτή ο καλών μπορεί να κάνει εγγραφή του μηνύματός του. Όταν ο καλών δώσει κωδικό πρόσβασης, το σύστημα εισέρχεται στην κατάσταση πίνακα επιλογών φωνοκιβωτίου Μ. Δικαιάκος 65

66 Διαγράμματα κατάστασης connected extension dialed recording passcode entered mailbox menu

Σύστημα Φωνοκιβωτίων (Voice mail) Διατύπωση αποστολής συστήματος (mission statement) We will design and implement a program that simulates a voice mail system, without creating a completely realistic working phone system. We will simply represent voice mail by text that is entered through the keyboard. We need to simulate three distinct input events that occur in a real telephone system: speaking, pushing a button on the telephone touchpad, and hanging up the telephone. Μ. Δικαιάκος 67

Διευκρινίσεις We use the following convention for input: an input line consisting of a single character 1...9 or # denotes a pressed button on the telephone touchpad. For example, to dial extension 13, you enter 1 3 # An input line consisting of the single character H denotes hanging up the telephone. Μ. Δικαιάκος 68

Σύστημα Φωνοκιβωτίων (Voice mail) Περιπτώσεις Χρήσης Reach Extension Change Greeting Leave a Message caller Log in owner Μ. Δικαιάκος Retrieve Messages Voice Mail System Change Passcode 69

70 Reach an Extension

70 Reach an Extension 1. User dials the main number of the Voice Mail System

Reach an Extension 1. User dials the main number of the Voice Mail System 2. The VMS speaks a prompt: Enter mailbox number followed by the # Μ. Δικαιάκος 70

Reach an Extension 1. User dials the main number of the Voice Mail System 2. The VMS speaks a prompt: Enter mailbox number followed by the # 3. The user types in the extension number of the message recipient Μ. Δικαιάκος 70

Reach an Extension 1. User dials the main number of the Voice Mail System 2. The VMS speaks a prompt: Enter mailbox number followed by the # 3. The user types in the extension number of the message recipient 4. The VMS speaks: You have reached mailbox xxxx. Please leave a message now. Μ. Δικαιάκος 70

71 Leave a Message

71 Leave a Message 1. The caller carries out Reach an Extension.

Leave a Message 1. The caller carries out Reach an Extension. 2. The caller speaks the message. Μ. Δικαιάκος 71

Leave a Message 1. The caller carries out Reach an Extension. 2. The caller speaks the message. 3. The caller hangs up. Μ. Δικαιάκος 71

Leave a Message 1. The caller carries out Reach an Extension. 2. The caller speaks the message. 3. The caller hangs up. 4. The VMS places the recorded message in the recipientʼs mailbox Μ. Δικαιάκος 71

72 Log in

72 Log in 1. The mailbox owner carries out Reach an Extension.

Log in 1. The mailbox owner carries out Reach an Extension. 2. The mailbox owner types the passcode, followed by the # key. (The default passcode is the same as the mailbox number. The mailbox owner can change it - see Change the Passcode). Μ. Δικαιάκος 72

Log in 1. The mailbox owner carries out Reach an Extension. 2. The mailbox owner types the passcode, followed by the # key. (The default passcode is the same as the mailbox number. The mailbox owner can change it - see Change the Passcode). 3. The voice mail system plays the mailbox menu: Enter 1 to retrieve your messages Enter 2 to change your passcode Enter 3 to change your greeting. Μ. Δικαιάκος 72

73 Retrieve Messages

73 Retrieve Messages 1. Mailbox owner carries out Log in.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu:

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message. Enter 3 to delete the current message.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message. Enter 3 to delete the current message. Enter 4 to return to the mailbox menu.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message. Enter 3 to delete the current message. Enter 4 to return to the mailbox menu. 4. The mailbox owner selects the listen to the current message menu option.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message. Enter 3 to delete the current message. Enter 4 to return to the mailbox menu. 4. The mailbox owner selects the listen to the current message menu option. 5. The VMS plays the current new message, or, if there are no new messages, the current old message. Note that the message is played, not removed from the queue.

73 Retrieve Messages 1. Mailbox owner carries out Log in. 2. The mailbox owner selects the retrieve your messages menu option 3. The VMS plays the message menu: Enter 1 to listen to the current message. Enter 2 to save the current message. Enter 3 to delete the current message. Enter 4 to return to the mailbox menu. 4. The mailbox owner selects the listen to the current message menu option. 5. The VMS plays the current new message, or, if there are no new messages, the current old message. Note that the message is played, not removed from the queue. 6. The VMS plays the message menu.