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

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

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

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

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

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

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

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

Περιεχόµενα. Βασικές αρχές αντικειµενοστρεφούς. Κεφάλαιο 1 Αντικείµενα και κλάσεις Κεφάλαιο 2 Κατανόηση των ορισµών κλάσεων...

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και

Ανάπτυξη και αξιολόγηση ποιότητας λογισµικού παιχνιδιών

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

ρ. Μάρκος Ν. ενδρινός Καθηγητής Πληροφορικής ΤΕΙ-Α Microsoft Office Power Point 2003

Εργαλεία Κατασκευής Παιχνιδιών Ι (Unreal Editor, Half Life, Doom Editor)

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

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

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

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Πληροφορική 2. Τεχνολογία Λογισμικού

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

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

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

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

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

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

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

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΜΟΝΤΕΛΟΠΟΙΗΣΗ Ε ΟΜΕΝΩΝ, ΚΛΑΣΙΚΑ ΜΟΝΤΕΛΑ Ε ΟΜΕΝΩΝ

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Διαχείριση Πολιτισμικών Δεδομένων

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Week. 6: Java Collections

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

ΗΥ252 - Οντοκεντρικός Προγραµµατισµός Προγραµµατιστική Εργασία Εαρινού Εξαµήνου 2004 Περιγραφή Παραδοτέων

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

5 Βιβλιοθήκες & Τεκµηρίωση

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

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

8. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις.

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

Τα διαγράµµατα ακολουθίας

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

3 Αλληλεπίδραση Αντικειμένων

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

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

ΧΡΗΣΙΜΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

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

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

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

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

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

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

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

Γεωγραφικά Πληροφοριακά Συστήµατα (Geographical Information Systems GIS)

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

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

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

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

ΠΛΗΡΟΦΟΡΙΚΗ Γ ΤΑΞΗΣ ΓΕΛ ΚΛΕΙΩ ΣΓΟΥΡΟΠΟΥΛΟΥ. ΣΥΓΧΡΟΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Αντικειμενοστραφής Προγραμματισμός

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

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

Σχεδιαστικά Προγράμματα Επίπλου

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ. Ι. Ψαρομήλιγκος Χ. Κυτάγιας

Comparative Study of API vs. Open-Source Software ZAPROUDI A. PASCHALIA. Supervisor: CHATZHGEORGIOU ALEXANDROS

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

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

Cabri II Plus Λογισμικό δυναμικής γεωμετρίας απευθύνεται σε μαθητές και δασκάλους όλων των βαθμίδων!

Χρήστος Στασινός. ουλεύοντας με τη. Microsoft Access ΑΘΗΝΑ

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

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

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

Transcript:

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

Εισαγωγή 2 ιαρκής συντήρηση και επέκταση λογισµικού Οι εταιρίες συνήθως συντηρούν, επεκτείνουν και πωλούν µια εφαρµογή για πολλά χρόνια Καλή σχεδίαση κλάσεων Κώδικας που διευκολύνει τις αλλαγές, όπως η διόρθωση ενός σφάλµατος και ή προσθήκη λειτουργικότητας Βραχυπρόθεσµα απαιτεί περισσότερη προσπάθεια Μακροπρόθεσµα µας σώζει από πολύ κόπο εν έχει να κάνει µε την ορθή Λειτουργία της εφαρµογής Τεκµηρίωση των κλάσεων

Σύζευξη 3 Η έννοια της σύζευξης (coupling) Αφορά το βαθµό σύνδεσης των κλάσεων Καλή σχεδίαση = χαλαρή σύζευξη (loose coupling) Κάθε κλάση είναι ανεξάρτητη και επικοινωνεί µέσω µιας µικρής και καλά καθορισµένης διασύνδεσης Η αλλαγή της υλοποίησης µιας κλάσης δεν απαιτεί την πραγµατοποίηση αλλαγών σε άλλες κλάσεις Πλεονεκτήµατα Αναγνωσιµότητα (readability) Επαναχρησιµοποίηση (reuse) Ευκολία συντήρησης και επέκτασης

