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

Σχετικά έγγραφα
07 Σχεδιασμός λογισμικού

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

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

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

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

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

03 Ανάλυση Απαιτήσεων και Σχεδιασμός Λογισμικού

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

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

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

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

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

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

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

02α Διαχείριση Έργων Λογισμικού

05 Ανάλυση απαιτήσεων

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

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

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

Rational Unified Process:

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

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

12 Έλεχος και επαλήθευση λογισμικού

UML: Unified modelling language

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

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

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Στόχοι της Πτυχιακής

Κεφάλαιο 4 Σχεδίαση Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

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

10α Έλεγχος και επαλήθευση λογισμικού

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

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

Οντοκεντρικός Προγραμματισμός

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

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

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

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

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

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

Ειδικά θέματα τεχνολογίας λογισμικού

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

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

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

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

Σχεδίαση Λογισμικού. Σημείωση

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

Σχεδιασµός βασισµένος σε συνιστώσες

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

11β Δομικά πρότυπα σχεδίασης

Πρόλογος Κεφ.1 Βασικές έννοιες της SDL Κεφ.2 Η SDL ως αντικειμενοστρεφής γλώσσα... 35

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

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

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

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

Μοτίβα Σχεδίασης (Design Patterns)

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

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

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

ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9)

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

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

Μοντελοποίηση Συστημάτων

ΧΡΟΝΟΔΙΑΓΡΑΜΜΑ ΜΕΛΕΤΗΣ ΤΗΣ Θ.Ε. ΠΛΗ24

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

05 Ανάλυση Απαιτήσεων

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 5: Διαγράμματα Κλάσης (1ο Μέρος)

Θεωρίες Μάθησης και Εκπαιδευτικό Λογισμικό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

Transcript:

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr

Αφαίρεση Abstraction "Η εννοιολογική διαδικασία κατά την οποία προκύπτουν γενικοί κανόνες από την εξέταση επιμέρους παραδειγμάτων." Wikipedia Χρησιμοποιείται σε πολλές επιστήμες. Αποτελεί το κύριο εργαλείο ανάλυσης και σχεδιασμού. 2

Τέσσερις βασικές αρχές αφαίρεσης abstraction principles Το σήμειο που ο αντικειμενοστρεφής προγραμματισμός συνδέεται με την εννοιολογική μοντελοποίηση conceptual modeling και την αναπαράσταση γνώσης knowledge represenation. 3

1. Κατηγοριοποίηση Στιγμιοτύπιση A. Taivalsaari 4

Κατηγοριοποίηση Στιγμιοτύπιση Σχέση του αντικειμένου με την κλάση του και αντίστροφα. Όλα τα αντικείμενα / στιγμιότυπα μιας κλάσης μοιράζονται κοινά και ομοιόμορφα χαρακτηριστικά. Η κλάση είναι το intensional abstraction όλων των δυνατών της αντικειμένων. Στιγμιοτύπιση μιας κλάσης συνήθως μέσω ειδικού τελεστή new. 5

2. Συνάθροιση Ανάλυση A. Taivalsaari 6

Συνάθροιση Ανάλυση Συνάθροιση ή σύνθεση επιμέρους εννοιών για τη σύσταση μιας νέας ξεχωριστής έννοιας. Σχέσεις μέρους όλου part of. Αντικείμενα ως μεταβλητές/πεδία άλλων αντικειμένων. 7

3. Γενίκευση Εξειδίκευση A. Taivalsaari 8

Γενίκευση Εξειδίκευση Σχέση μεταξύ κλάσεων. Η γενική κλάση συγκεντρώνει τα κοινά στοιχεία όλων των εξειδικεύσεών της. Η κληρονομικότητα είναι ο κατεξοχήν μηχανισμός υλοποίησης της εξειδίκευσης. 9

4. Ομαδοποίηση Διαχωρισμός A. Taivalsaari 10

Ομαδοποίηση Διαχωρισμός Ομαδοποίηση αντικειμένων με βάση κάποιο extensional και όχι intensional χαρακτηριστικό. Παραδείγματα; Αγαπημένα του χρήστη user favorites Πιο πρόσφατα / πιο δημοφιλή Αποτελέσματα μιας επερώτησης 11

