Αντικειµενοστραφής Σχεδίαση Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Μέθοδοι Στα πρώτα στάδια της γράφουµε µόνο τα ονόµατα των µεθόδων Γράφουµε τις µεθόδους που αντιστοιχούν σε ευθύνες των κλάσεων Στη σχεδίαση γράφουµε εκτός από τα ονόµατα των µεθόδων και άλλες πληροφορίες όπως τις παραµέτρους τους και τον τύπο τους Υποσυστήµατα και πακέτα ιαµερίζουµε ένα µεγάλο σύστηµα σε µικρότερα συστήµατα Γνωστά και ως πακέτα Πακέτα Οµαδοποίηση των στοιχείων ενός υ Μπορεί να περιέχουν άλλα πακέτα Εξαρτώνται από άλλα πακέτα αν µια ή περισσότερες από τις κλάσεις τουε εξαρτώνται από κλάσεις των άλλων πακέτων Package 1 Collapsed package: does not show content Package 2 dependency Package name Content Expanded package Μοντέλα αντικειµενοστραφούς Χρησιµοποιούνται για την απόκτηση µιας λεπτοµερής εικόνας των κλάσεων και των αντικειµένων του συστήµατος Οδηγούν και διευκολύνουν την κωδικοποίηση Χρησιµοποιούνται διαγράµµατα UML Οι ίδιες έννοιες και σηµειολογία και για ανάλυση και για σχεδίαση 3 ειδών µοντέλα: στατικά, δυναµικά και λειτουργικά Λειτουργικά µοντέλα Περιγράφουν τους µετασχηµατισµούς δεδοµένων στο σύστηµα Βασικά περιέχουν διαγράµµατα ροής Τα λιγότερο σηµαντικά απο τα παραπάνω 3 είδη µοντέλων 1
Μοντέλα αντικειµενοστραφούς (συνέχεια) Στατικά µοντέλα) Στατική δοµή τωναντικειµένων και των σχέσεων µεταξύ τους Οι πληροφορίες που περιγράφουν δεν εξαρτάται απότοχρόνο ιαγράµµατα UML Στατικά διαγράµµατα δοµής ιαγράµµατα κλάσης ιαγράµµατα Object diagram ιαγράµµατα υλοποίησης ιαγράµµατα συστατικών ιαγράµµατα διευθέτησης παραδοτέου υναµικά µοντέλα Στοιχεία του συστήµατος που µεταβάλλονται στο χρόνο Σενάρια, πέρασµα µηνυµάτων, αλλαγές καταστάσεων, ροές δραστηριότητας ιαγράµµατα UML ιαγράµµατα περιπτώσεων χρήσης ιαγράµµατα αλληλεπίδρασης ιαγράµµατα ακολουθίας ιαγράµµατα συνεργασίας ιαγράµµατα δραστηριότητας ιαγράµµατα κατάστασης Στάδια αντικειµενοστραφούς Σχεδιασµός υψηλού επιπέδου και σχεδιασµός χαµηλού επιπέδου Υψηλού επιπέδου Συνολική αρχιτεκτονική υλικού και λογισµικού Προσδιορισµός των αντικειµενοστραφών υποσυστηµάτων Μοντέλο αντικειµένων, διαχείριση δεδοµένων, διασύνδεση µε το χρήστη, αλληλεπίδραση µε άλλα συστήµατα Προσδιορισµός των βασικών οντοτήτων και σχέσεων µεταξύ τους Κλάσεις, δεδοµένων, διασυνδέσεις µε άλλα συστήµατα Στάδια αντικειµενοστραφούς ΙΙ Κύρια υποσυστήµατα αντικειµενοστραφούς Σχεδιασµός χαµηλού επιπέδου Ορίζονται οι κλάσεις, τα χαρακτηριστικά και οι µέθοδοί τους Εφαρµόζεται επαναχρησιµοποίηση ηµιουργούνται τυχόν φυσικές µονάδες Αρχεία ή άλλες οντότητες που περιέχουν κώδικα Προσδιορίζονται οι εξαρτήσεις µεταξύ των συστατικών Λεπτοµερής σχεδιασµός των συστατικών υλικού και λογισµικού GUI HIC GUI Applications Model (from OOA) Internet OK to continue? LAN DMC Database SIC Devices 2
Κύρια υποσυστήµατα αντικειµενοστραφούς Μοντέλο αντικειµένων Ο βασικός πυρήνας του συστήµατος όπου γίνεται η εκτέλεση των λειτουργικών της εφαρµογής Προκύπτει κατευθείαν από το αντικειµενοστραφούς Συστατικό αλληλεπίδρασης µε το χρήστη Αντικείµενα διασύνδεσης µε τοχρήστη, π.χ. παράθυρα και φόρµες εισαγωγής και παρουσίασης δεδοµένων Συστατικό διαχείρισης δεδοµένων Αντικείµενα για καταχώρηση και ανάκτηση δεδοµένων Συστατικό αλληλεπίδρασης συστήµατος ιασύνδεση µε εξωτερικές συσκευές, τοπικά δίκτυα και Internet Από την Ανάλυση στη Σχεδίαση Λογική Σχεδίαση: Πώς θα υλοποιηθεί το σύστηµα Ορισµός τύπων δεδοµένων και νέων κλάσεων που δεν περιλαµβάνονται στο Λεπτοµερής ορισµός των δοµών δεδοµένων όλων των κλάσεων Πλήρης περιγραφή των συσχετίσεων µεταξύ των κλάσεων Λεπτοµερής ορισµός των διασυνδέσεων Χρήση προτύπων για βελτίωση της ποιότητας σχεδίου ηµιουργία των σχετικών αλγορίθµων υο περιπτώσεις: Το αρχικό αντικειµενοστραφές µεταβάλλεται στο ηµιουργία διαφορετικού υ (και το παραµένει ξεχωριστά) ιαγράµµατα αντικειµένων (object diagrams) Στιγµιότυπο της κατάστασης µιας κλάσης κάποια συγκεκριµένη στιγµή Συχνά χρησιµοποιούνται µε τα διαγράµµατα συνεργασίας Από ένα πλήρες διάγραµµα κλάσης προκύπτουν περισσότερα διαφορετικά διαγράµµατα αντικειµένων Οι συσχετίσεις µεταξύ των αντικειµένων αναπαριστούνται σαν συνδέσεις που περιέχουν όνοµα συσχέτισης και τα ονόµατα των αντίστοιχων ρόλων Όνοµα αντικειµένου Πεδία αντικειµένου intercity32:train code = 32 maxspeed = 160 length = 240 velocity = 124.0 Κλάση αντικειµένου Τιµές των πεδίων του αντικειµένου Σηµ. εν περιλαµβάνονται οι µέθοδοι Υλοποίηση των συσχετίσεων Είναι αντικείµενο του υ Συσχετίσεις µε πληθικότητα 0..1 και/ή 1..1 και στα δύο άκρα υλοποιούνται µε χρήσηµεταβλητής ή δείκτη στην αντίστοιχη κλάση Συσχετίσεις µε πληθικότητα 1..* ή 0..* αντιµετωπίζονται µέ τουςεξήςτρόπους: a) Αναδιάταξη του υ (και εισαγωγή/διαγραφή κλάσεων και µεθόδων όπου χρειάζεται) ώστε οι συσχετίσεις µεγάλης πληθικότητας να αντικαθιστούνται µε άλλες πληθικότητας 1..1 or 0..1. b) Χρήση κατάλληλων δοµών δεδοµένων (containers) που µπορούν να αποθηκεύουν στιγµιότυπα από πάνω από µια κλάσεις 3
Παράδειγµα περίπτωση α) Παράδειγµα περίπτωση β) Αλλαγή πληθικότητας Προσθήκη ονοµάτων ρόλων Κλάση αποθήκευσης (container class) Τα χαρακτηριστικά και οι µέθοδοι είναι τυποποιηµένα και δεν εµφανίζονται στο διάγραµµα Προσθήκη νέας µεθόδου Νέα µεταβλητή τύπου LinkedList; Προστέθηκε στη δοµή δεδοµένων του Track Containers Name Indexing Java class(es) Vector/Array Integer Array index List/Ordered-Collection Integer index List, ArrayList, LinkedList Description Fixed length container. Variable length container. Objects can be inserted and deleted. Set No index Set, HashSet Variable length container with no index. Objects must be unique (no duplication). SortedCollection/ SortedSet Internal order TreeSet Map/Dictionary Hash table Map, HashMap Objects are maintained in a pre-defined order. E.g.) a list of strings in alphabetic order. Variable length container where objects are inserted and accessed using a unique key. Μέθοδοι Οορισµός των µεθόδων των κλάσεων περιγράφει τη συµπεριφορά του συστήµατος Ενεργούν πάνω στα αντικείµενα των κλάσεων Στατικές µέθοδοι Εκτελούνται πάνω σε κλάσεις και όχι σε αντικείµενα. Η ίδια στατική µέθοδος αντιστοιχεί σε όλα τα αντικείµενα της κλάσης Απλές µέθοδοι Μέθοδοι που πρέπει να έχει κάθε αντικείµενο, π.χ. δοµητές, αποδοµητές καθώς και µέθοδοι απόδοσης και ανάγνωσης τιµής των πεδίων των κλάσεων Σύνθετες µέθοδοι Συνδέονται άµεσα µε τις ευθύνες των κλάσεων (όπως αυτές προσδιορίστηκαν στην CRC) Έχουν ήδη προσδιοριστεί από τη φάση της 4
public visibility private visibility protected visibility stereotype Μέθοδοι (συνέχεια) «motion» +computespeed():float -isstopped():boolean -defaultspeed(traintype:int=1):float «database» #readfromdb(dbid:string) method name Train Αφηρηµένες (abstract) µέθοδοι Συµβολίζονται µε πλάγια γράµµατα στα διαγράµµατα κλάσεων Αφηρηµένες (abstract) κλάσεις: έχουν τουλάχιστον µια αφηρηµένη µέθοδο default value return type static method (underlined) name and type of parameter Υπογραφή (signature) της µεθόδου εν µπορούν να δηµιουργηθούν στιγµιότυπα των αφηρηµένων κλάσεων ιασυνδέσεις (interfaces) Γενικά, µια διασύνδεση είναι ένα σύνολο δηµόσιων µεθόδων Ειδικότερα στη Java, είναι ένα σύνολο ορισµών µεθόδων (signature) χωρίς το κύριο µέρος των µεθόδων (method bodies). Λέγεται και καθαρά αφηρηµένη κλάση (Pure abstract class) Συνήθως δεν έχει χαρακτηριστικά (attributes) Μια κλάση λέµε οτι υλοποιεί µια διασύνδεση όταν περιέχει µεθόδους (µε πλήρως ορισµένο κύριο µέρος) µε τοίδιοόνοµα µ αυτό των µεθόδων της διασύνδεσης Μια κλάση µπορεί να υλοποιεί περισσότερες από µια διασυνέσεις Οι διασυνδέσεις επιτρέπουν κλάσεις από διαφορετικές ιεραρχίες και διαφορετική συµπεριφορά να αντιµετωπίζονται µε τον ίδιο τρόπο. Οι διασυνδέσεις µπορούν να κληρονοµούν από άλλες διασυνδέσεις String isequal(string):boolean isgreater(string):boolean ιασυνδέσεις (συνέχεια) Σχέση υλοποιεί (Implements) «interface» Comparable isequal(comparable):boolean isgreater(comparable):boolean Χωρίς χαρακτηριστικά (attributes) String isequal(string):boolean isgreater(string):boolean Συντοµογραφία αναπαράστασης µιας διασύνδεσης Comparable StringHashTable insert(string) delete(string) includes (String):Boolean Βέλος εξάρτησης: µια κλάση χρησιµοποιεί τις µεθόδους µιας διασύνδεσης 5