Συνοχή 4 Η έννοιας της συνοχής (cohesion) Αφορά τον αριθµό και την ποικιλία των εργασιών µιας µονάδας κώδικα (µέθοδος, κλάση, πακέτο) Καλή σχεδίαση = υψηλή συνοχή Κάθε µονάδα κώδικα (µέθοδος, κλάση, πακέτο) είναι υπεύθυνη για µια καλώς ορισµένη εργασία ή οντότητα Μονάδες κώδικα που ασχολούνται µε πολλές και διαφορετικές εργασίες δεν είναι συνεκτικές Πλεονεκτήµατα Αναγνωσιµότητα (readability) Επαναχρησιµοποίηση (reuse) Ευκολία συντήρησης και επέκτασης

Άλλες Έννοιες Σχεδίασης Κλάσεων 5 Τοπικότητα των αλλαγών Η πραγµατοποίηση αλλαγών σε µια κλάση πρέπει να έχει ελάχιστες συνέπειες σε άλλες Από τους κύριους στόχους της καλής σχεδίασης Έµµεση σύζευξη Μια κλάση βασίζεται σε εσωτερικές πληροφορίες µιας άλλης κλάσης χωρίς αυτό να είναι προφανές Σύζευξη και διάγραµµα κλάσεων Όσο περισσότερα βέλη, τόσο µεγαλύτερη σύζευξη

Αρχές Καλής Σχεδίασης 6 Αποφυγή πανοµοιότυπων τµηµάτων κώδικα Ενθυλάκωση / απόκρυψη πληροφοριών Σχεδίαση καθοδηγούµενη από αρµοδιότητες (responsibility-driven design) Κάθε κλάση πρέπει να είναι αρµόδια για τη διαχείριση των δικών της δεδοµένων Χαλάρωση της σύζευξης κλάσεων Πρόβλεψη πιθανών αλλαγών Ένας καλός σχεδιαστής λογισµικού πρέπει να µπορεί να προβλέπει τι θα µπορούσε να αλλάξει σε µια εφαρµογή και να προνοεί για τη διευκόλυνση των αλλαγών

Ένα Παιχνίδι Περιπέτειας 7 Μελέτη των κλάσεων Parser, Command, CommandWords, Room, Game ιάγραµµα κλάσεων Game Parser Room Command CommandWords

Πανοµοιότυπα Τµήµατα Κώδικα 8 Πανοµοιότυπα τµήµατα κώδικα Η ύπαρξη του ίδιου ακριβώς τµήµατος κώδικα πολλές φορές µέσα στην ίδια εφαρµογή Είναι ένδειξη κακής σχεδίασης Οι όποιες αλλαγές θα πρέπει να γίνονται σε πολλά σηµεία, γεγονός που είναι δύσκολο να αντιληφθεί ένας προγραµµατιστής που συντηρεί το πρόγραµµα Είναι σύµπτωµα κακής συνοχής Ξεχωριστή µέθοδος για το τµήµα κώδικα που επαναλαµβάνεται (µεγαλύτερη συνοχή)

Απόκρυψη Πληροφοριών 9 Απόκρυψη πληροφοριών (information hiding) Οι εσωτερικές λεπτοµέρειες υλοποίησης µιας κλάσης πρέπει να κρύβονται από άλλες κλάσεις Γνωστή και ως αρχή της ενθυλάκωσης Ο προγραµµατιστής δεν χρειάζεται να τις γνωρίζει οµοστοιχειοποίηση και αφαίρεση Ο προγραµµατιστής δεν πρέπει να τις γνωρίζει Οι κλάσεις δεν πρέπει να βασίζονται στο πως ακριβώς υλοποιούνται άλλες κλάσεις

Public και Private 10 Τροποποιητές πρόσβασης (access modifiers) public, private, Καθορίζουν την ορατότητα ενός πεδίου, µεθόδου, ή κατασκευαστή public Πρόσβαση µέσα από την ίδια την κλάση, αλλά και από οποιαδήποτε άλλη κλάση Αφορά τη διασύνδεση της κλάσης private Πρόσβαση µόνο µέσα από την ίδια την κλάση Αφορά τον πηγαίο κώδικα της κλάσης

Ιδιωτικές Μέθοδοι & ηµόσια Πεδία 11 Ιδιωτικές µέθοδοι Ένα µεγάλο τµήµα κώδικα χωρίζεται σε πολλά µικρότερα για λόγους αναγνωσιµότητας εν απαιτείται δηµόσια πρόσβαση στα επί µέρους τµήµατα Ένα τµήµα κώδικα που επαναλαµβάνεται ηµόσια πεδία Επιτρέπονται, αλλά Παραβιάζεται η αρχή της απόκρυψης πληροφοριών Χάνεται ο έλεγχος (πρόσβαση και µετάλλαξη) της κατάστασης των αντικειµένων από την ίδια την κλάση Ελλοχεύει ο κίνδυνος στενής σύζευξης Εποµένως: Τα πεδία πρέπει πάντα να είναι ιδιωτικά!

