100 likes | 256 Views
Βιβλίο Γενεθλίων Λειτουργίες: Προσθήκη, Εύρεση, Υπενθύμιση, Αρχικοποίηση. Καθορισμός βοηθητικών τύπων και συναρτήσεων. Βασικοί τύποι : [ΝΑΜΕ] [ DATE] Η ακριβής μορφή ονομάτων και ημερομηνιών δεν ενδιαφέρει (06/03, 03/06, March 6th etc).
E N D
Βιβλίο Γενεθλίων Λειτουργίες: Προσθήκη, Εύρεση, Υπενθύμιση, Αρχικοποίηση
Καθορισμός βοηθητικών τύπων και συναρτήσεων Βασικοί τύποι: [ΝΑΜΕ] [DATE] Η ακριβής μορφή ονομάτων και ημερομηνιών δεν ενδιαφέρει (06/03, 03/06, March 6th etc)
Καθορισμός κατάστασης του συστήματος με σχήμα Z Όνομα σχήματος Κατάσταση συστήματος (μεταβλητές δηλωμένων τύπων) Σχέσεις μεταξύ τιμών των μεταβλητών (παραμένουν αληθείς σε όλες τις Καταστάσεις και διατηρούνται από όλες τις λειτουργίες) knownείναι το δυναμοσύνολο των ονομάτων με αποθηκευμένες ημερομηνίες birthday είναι μία μερική συνάρτηση που αντιστοιχείζει ορισμένα ονόματα στις αντίστοιχες ημερομηνίες γέννησης Η σχέση μεταξύ knownκαι birthdayείναι η αναλλοίωτη συνθήκη του συστήματος: το σύνολο known αντιστοιχεί στο πεδίο ορισμού (dom) της συνάρτησης birthday
Πιθανή κατάσταση του συστήματος known = {Susy, Mike, John} birthday = {John 25 March, Susy 20 Dec, Mike 20 Dec } • H αναλλοίωτη συνθήκη known = dom birthday ισχύει. • δεν υπάρχει όριο στον αριθμό των αποθηκευμένων ημερομηνιών • δεν περιγράφεται η σειρά των καταχωρήσεων • κάθε άτομο έχει μόνο μία ημερομηνία γενεθλίων (η birthday είναι συνάρτηση) • δύο άτομα μπορούν να έχουν την ίδια ημερομηνία γενεθλίων
Καθορισμός των λειτουργιών του συστήματος • Ορισμένες λειτουργίες τροποποιούν την κατάσταση του συστήματος και άλλες την αφήνουν αναλλοίωτη • Ορισμένες λειτουργίες έχουν είσοδο και/ή έξοδο
Προσθήκη της ημερομηνίας γενεθλίων ενός ατόμου το οποίο δεν βρίσκεται στο βιβλίο Όνομα λειτουργίας (σχήμα) εισαγωγή σχήματος είσοδος λειτουργίας είσοδος λειτουργίας προ-συνθήκη επέκταση της συνάρτησης (αν η προ-συνθήκη πληρείται) • Αυτό το σχήμα τροποποιεί την κατάσταση: • περιγράφει την κατάσταση πριν τη λειτουργία (μη τονισμένες μεταβλητές) • περιγράφει την κατάσταση μετά τη λειτουργία (τονισμένες μεταβλητές) • Σε αυτό το σχήμα δεν περιγράφεται τι θα γίνει αν δεν πληρείται η προ-συνθήκη
Προσθήκη της ημερομηνίας γενεθλίων ενός ατόμου το οποίο δεν βρίσκεται στο βιβλίο • Η λειτουργία AddBirthdayαναμένεται να επεκτείνει το σύνολο των γνωστών ονομάτων με το νέο όνομα: • known’ = known {name ?} • Η προδιαγραφή για την AddBirthdayμπορεί να χρησιμοποιηθεί για να αποδειχθεί η παραπάνω πρόταση: Η απόδειξη τέτοιων προτάσεων εξασφαλίζει ότι οι προδιαγραφές είναι ορθές Σε μεγάλο βαθμό η συμπεριφορά του συστήματος μπορεί να αναλυθεί χωρίς αυτό να υλοποιηθεί !
Εύρεση της ημερομηνίας γενεθλίων ενός ατόμου γνωστού στο σύστημα Αυτό το σχήμα αφήνει την κατάσταση του συστήματος αναλλοίωτη και είναι ισοδύναμο με:
cards! είναι ένα σύνολο ονομάτων (στους οποίους πρέπει να σταλεί κάρτα !!!) Εύρεση του ποιος έχει γενέθλια σε μία συγκεκριμένη ημέρα Αρχική κατάσταση του συστήματος: known = υποδηλώνει ότι η birthdayείναι επίσης κενή
Links for Z language: The Z Notation: A reference manual http://spivey.oriel.ox.ac.uk/~mike/zrm/ Example and Definitions http://cs.haifa.ac.il/courses/softe/zdocs/ZExamples.pdf One Line Editor example http://sern.ucalgary.ca/courses/SENG/611/F01/FormalSpecs.html The Z Notation (Oxford) http://archive.comlab.ox.ac.uk/z.html Community Z Tools Project (Sourceforge) http://czt.sourceforge.net/ Z Notation Examples http://staff.washington.edu/~jon/z/z-examples.html Introduction to Z http://www.cs.wm.edu/~coppit/csci435/references/spivey-intro-to-z.pdf