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

Σχετικά έγγραφα
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

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

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

Μεθοδολογία Προγραμματισμού

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

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

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

Προγραμματιστικό Περιβάλλον

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Προγραμματισμός ΙI (Θ)

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

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

Εισαγωγή στην Πληροφορική

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

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

Δομημένος Προγραμματισμός

Οπτικός Προγραμματισμός σε NetBeans με Java Swing

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

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

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Αρχιτεκτονική Λογισμικού

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

Προγραμματισμός ΙI (Θ)

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Λιβανός Γιώργος Εξάμηνο 2017Β

Προγραμματιστικές τεχνικές

γραπτή εξέταση στo μάθημα ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ' ΛΥΚΕΙΟΥ

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

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

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

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

Θέματα εξετάσεων. Τύπος: B

Κεφάλαιο 10 ο Υποπρογράµµατα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

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

6. Εισαγωγή στον προγραµµατισµό

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

1. Ποιους μαθησιακούς στόχους θα προσδιορίζατε στα πλαίσια της διδακτικής δραστηριότητας;

Δείχτες Επιτυχίας και Δείχτες Επάρκειας

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

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

Διαδικασιακός Προγραμματισμός

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

APP INVENTOR ΜΕΡΟΣ A. Σοφία Τζελέπη,

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Συναρτήσεις. Υποπρόγραμμα

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

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

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

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Transcript:

.. Μεθοδολογία Προγραμματισμού Καλή και κακή σχεδίαση Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 1 / 62

Εισαγωγή Ανεξαρτησία συστατικών Είπαμε πολλές φορές ότι στη σχεδίαση μιας κλάσης πρέπει να προσέξουμε να είναι όσο το δυνατόν περισσότερο ανεξάρτητη. Τι σημαίνει όμως αυτό; Πότε μπορούμε να πούμε ότι έχουμε τελικά μια «καλή» κλάση; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 2 / 62

Εισαγωγή Σύζευξη και συνεκτικότητα Δίνουν έμφαση στη δομή του συστήματος ανεξάρτητα από το πως μεταβάλλεται στο χρόνο Στη σχεδίαση τα συστατικά θα πρέπει να είναι όσο το δυνατόν ανεξάρτητα το ένα από το άλλο Για να αναγνωρίσουμε και να μετρήσουμε το βαθμό ανεξαρτησίας μεταξύ των συστατικών χρησιμοποιούμε δύο έννοιες: Σύζευξη Συνεκτικότητα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 3 / 62

Σύζευξη Είδη σύζευξης Σύζευξη περιεχομένου (κακή) Σύζευξη κοινών δεδομένων Σύζευξη ελέγχου Σύζευξη αντιγράφου Σύζευξη δεδομένων Μη Σύζευξη (καλή) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 4 / 62

Σύζευξη Σύζευξη περιεχομένου Όταν το ένα συστατικό α αλλάζει το περιεχόμενο ενός άλλου συστατικού β Παράδειγμα Μια συνάρτηση Α αλλάζει μια εντολή που βρίσκεται σε μια συνάρτηση Β. Παράδειγμα Μια συνάρτηση Α περιέχει μια εντολή goto σε μια συνάρτηση Β Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 5 / 62

Σύζευξη Προβλήματα στη σύζευξη περιεχομένου Σχεδόν οποιαδήποτε αλλαγή στο Β, ακόμα και αλλαγή του compiler που χρησιμοποιείται προϋποθέτει αλλαγή και στο Α. Αδύνατον να χρησιμοποιηθεί το Α χωρίς να χρησιμοποιηθεί και το Β Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 6 / 62

Σύζευξη Σύζευξη κοινών δεδομένων Όταν δύο συστατικά μοιράζονται κοινά δεδομένα Παράδειγμα Η συνάρτηση functiona() και η συνάρτηση functionb() μπορούν ΚΑΙ να διαβάσουν ΚΑΙ να αλλάξουν μια καθολική μεταβλητή (global variable) Παράδειγμα Δύο διαφορετικές συναρτήσεις έχουν πρόσβαση στην ίδια βάση δεδομένων και μπορούν να αλλάξουν ΤΗΝ ΙΔΙΑ ΕΓΓΡΑΦΗ Παράδειγμα Δύο διαφορετικές κλάσεις έχουν πρόσβαση (ανάγνωση/εγγραφή) στο ίδιο public attribute μιας κλάσης Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 7 / 62

