180 likes | 338 Views
Case Study: ATM machine III Identifying Objects’ States and Activities in the ATM System. Νταλιακούρας Νικόλαος CEID – Πανεπιστήμιο Πατρών Object Oriented Programming II (C++) Χειμερινό Εξάμηνο 2011-2012. Μέχρι στιγμής είδαμε… τις κλάσεις (π.χ. ATM, Screen)
E N D
Case Study: ATM machine III • Identifying Objects’ States and Activities in the ATM System Νταλιακούρας Νικόλαος CEID – Πανεπιστήμιο Πατρών Object Oriented Programming II (C++) Χειμερινό Εξάμηνο 2011-2012
Μέχρι στιγμής είδαμε… • τις κλάσεις (π.χ. ATM, Screen) • τα χαρακτηριστικά (attributes) • (π.χ. στην κλάση ΑΤΜ το attribute userAuthenticatedπου δηλώνει • αν ο χρήστης είναι εξουσιοδοτημένος να κάνει την συναλλαγή) • Είδαμε πως τα attributes δηλώνουν την κατάσταση ενός αντικειμένου • (π.χ. αν το userAuthenticated είναι true τότε ο χρήστης είναι σε θέση • να εκτελέσει τη συναλλαγή) • Εντοπίσαμε κάποιες καταστάσεις «κλειδιά» που μπορεί να βρεθούν τα • αντικείμενά μας και πως τα αντικείμενα αλλάζουν καταστάσεις με βάση • διάφορα γεγονότα που συμβαίνουν στο σύστημα. • (π.χ. το userAuthenticatedαλλάζει κατάσταση από false σε true όταν • ο χρήστης εισάγει τα σωστά AccountNumberκαι PIN) • Είδαμε πώς το σύστημά μας οργανώνεται σε ένα διάγραμμα όπου • φαίνονται η λειτουργίες και οι αλληλεπιδράσεις των αντικειμένων.
State Machine Diagrams • Κάθε αντικείμενο σε ένα σύστημα περνάει από μια σειρά διακριτών • καταστάσεων • Η τρέχουσα κατάσταση για το αντικείμενο δηλώνεται από τις τιμές • που έχουν τη συγκεκριμένη στιγμή τα attributes του • Τα State Machine Diagrams μοντελοποιούν καταστάσεις «κλειδιά» • ενός αντικειμένου και δείχνουν κάτω υπό ποιες συνθήκες αλλάζει κατάσταση
Statediagrams • State Diagram forthe ATM object • Μοντελοποιεί τις καταστάσεις που μπορεί να βρεθεί ένα αντικείμενο • Οι καταστάσεις δηλώνονται με ένα ορθογώνιο με στρογγυλευμένες γωνίες • Ο κύκλος δηλώνει την αρχική κατάσταση • Τα βελάκια τις συσχετίσεις • ATM.userAuthenticated -> {true,false}
Activity Diagrams • Activitydiagramfor a BalanceInquirytransaction • Μοντελοποιεί την ακολουθία γεγονότων που συμβαίνουν σε ένα αντικείμενο κατά τη διάρκεια της εκτέλεσης • Στο σχήμα φαίνονται τα γεγονότα που συμβαίνουν από τη στιγμή που ο χρήστης κάνει αίτημα για το υπόλοιπο του λογαριασμού του μέχρι το αντικείμενο της κλάσης BalanceInquiry να επιστρέψει το αποτέλεσμα στην οθόνη
Operations • Operationονομάζουμε μια λειτουργία που παρέχει κάποια κλάση • Μπορούμε να ξεχωρίσουμε τις λειτουργίες κάθε κλάσης εξετάζοντας ρήματα και ρηματικές εκφράσεις μέσα στο κείμενο των απαιτήσεων – εκφώνηση
Verbsandverbphrasesforeachclass inthe ATM system
ModelingOperations • Για να καθορίσουμε τις λειτουργίες εξετάζουμε την κάθε ρηματική φράση που σχετίζεται με την κάθε κλάση • Για παράδειγμα η φράση «executes financial transactions» που σχετίζεται με την κλάση ΑΤΜ δηλώνει ότι η κλάση ΑΤΜ αναθέτει συναλλαγές να εκτελεστούν • Ως εκ τούτου, οι κλάσεις BalanceInquiry, Withdrawal και Deposit χρειάζονται καθεμιά μια λειτουργία (operation) για να εξυπηρετήσουν την κλάση ΑΤΜ
Operation of class BankDatabase and class Account • η κλάση BankDatabaseχρειάζεται μια λειτουργία που να παρέχει στο ΑΤΜ υπηρεσία ταυτοποίησης-επιβεβαίωσης • η κλάση Account πρέπει να παρέχει μια υπηρεσία ταυτοποίησης του ΡΙΝ που εισάγει ο χρήστης σε σχέση με το PΙΝ που είναι αποθηκευμένο στο αντικείμενο Account • …
Operations ofClassScreen • Προσθέτουμε μια λειτουργία που να μπορεί να απεικονίζει οποιοδήποτε μήνυμα • Πχ την λειτουργία displayMessage
Operations ofClassKeypad • Προσθέτουμε μια λειτουργία που να δίνει είσοδο στο σύστημα • Πχ την λειτουργία getInput
Operations ofClassCashDispenser andClassDepositSlot • CashDispenserδημιουργούμε τις λειτουργίες dispenseCashκαιisSufficientCashAvailable • DepositSlotδημιουργούμετη λειτουργία isEnvelopeReceived που επιστρέφει μια τιμή Boοlean
IdentifyingandModelingOperationParameters Στην κλάση BankDatabaseκαθορίζουμε ότι λειτουργία authenticateUser θα παίρνει δυο παραμέτρους userAccountNumberκαι userPΙΝ που είναι ακέραιοι αριθμοί. Επίσης οι λειτουργίες getAvailableBalance, getTotalBalance, credit και debit απαιτούν την παράμετρο userAccountNumberγια να εντοπίζουν τον συγκεκριμένο λογαριασμό που θα εφαρμοστούν οι αλλαγές που επιφέρουν