Παραδείγµατα (1/4) 12 Πανοµοιότυπα τµήµατα κώδικα Αφαιρέστε τις δύο εµφανίσεις πανοµοιότυπου τµήµατος κώδικα από την κλάση Game [better] Επεκτείνετε το παιχνίδι µε δύο επιπλέον κατευθύνσεις (πάνω και κάτω) Χρήση ενθυλάκωσης για χαλάρωση της σύζευξης της κλάσης Room µε την κλάση Game [better2] Χρήση HashMap για αποθήκευση εξόδων [better3] Αφαίρεση παρόµοιων τµηµάτων κώδικα Πρόβλεψη πιθανών αλλαγών

Παραδείγµατα (2/4) 13 Καθοδήγηση από Αρµοδιότητες 1 Η µέθοδος printlocationinfo της Game ασχολείται µε τις εξόδους, οι οποίες όµως ανήκουν στην κλάση Room Γι' αυτό και ξεχάσαµε να την ενηµερώσουµε Παράδειγµα έµµεσης σύζευξης Κατασκευή µεθόδου String getexitstring() στη Room και αντίστοιχη αλλαγή της Game [better4] Κατασκευή µεθόδου String getlongdescription() στη Room και αντίστοιχη αλλαγή της Game [better5] Καθοδήγηση από Αρµοδιότητες 2 Προσθήκη διαταγής look που εµφανίζει την περιγραφή του δωµατίου [better6] Τι θα συµβεί αν δώσουµε τη διαταγή help; [better7]

Παραδείγµατα (3/4) 14 Πρόβλεψη πιθανών αλλαγών Ο τρόπος αλληλεπίδραση µε το χρήστη (κείµενο, GUI) να είναι αποκλειστική ευθύνη της Game Επιστροφή συµβολοσειράς µε τις διαθέσιµες εντολές και εµφάνιση τους από τη Game [better8] Συνοχή µεθόδων είτε τις µεθόδους play, printwelcome και processcommand της κλάσης Game Αναγνωσιµότητα είτε τη µέθοδο getlongdescription της κλάσης Room Επαναχρησιµοποίηση

Παραδείγµατα (4/4) 15 Συνοχή κλάσεων Επέκταση του παιχνιδιού περιπέτειας ώστε σε κάθε δωµάτιο να υπάρχει ένα αντικείµενο (περιγραφή και βάρος αντικειµένου) α) Προσθήκη αντίστοιχων ιδιοτήτων στην κλάση Room Κακή συνοχή, αφού πλέον η Room αφορά και αντικείµενα Προβλήµατα σε επεκτάσεις όπως µεταφορά αντικειµένων από δωµάτιο σε δωµάτιο, πολλαπλά αντικείµενα σε κάθε δωµάτιο β) ηµιουργία νέας κλάσης Item [better9]

Αναπαραγοντοθέτηση 16 Αναπαραγοντοθέτηση (refactoring) Αναδιάρθρωση µιας υπάρχουσας σχεδίασης για τη διατήρηση µιας καλής σχεδίασης κλάσεων όταν η εφαρµογή τροποποιείται η επεκτείνεται Η επέκταση γίνεται ιδανικά σε δύο βήµατα Αναπαραγοντοθέτηση του κώδικα µε στόχο την προετοιµασία των αλλαγών Αυξάνεται η ποιότητα του κώδικα εν αλλάζουµε ή επεκτείνουµε τη λειτουργικότητα Βελτίωση της λειτουργικότητας της εφαρµογής

Παράδειγµα 17 Επέκταση της εφαρµογής Ο παίκτης µπορεί να σηκώνει και να αφήνει µικροαντικείµενα στο τρέχον δωµάτιο Ο παίκτης µπορεί να κουβαλάει οποιονδήποτε αριθµό µικροαντικειµένων, αλλά µόνο µέχρι ένα µέγιστο βάρος Ορισµένα µικροαντικείµενα δεν µπορούν να µετακινηθούν Πως και που θα υλοποιηθούν όλα αυτά; Τι πεδία χρειάζονται και σε ποιες κλάσεις θα προστεθούν; Τι αλλαγές χρειάζονται στην εφαρµογή; [good]