Σύζευξη Προβλήματα στη σύζευξη κοινών δεδομένων Είναι αντίθετη στις αρχές του δομημένου προγραμματισμού Ο κώδικας που παράγεται δε διαβάζεται Πότε σταματά ο βρόγχος; w h i l e ( g l o b a l == 0) { i f ( x > 25) { f u n c t i o n A ( ) ; } e l s e { f u n c t i o n B ( ) ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 8 / 62

Σύζευξη Προβλήματα στη σύζευξη κοινών δεδομένων (συνχ.) Τα συστατικά μπορούν να έχουν παρενέργειες. Αυτό τα κάνει δυσανάγνωστα αφού πρέπει κανείς να διαβάσει ολόκληρο το συστατικό με προσοχή να δει αν αλλάζει κάποια καθολική μεταβλητή. Αν αλλάξει η καθολική μεταβλητή πρέπει να αλλάξει και κάθε συστατικό που τη χρησιμοποιεί Η επαναχρησιμοποίηση είναι δύσκολη. Πρέπει να υπάρχει το ίδιο σύνολο καθολικών μεταβλητών όποτε επαναχρησιμοποιείται το συστατικό Κάθε συστατικό έχει πρόσβαση σε περισσότερα δεδομένα από όσα χρειάζεται. Αυτό κάνει ευκολότερη τη δημιουργία λαθών από απροσεξία Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 9 / 62

Σύζευξη Πλεονεκτήματα στη σύζευξη κοινών δεδομένων Όταν ένα συστατικό έχει ένα τεράστιο αριθμό μεταβλητών και πρέπει να αρχικοποιηθούν, αντί να περαστούν σαν παράμετροι όποτε χρησιμοποιείται το συστατικό, ορίζονται σαν καθολικές μεταβλητές και αρχικοποιούνται έτσι πιο γρήγορα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 10 / 62

Σύζευξη Σύζευξη ελέγχου Όταν το ένα συστατικό περνά παραμέτρους στο άλλο που ελέγχουν τη συμπεριφορά του του ή μεταξύ ενός συστατικού και των εσωτερικών τμημάτων του Συνήθως εμφανίζεται σε συστατικά που παρουσιάζουν λογική συνεκτικότητα (δείτε τις παρακάτω διαφάνειες) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 11 / 62

Σύζευξη Παράδειγμα σύζευξης ελέγχου Η συνάρτηση progressmeter(int n) στο netbsdsrc/usr.bin/ftp/fetch.c παίρνει τρία ορίσματα -1 αρχικοποιεί το μετρητή προόδου και τον ρυθμίζει για μια ενημέρωση/δευτερόλεπτο 0 ενημερώνει την προβολή του μετρητή προόδου 1 σταματά την ενημέρωση του μετρητή. Όποιος καλεί αυτή τη συνάρτηση ελέγχει και αποφασίζει ποια λειτουργία θα εκτελέσει Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 12 / 62

Σύζευξη Προβλήματα στη σύζευξη ελέγχου Τα συστατικά δεν είναι ανεξάρτητα. Το συστατικό που καλείται πρέπει να ξέρει την εσωτερική δομή του συστατικού που το καλεί Επηρεάζει την επαναχρησιμοποίηση Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 13 / 62

Σύζευξη Σύζευξη αντιγράφου Πολλές γλώσσες επιτρέπουν μόνο απλές μεταβλητές σαν παραμέτρους σε συναρτήσεις ή μεθόδους Το όνομα ενός υπαλλήλου Ο κωδικός ενός προϊόντος Αλλά πολλές γλώσσες επιτρέπουν ολόκληρες δομές Το struct υπάλληλος Το struct υπάλληλος Σύζευξη αντιγράφου έχουμε όταν ένα συστατικό Α καλεί ένα συστατικό Β και περνά μια ολόκληρη δομή σε αυτό σαν παράμετρο και επιπλέον το Β χρειάζεται να ξέρει μόνο συγκεκριμένα πεδία από αυτή τη δομή Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 14 / 62

Σύζευξη Παράδειγμα σύζευξης αντιγράφου Σε μια συνάρτηση όπως αυτή; function calculatewithholding(employeerecord R); είναι δύσκολο να πείτε χωρίς να δείτε τον κώδικα ποια πεδία του R αλλάζουν ή χρησιμοποιούνται Θα έπρεπε να περνάν σαν παράμετροι μόνο συγκεκριμένα πεδία Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 15 / 62

Σύζευξη Προβλήματα στη σύζευξη αντιγράφου Δεν είναι εύκολο να ξεκαθαρίσεις τι κάνει το κάθε συστατικό Η επαναχρησιμοποίηση δεν είναι εύκολη Τα συστατικά αποκτούν πρόσβαση σε δεδομένα που δε χρειάζονται Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 16 / 62

Σύζευξη Προσοχή στη σύζευξη αντιγράφου Δεν είναι κακό να περνάτε ολόκληρες δομές αν αυτό είναι απαραίτητο: Μ i n v e r t a t r i x ( Μ o r i g i n a l a t r i x, Μ i n v e r t e d a t r i x ) ; p r i n t R e c o r d ( w a r e h o u s e R e c o r d ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 17 / 62

Σύζευξη Σύζευξη δεδομένων Όταν το ένα συστατικό περνά δεδομένα στο άλλο Είναι η καλύτερη σύζευξη που μπορείτε να πετύχετε d i s p l a y T i m e O f A r r i v a l ( f l i g h t N u m b e r ) ; c o m p u t e P r o d u c t ( f i r s t N u m b e r, secondnumber ) ; g e t J o b W i t h H i g h e s t P r i o r i t y ( j o b Q u e u e ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 18 / 62

Σύζευξη Αντικειμενοστραφής προγραμματισμός και σύζευξη Ένα από τα πλεονεκτήματα των αντικειμενοστραφών συστημάτων είναι ότι παρουσιάζουν μικρή σύζευξη καθώς κάθε τάξη μπορεί και περιορίζει τις πράξεις που γίνονται στα δεδομένα της αλλά και περιέχει τους ορισμούς των πράξεων αυτών Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 19 / 62

Συνεκτικότητα Συνεκτικότητα Αναφέρεται στην εσωτερική συνοχή ενός συστατικού Όσο πιο μεγάλη συνοχή έχει ένα συστατικό τόσο περισσότερο σχετίζονται μεταξύ τους τα εσωτερικά του μέρη και εξυπηρετούν καλύτερα το συνολικό σκοπό του Ένα συστατικό με μεγάλη συνοχή δεν έχει παραπανίσια κομμάτια! Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 20 / 62

Συνεκτικότητα Είδη συνεκτικότητας Λειτουργική Καλή (υψηλή) Σειριακή Επικοινωνιακή Διαδικασιακή Χρονική Λογική Συμπτωματική Κακή (χαμηλή) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 21 / 62

Συνεκτικότητα Συμπτωματική συνεκτικότητα Όταν τα μέρη δε σχετίζονται μεταξύ τους Παράδειγμα: f u n c t i o n d o I t A l l ( c h a r * par1, i n t p a r 2 ) p r i n t N e x t L i n e ( ) ; R e v e r s e S t r i n g ( p a r 1 ) p a r 2 += 7 ; r e t u r n p a r 2 Συνήθως προκύπτει από εντολές του τύπου Γράψτε μια συνάρτηση που αποτελείται από 10-20 εντολές Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 22 / 62

Συνεκτικότητα Προβλήματα συμπτωματικής συνεκτικότητας Το συστατικό δε συντηρείται εύκολα γιατί είναι δυσνόητο Δε μπορεί να επαναχρησιμοποιηθεί Διορθώνεται όμως εύκολα: Φτιάξτε τόσα χωριστά συστατικά όσες και οι ενέργειες που έχετε Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 23 / 62

Συνεκτικότητα Λογική συνεκτικότητα Όταν διάφορα λογικά σχετιζόμενες συναρτήσεις ή δεδομένα τοποθετούνται στο ίδιο συστατικό Για παράδειγμα έχετε μια συνάρτηση η οποία γράφει δεδομένα σε συσκευές. Επιλέγετε τη συσκευή στην οποία θα γράψει περνώντας μια παράμετρο. Π.χ. Αν περαστεί ο κωδικός 1 γράφει σε δίσκο, Αν περαστεί ο κωδικός 2 γράφει στη μνήμη Στις περισσότερες από αυτές τις περιπτώσεις η συνάρτηση αυτή θα παίρνει και άλλες παραμέτρους που θα τους χρησιμοποιεί ανάλογα με τον κωδικό που περάσατε Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 24 / 62

Συνεκτικότητα Παράδειγμα λογικής συνεκτικότητας f u n c t i o n c ode = 7 ; w r i t e D a t a ( op code, dummy 1, / / n o t u s e d i f c o d e=7 dummy 2, / / n o t u s e d i f c o d e=7 dummy 3, / / n o t u s e d i f c o d e =7); Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 25 / 62

Συνεκτικότητα Παράδειγμα λογικής συνεκτικότητας Το συστατικό στα δεξιά περιέχει κώδικα που διαχειρίζεται όλες τις εγγραφές/αναγνώσεις. Βάζετε μια καινούργια συσκευή. (πχ. Ένα νέο δίσκο). Πρέπει να αλλάξετε τα κομμάτια 1, 2, 3, 4, 7, 8. Τι θα γίνει όμως με τις συσκευές που ήδη χρησιμοποιούσαν αυτόν τον κώδικα; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 26 / 62

Συνεκτικότητα Προβλήματα λογικής συνεκτικότητας Οι διεπαφές δεν είναι ξεκάθαρες Δεν είναι ξεκάθαρο που βρίσκεται και τι κάνει κάθε κομμάτι Η επαναχρησιμοποίηση είναι δύσκολη Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 27 / 62

Συνεκτικότητα Χρονική συνεκτικότητα Όταν τα μέρη σχετίζονται με βάση το χρονισμό τους Ένα συστατικό που κάνει αρχικοποίηση c l a s s i n i t i a l i z e { / / Αρχικοποίησε μεταβλητέςπρογράμματος / / Άδειασε τονπίνακα S a l e s / / Διάβασε τηνπρώτηεγγραφήαπότονπίνακα T r a n s a c t i o n s / / Εμφάνισε μήνυμαστηνοθόνη Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 28 / 62

Συνεκτικότητα Παράδειγμα Χρονικής συνεκτικότητας H κλάση Compiler της μηχανής Jasper p u b l i c c l a s s C o m p i l e r { p u b l i c b o o l e a n c o m p i l e ( ) { i f ( j a v a c == n u l l ) r e t u r n t r u e ; } p u b l i c v o i d s e t J a v a C o m p i l e r ( J a v a C o m p i l e r j a v a c ) t h i s. j a v a c = j a v a c ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 29 / 62

Συνεκτικότητα Επεξήγηση παραδείγματος Η μέθοδος setjavacompiler() έχει ενταχθεί στην κλάση γιατί πρέπει να την καλέσουμε χρονικά πριν την μέθοδο compile() Τι θα γίνει αν ο χρήστης απλά ξεχάσει να την καλέσει; Υπάρχει κάτι που υποχρεώνει το χρήστη να το κάνει; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 30 / 62

Συνεκτικότητα Προβλήματα χρονικής συνεκτικότητας Οι ενέργειες που εκτελούνται μέσα στο συστατικό έχουν μόνο μικρή σχέση μεταξύ τους αλλά συνήθως μεγάλη σχέση με ενέργειες που γίνονται σε άλλα συστατικά. Αρχικοποιούμε τον πίνακα Sales αλλά άλλες ενέργειες όπως «ενημέρωσε τον Sales» «τύπωσε τον Sales» βρίσκονται σε άλλα συστατικά Αν θέλουμε να αλλάξουμε τη δομή του πίνακα σε ποια συστατικά πρέπει να αλλάξουμε τον κώδικα; Δεν επιτρέπει την επαναχρησιμοποίηση Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 31 / 62

Συνεκτικότητα Διαδικασιακή συνεκτικότητα Διαφορετικές λειτουργίες ομαδοποιούνται σε ένα συστατικό επειδή πρέπει να εκτελεστούν με συγκεκριμένη σειρά Συνήθως οι λειτουργίες δεν έχουν κάποιο κοινό δεδομένο, αλλά απλά όταν ολοκληρώνεται η μία περνάει τον έλεγχο στην άλλη f u n c t i o n m a k e R e p a i r s ( ) { r e a d p a r t number u p d a t e r e p a i r r e c o r d on m a s t e r f i l e } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 32 / 62

Συνεκτικότητα Προβλήματα διαδικασιακής συνεκτικότητας Οι ενέργειες μέσα στο συστατικό είναι μόνο χαλαρά συνδεδεμένες μεταξύ τους. Δεν επιτρέπει την επαναχρησιμοποίηση Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 33 / 62

Συνεκτικότητα Πότε είναι απαραίτητη Όταν φτιάχνεται ένα συστατικό που ελέγχει (βρίσκεται πάνω από) όλα τα άλλα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 34 / 62

Συνεκτικότητα Επικοινωνιακή συνεκτικότητα Ομαδοποιούνται συναρτήσεις που δρουν στο ίδιο σύνολο δεδομένων. Μοιάζει με τη χρονική αλλά εδώ κάθε λειτουργία δρα στα ίδια δεδομένα και η σειρά με την οποία γίνονται οι λειτουργίες δεν είναι τόσο σημαντική Παράδειγμα Ενημέρωσε μια εγγραφή στη βάση ΚΑΙ γράψε τα στοιχεία της εγγραφής σε ένα αρχείο Υπολόγισε νέες συντεταγμένες ΚΑΙ τύπωσέ τες στην οθόνη Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 35 / 62

Συνεκτικότητα Προβλήματα επικοινωνιακής συνεκτικότητας Οι ενέργειες είναι πιο στενά συνδεδεμένες αλλά όχι με το βέλτιστο τρόπο Δεν είναι εύκολη η επαναχρησιμοποίηση γιατί κάθε συστατικό τελικά εκτελεί πάνω από μια ενέργειες Καλό θα ήταν να χωριστεί σε περισσότερα συστατικά, ένα για κάθε ενέργεια Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 36 / 62

Συνεκτικότητα Ακολουθιακή συνεκτικότητα Όταν ένα συστατικό εκτελεί μια σειρά από ενέργειες, αλλά κάθε μία είναι ορισμένη ανεξάρτητα από την άλλη και όλες ενεργούν πάνω στο ίδιο σύνολο δεδομένων Παράδειγμα I n s a l e s R e g i o n. c s t r u c t S a l e s R e g i o n { } ; / / d e f i n i t i o n i n i t S a l e s R e g i o n ( ) / / f u n c t i o n u p d a t e S a l e s R e g i o n ( ) / / f u n c t i o n p r i n t S a l e s R e g i o n ( ) / / f u n c t i o n Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 37 / 62

Συνεκτικότητα Λειτουργική συνεκτικότητα Κάθε τμήμα επεξεργασίας είναι απαραίτητο για την απόδοση μιας μόνο λειτουργίας Παράδειγμα Υπολόγισε τη θερμοκρασία του δωματίου Υπολόγισε το εμβαδόν ενός τετραγώνου Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 38 / 62

Συνεκτικότητα Γιατί είναι καλή Γιατί η επαναχρησιμοποίηση είναι εύκολη Γιατί η εύρεση και διόρθωση λαθών είναι εύκολη Η λειτουργική συνεκτικότητα είναι ιδεατή και όχι πάντα δυνατή Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 39 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Ανάλυση περιπτώσεων χρήσης Πολλές φορές είναι χρήσιμο προκειμένου να καταλήξουμε σε μια καλή σχεδίαση να ξεκινήσουμε αναλύοντας μια περίπτωση χρήσης με βάση γενικές «κλάσεις ανάλυσης» Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 40 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κλάση ανάλυσης Αποτελεί μια γενικευμένη κλάση η οποία κατά τη φάση της σχεδίασης θα αντιστοιχηθεί σε περισσότερες από μια τάξεις Επικεντρώνεται στις λειτουργικές απαιτήσεις και αναβάλει το χειρισμό των μη λειτουργικών απαιτήσεων στη φάση σχεδιασμού και υλοποίησης Δεν περιέχει μεθόδους. Το πως συμπεριφέρεται ορίζεται ουσιαστικά από τις υποχρεώσεις της Έχει χαρακτηριστικά (τα οποία αργότερα μπορεί να γίνουν κλάσεις) Σχετίζεται με άλλες κλάσεις Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 41 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κατηγορίες κλάσεων ανάλυσης Φανταστείτε ότι έχετε μόνο τρία είδη κλάσεων στη διάθεσή σας κλάσεις ορίου Κλάσεις που είναι υπεύθυνες για να στέλνουν δεδομένα σε χαρακτήρες ή να παίρνουν δεδομένα από αυτούς. κλάσεις οντότητας Κλάσεις που είναι υπεύθυνες για να αποθηκεύουν δεδομένα (γνωστές και ως κλάσεις δεδομένων) κλάσεις ελέγχου κλάσεις που κάνουν ελέγχους, ορίζουν με ποια σειρά πρέπει να γίνουν διάφορες ενέργεια και «συνδέουν» τις ενέργειες των κλάσεων ορίου με τις κλάσεις οντότητας. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 42 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κλάσεις ορίου (Boundary classes) Χρησιμοποιούνται για να περιγράψουν τη διασύνδεση μεταξύ του συστήματος και των χαρακτήρων Αυτή η διασύνδεση περιλαμβάνει συνήθως λήψη και παρουσίαση πληροφορίας και αιτήσεις από και προς το σύστημα Είναι συνήθως γενικεύσεις τερματικών, εκτυπωτών, παραθύρων κτλ Οι τάξεις αυτές περιγράφουν το ΤΙ επιτυγχάνεται από τη διασύνδεση και όχι το ΠΩΣ Κάθε τέτοια τάξη συνδέεται με τουλάχιστον ένα χαρακτήρα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 43 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κλάσεις ορίου (Boundary classes Χρησιμοποιούνται για να περιγράψουν τη διασύνδεση μεταξύ του συστήματος και των χαρακτήρων Αυτή η διασύνδεση περιλαμβάνει συνήθως λήψη και παρουσίαση πληροφορίας και αιτήσεις από και προς το σύστημα Είναι συνήθως γενικεύσεις τερματικών, εκτυπωτών, παραθύρων κτλ Οι τάξεις αυτές περιγράφουν το ΤΙ επιτυγχάνεται από τη διασύνδεση και όχι το ΠΩΣ Κάθε τέτοια τάξη συνδέεται με τουλάχιστον ένα χαρακτήρα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 44 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Χαρακτηριστικά (attributes) κλάσεων ορίου Οι τάξεις ορίου που επικοινωνούν με ανθρώπους έχουν συνήθως χαρακτηριστικά που αφορούν πληροφορίες (πχ text fields, labels etc) Οι τάξεις ορίου που επικοινωνούν με άλλα συστήματα έχουν χαρακτηριστικά κάποιου πρωτοκόλλου επικοινωνίας Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 45 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κλάσεις οντότητας (Entity Class) Αναπαριστούν πληροφορία η οποία διατηρείται για κάποιο χρονικό διάστημα Στις περισσότερες περιπτώσεις προέρχονται κατευθείαν από το πεδίο εφαρμογής (domain model) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 46 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Χαρακτηριστικά κλάσεων οντοτήτων Τα χαρακτηριστικά μιας κλάσης οντοτήτων είναι συνήθως αρκετά φανερά Συνήθως μπορείτε να τα βρείτε από τα χαρακτηριστικά των εννοιών που έχετε αναπαραστήσει στο domain model Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 47 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Ανακαλύπτοντας κλάσεις οντοτήτων Αρχικά μπορούν να σκιαγραφηθούν οι βασικές τάξεις οντοτήτων από το domain model. Οι σχέσεις που υπάρχουν στο domain model μπορούν να χρησιμοποιηθούν για να αποκαλύπτουν και τις σχέσεις ανάμεσα στις τάξεις οντοτήτων Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 48 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κλάσεις ελέγχου Αναπαριστούν συνεργασίες, μεταφορές, έλεγχο άλλων αντικειμένων. Αναπαριστούν υπολογισμούς Σε γενικές γραμμές η «δυναμική» του συστήματος αναπαριστάται από τις τάξεις ελέγχου Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 49 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Χαρακτηριστικά κλάσεων ελέγχου Συνήθως οι κλάσεις ελέγχου δεν έχουν κάποια χαρακτηριστικά γιατί συνήθως έχουν και σύντομη διάρκεια ζωής. Πολλές φορές όμως μπορεί να έχουν χαρακτηριστικά που συσσωρεύονται, πχ μετρητές, που χρησιμοποιούνται σε μια περίπτωση χρήσης Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 50 / 62

Ένα πρώτο βήμα για την σωστή σχεδίαση Κάρτες CRC Χρησιμοποιούνται πολλές φορές να περιγράψουν με μεγαλύτερη λεπτομέρεια τη λειτουργία μιας κλάσης ανάλυσης Τα αρχικά τους προέρχονται από τη φράση Class Responsibility Collaboration Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 51 / 62

MVC Κλάσεις ανάλυσης και MVC Η διαίρεση ενός συστήματος χρησιμοποιώντας τις κλάσεις ανάλυσης σε 3 βασικά επίπεδα βρίσκει εφαρμογή ως αρχιτεκτονική λύση σε διάφορα συστήματα και πολλές φορές συναντάται με τα αρχικά Model-View-Controller. Στην περιγραφή που κάναμε προηγουμένως οι κλάσεις δεδομένων ανήκουν στο model οι κλάσεις ορίου στο view οι κλάσεις ελέγχου στο controller Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 52 / 62

MVC Το αρχιτεκτονικό μοτίβο MVC Πρωτοπαρουσιάστηκε από τον Trygve Reenskaug, έναν προγραμματιστη Smalltalk στο Xerox Palo Alto Research Center το 1979 βοηθά στη μείωση της σύζευξης μεταξύ των δεδομένων και της επιχειρηματικής λογικής από τον τρόπο που αυτά εμφανίζονται στο χρήστη Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 53 / 62

MVC Βασικά συστατικά του MVC Model Αναπαριστά δεδομένα και κανόνες που αφορούν στην πρόσβαση και στον έλεγχο των δεδομένων. View Εμφανίζει τα δεδομένα ενός μοντέλου. Αν αλλάξει το μοντέλο το view πρέπει να ενημερώσει την εμφάνιση όπως απαιτείται. Push model Το view ενημερώνεται από το μοντέλο μέσω events Pull model To view ρωτά το μοντέλο για τα ποιο πρόσφατα δεδομένα Controller Μεταφράζει τις ενέργειες του χρήση στο view σε ενέργειες στο μοντέλο Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 54 / 62

MVC Δύο διαφορετικές υλοποιήσεις του MVC Το μοτίβο του MVC εμφανίζεται με δύο διαφορετικές τρόπους Μπορεί το view να ενημερώνεται από το μοντέλο απευθείας Μπορεί το view να ενημερώνεται μέσω του controller Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 55 / 62

MVC Πρώτη προσέγγιση Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 56 / 62

MVC Δεύτερη προσέγγιση Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 57 / 62

MVC Πλεονεκτήματα της δεύτερης προσέγγισης Μεγαλύτερη ανεξαρτησία του μοντέλου από το view Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 58 / 62

MVC Το MVC στη Java Στη Java χρησιμοποιείται μια τροποποιημένη έκδοση του MVC To View και ο Controller είναι μία κλάση (Component) Κάποιες από τις ευθύνες ενός component ανατίθενται σε άλλες κλάσεις που είναι υπεύθυνες για τη δημιουργία του Pluggable Look & Feel Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 59 / 62

MVC Παράδειγμα αντιστοίχησης στη Java Component Model Interface Είδος JButton ButtonModel GUI JComboBox ComboBoxModel data JTable TableModel data JTable TableColumnModel GUI Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 60 / 62

MVC Είδη μοντέλων στο Swing GUI Interfaces που ορίζουν οπτικά θέματα όπως αν ένα κουμπί πατήθηκε η όχι data Αναπαριστούν κάποια δεδομένα που έχουν νόημα για την εφαρμογή (για παράδειγμα οι πελάτες που εμφανίζονται σε ένα Table Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 61 / 62

MVC Βιβλιογραφία Για το σημερινό μάθημα θεωρείστε ως κομμάτι της ύλης και τα ακόλουθα Amy Fowler, A Swing Architecture Overview, The Inside Story on JFC Component Design,http://www.eecs.yorku.ca/course_ archive/2004-05/w/3461/fowlerarticle.pdf Robert Exckstein, JAVA SE Application Design With MVC, 2007 (Διαθέσιμο στο elearning) Τα παραδείγματα πραγματικού κώδικα στην ενότητα σύζευξης και συνοχής προέρχονται από το βιβλίο Diomidis Spinellis. Code Quality: The Open Source Perspective. Addison Wesley, 2006 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 62 / 62