Unified Modeling Language UML Γλώσσα μοντελοποίησης γενικής χρήσης που στοχεύει στην παροχή ενός καθιερωμένου τρόπου οπτικοποίησης και επικοινωνίας του σχεδιασμού ενός συστήματος. ISO standard 19501:2005 12

UML Διαγράμματα Κλάσεων Συστατικών Δραστηριότητας Περίπτωσης χρήσης Ακολουθίας Υπάρχουν και διάφορα άλλα Object, State, Communication, κ.ά 13

Διάγραμμα κλάσεων 14

Διάγραμμα συστατικών smartdraw.com 15

Διάγραμμα δραστηριότητας 1ο Παράδειγμα 2ο Παράδειγμα 16

Διάγραμμα περίπτωσης χρήσης By Kishorekumar 62, CC BY SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7880320 17

Διάγραμμα ακολουθίας 18

Πρόσθετες σχεδιαστικές αρχές design principles Πώς να δομήσουμε και να υλοποιήσουμε τις αφαιρέσεις abstractions 19

Μην επαναλαμβάνεσαι Don't Repeat Yourself "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system." A. Thomas, D. Hunt 20

Λίστα αναγνωσμάτων 13. Andrew Hunt, David Thomas, "The Pragmatic Programmer: From Journeyman to Master", The Pragmatic Bookshelf, 1999, 978 0 2016 1622 4. 21

Μόνο μια φορά Once and Only Once Αρχή του Extreme Programming XP Each and every declaration of behavior should appear Once and Only Once. 22

DRY vs WET : WET: We Enjoy Typing ή Waste Everybody's Time 23

Εφαρμογή της αρχής DRY στην πράξη Η επανάληψη duplication αυξάνει την τυχαία/τεχνητή πολυπλοκότητα του συστήματος accidental complexity. Οπουδήποτε στον κύκλο ζωής του λογισμικού υπάρχουν "χειροκίνητες" διαδικασίες, θα πρέπει να αυτοματοποιούνται π.χ. μέσω build system, scripting, κ.ά.. Αν προκύπτουν επαναλήψεις στη λογική, κάπου απαιτείται η προσθήκη μιας νέας αφαίρεσης. 24

Σύνολο αρχών S.O.L.I.D. Single responsibility S Open/closed Ο Liskov substitution L Interface segregation Ι Dependency inversion D 25

Μοναδική ευθύνη Κάθε κλάση/συστατικό πρέπει να έχει μία και μοναδική ευθύνη. A class should have only one reason to change. 26

Ανοικτή/κλειστή κλάση Κάθε κλάση/συστατικό πρέπει να είναι ανοικτή σε επεκτάσεις π.χ. προσθήκη νέων πεδίων ή μεθόδων. Κάθε κλάση/συστατικό πρέπει να είναι κλειστή και οριοθετημένη έτοιμη προς χρήση από τρίτα συστατικά. 27

Δυνατότητα αντικατάστασης Αν το S είναι υποτύπος του Τ τότε όλα τα αντικείμενα του δεύτερου θα πρέπει να μπορούν να αντικατασταθούν με αντικείμενα του πρώτου χωρίς να αλλοιωθεί κανένα από τα επιθυμητά χαρακτηριστικά του συστήματος. Strong behavioral subtyping. 28

Επιμερισμός διεπαφών Κανένα συστατικό δεν πρέπει να εξαρτάται από μεθόδους που δε χρησιμοποιεί. Χρήση μικρών και διαφορετικών interfaces για τη θέσπιση των διεπαφών μεταξύ συστατικών. 29

Ανιστροφή εξαρτήσεων Τα υψηλού επιπέδου συστατικά δεν πρέπει να εξαρτώνται από τα χαμηλού επιπέδου συστατικά. Και τα δύο θα πρέπει να εξαρτώνται από κοινές αφαιρέσεις. Οι αφαιρέσεις δεν πρέπει να εξαρτώνται από λεπτομέρειες. Οι λεπτομέρειες θα πρέπει να εξαρτώνται από τις αφαιρέσεις. 30

Πρότυπα σχεδίασης design patterns Σε επόμενη διάλεξη 31