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

Σχετικά έγγραφα
Διαγράμματα Κλάσεων στη Σχεδίαση

Week. 6: Java Collections

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

Wrapper Classes, Abstract Classes and Interfaces

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

Τα διαγράµµατα κλάσεων

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

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

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

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

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

Τα διαγράµµατα συστατικών

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

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

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

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

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

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

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

Τα διαγράµµατα πακέτων

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

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

Week 7: Java Collection Classes

Standard Template Library (STL) C++ library

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

Βασικές Έννοιες Δοµών Δεδοµένων

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

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

Από τη UML στον Κώδικα. Μέρος Α

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

Κλάσεις και Αντικείµενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

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

Διδάσκων: Παναγιώτης Ανδρέου

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

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

Λογισµικό (Software SW) Γλώσσες

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

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

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

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

Σχεσιακή δοµή δεδοµένων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

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


Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

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

Ειδικά Θέματα Προγραμματισμού

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ

Σχεδιασµός Λογισµικού

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Βάσεις Δεδομένων Ι. 2 ο Φροντιστήριο. Πέρδικα Πολίνα [perdika]

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

Transcript:

Αντικειµενοστραφής Σχεδίαση Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας 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