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

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

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

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

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

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

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

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

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

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

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

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

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

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

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

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

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

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

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

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

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

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

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

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

Γενικά (για τις γραπτές εξετάσεις)

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

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

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

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

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

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

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

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

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

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

Εφαρμογή Μεθοδολογίας ICONIX

Εισαγωγή στον Προγ/μό Η/Υ

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

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

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

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

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

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

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

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

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

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

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

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

Σύνθεση και Κληρονομικότητα

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

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

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

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

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships)

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

Σύνθεση και Κληρονομικότητα

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

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

Certified Java Programmer (CJP)

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

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

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

Υποδείγματα Ανάπτυξης

(Απλή) Κληρονομικότητα

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

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

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

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

Κατάλογος εικόνων Πρόλογος της τρίτης έκδοσης Πρόλογος της πρώτης έκδοσης... 23

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Διάγραμμα Οντοτήτων - Συσχετίσεων

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

Wrapper Classes, Abstract Classes and Interfaces

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

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

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

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

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

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

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

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

Προγράμματα με δομή Κληρονομικότητας

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Transcript:

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

περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές

αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν αντικείμενα και βασίζονται στις υποκλάσεις μέσω της γενίκευσης για τη δημιουργία αντικειμένων. Η συνήθης χρήση των αφηρημένων κλάσεων είναι η παροχή της διεπαφής τους στις υποκλάσεις τους. Οι λειτουργίες μπορεί να είναι και αυτές αφηρημένες (abstract), δηλαδή λειτουργίες χωρίς υλοποίηση, ενώ κάποιες άλλες συγκεκριμένες (concrete). Η υλοποίηση των αφηρημένων λειτουργιών παρέχεται από τις υποκλάσεις της αφηρημένης κλάσης.

αφηρημένες κλάσεις

ιδιότητες Οι ιδιότητες μίας κλάσης αφορούν τα δεδομένα που διατηρούν τα αντικείμενά της. Τα δύο νέα στοιχεία των ιδιοτήτων, που είναι χρήσιμα στη σχεδίαση, είναι η ορατότητα (visibility) και η πολλαπλότητα (multiplicity). Έτσι, η πλήρης περιγραφή μίας ιδιότητας με τη UML είναι: ορατότητα / όνομα: τύπος [πολλαπλότητα] = αρχική τιμή {συμβολοσειρά ιδιοτήτων

ορατότητα ιδιοτήτων Η ορατότητα (visibility) συμβολίζεται ως εξής: Με το σύμβολο + που συμβολίζει τη δημόσια (public) ορατότητα. Οι ιδιότητες με δημόσια ορατότητα είναι προσβάσιμες σε όσες κλάσεις έχουν πρόσβαση στην κλάση που τις περιέχει. Με το σύμβολο που συμβολίζει ορατότητα πακέτου. Οι ιδιότητες με ορατότητα πακέτου είναι προσβάσιμες στις κλάσεις που είναι στο ίδιο πακέτο με τη συγκεκριμένη κλάση. Με το σύμβολο # που συμβολίζει την προστατευμένη (protected) ορατότητα. Οι ιδιότητες με προστατευμένη ορατότητα είναι προσβάσιμες από τις υποκλάσεις και από την κλάση που τις περιέχει. Με το σύμβολο που συμβολίζει την ιδιωτική (private) ορατότητα. Οι ιδιότητες με ιδιωτική ορατότητα είναι προσβάσιμες μόνο από την κλάση που τις περιέχει.

τύποι ιδιοτήτων Ο τύπος μίας ιδιότητας μπορεί να είναι: κάποιος από τους πρωταρχικούς τύπους δεδομένων της UML, κάποιος τύπος της γλώσσας προγραμματισμού ή κάποια άλλη κλάση. Μπορεί επίσης να είναι μία διεπαφή μία απαρίθμηση (enumeration).

ιδιότητες Η συμβολοσειρά ιδιοτήτων ρυθμίζει πρόσθετες ιδιότητες της ιδιότητας. Για παράδειγμα, η ένδειξη readonly δείχνει ότι η ιδιότητα είναι μόνο για ανάγνωση και όχι για τροποποίηση. Η πολλαπλότητα αναφέρεται στον αριθμό των αντικειμένων της ιδιότητας. Συνήθως οι περισσότερες ιδιότητες παίρνουν μία τιμή. Χρησιμοποιούμε την πολλαπλότητα, εάν θέλουμε να δείξουμε ότι η ιδιότητα λαμβάνει περισσότερες από μία τιμές. Εκτός από τις απλές ιδιότητες που αφορούν τα δεδομένα των αντικειμένων μίας κλάσης, με τη UML μπορούμε να ορίσουμε και στατικές ιδιότητες (static attributes), οι οποίες ανήκουν στην κλάση και όχι στα αντικείμενά της. Οι στατικές ιδιότητες παραπέμπουν στα στατικά πεδία της Java. Ο συμβολισμός των στατικών ιδιοτήτων είναι όμοιος με τις απλές ιδιότητες με τη διαφορά ότι η σύνταξή τους υπογραμμίζεται.

παράδειγμα: ιδιότητες

λειτουργίες Η σύνταξη μίας λειτουργίας με τη UML είναι: ορατότητα όνομα ( κατάλογος-παραμέτρων ): τύπος-επιστροφής {συμβολοσειρά ιδιοτήτων} Η ορατότητα των λειτουργιών συμβολίζεται όμοια με την ορατότητα των ιδιοτήτων. Μία συχνή σύμβαση που ακολουθούν οι μηχανικοί λογισμικού είναι ότι, όταν δεν ορίζεται η ορατότητα της λειτουργίας, τότε θεωρείται δημόσια. Ο κατάλογος παραμέτρων είναι οι παράμετροι της λειτουργίας οι οποίες χωρίζονται με κόμμα. Κάθε παράμετρος έχει την ακόλουθη σύνταξη: κατεύθυνση όνομα: τύπος [πολλαπλότητα] = προκαθορισμένη-τιμή {συμβολοσειρά ιδιοτήτων}

λειτουργίες Η κατεύθυνση δηλώνει αν μία παράμετρος είναι παράμετρος εισόδου, παράμετρος εξόδου ή και τα δύο, και παίρνει τις τιμές in, out και inout, αντίστοιχα. Όταν η κατεύθυνση δε δηλώνεται, τότε η παράμετρος θεωρείται παράμετρος εισόδου. Ο τύπος της παραμέτρου μπορεί να είναι κάποιος από τους πρωταρχικούς τύπους δεδομένων ή κάποια κλάση. Η πολλαπλότητα αφορά στον αριθμό των στιγμιοτύπων για κάθε παράμετρο και συμβολίζεται όμοια με την πολλαπλότητα των ιδιοτήτων. Η προκαθορισμένη τιμή της παραμέτρου είναι η τιμή που παίρνει η παράμετρος, όταν η τιμή δεν παρέχεται κατά την κλήση της λειτουργίας. Η συμβολοσειρά ιδιοτήτων προσδίδει στη λειτουργία πρόσθετες ιδιότητες. Μία πιθανή ιδιότητα είναι η ιδιότητα abstract που δηλώνει ότι η λειτουργία είναι αφηρημένη. Μία άλλη είναι η query που δηλώνει ότι η λειτουργία δε μεταβάλλει την κατάσταση των αντικειμένων της κλάσης.

παράδειγμα: λειτουργίες

απλοί τύποι Προτιμούμε τη χρήση των κλάσεων για δεδομένα με κάποια σημασία, έναντι των πρωταρχικών τύπων όπως οι συμβολοσειρές. Το πλεονέκτημα των κλάσεων είναι ότι παρέχουν ένα επίπεδο αφαίρεσης έναντι των πρωταρχικών τύπων. Είναι καλό να διαχωρίζονται τα αντικείμενα τιμών στα διαγράμματα κλάσεων από τα υπόλοιπα αντικείμενα της UML. Η UML δεν παρέχει κάποιο τρόπο να διαχωριστούν τα αντικείμενα τιμές. Η χρήση της λέξης κλειδί «value» στα διαγράμματα κλάσεων είναι ένας τρόπος να διαχωριστούν τα αντικείμενα τιμές, επειδή έχει επίπτωση στην υλοποίησή τους. Με τη χρήση της λέξης κλειδί «value» ο σχεδιαστής επικοινωνεί στους προγραμματιστές την πρόθεσή του για χρήση απλών τύπων

απλοί τύποι Με την εμφάνιση αντικειμένων τιμών σε ένα διάγραμμα κλάσεων επικοινωνούμε στον προγραμματιστή ότι πρέπει να λάβει υπόψη του τρία θέματα που είναι: Η ισότητα των αντικειμένων βασίζεται στις τιμές των ιδιοτήτων τους και όχι στην ταυτότητά τους. Οι κλάσεις των αντικειμένων τιμών είναι αμετάβλητες (immutable). Η κατάσταση των αντικειμένων των αμετάβλητων κλάσεων αρχικοποιείται μέσω των κατασκευαστών (constructors) και δεν αλλάζει σε όλο τον κύκλο ζωής των αντικειμένων. (Σε περίπτωση που δεν επιθυμούμε τα αντικείμενα τιμές να προέρχονται από αμετάβλητες κλάσεις, θα πρέπει να είμαστε περισσότερο προσεκτικοί, ιδιαίτερα στον τρόπο που υλοποιούμε τις συσχετίσεις) Εάν υπάρχουν πράξεις που θα πρέπει να μεταβάλλουν την κατάσταση των αντικειμένων, τότε και πάλι δεν αλλάζει η κατάσταση του αντικειμένου αλλά επιστρέφονται νέα αντικείμενα.

συσχετίσεις Γνωρίζουμε ήδη τα βασικά στοιχεία των άκρων μίας συσχέτισης που είναι το όνομα του άκρου και η πολλαπλότητα. Ένα τρίτο σημαντικό στοιχείο που μας απασχολεί περισσότερο στη σχεδίαση του λογισμικού είναι η πλοηγησιμότητα (navigability). Η πλοηγησιμότητα αναπαριστά το κατά πόσο τα αντικείμενα που συμμετέχουν στα άκρα της συσχέτισης γνωρίζουν την ύπαρξη των αντικειμένων στο άλλο άκρο

πλοηγησιμότητα συσχετίσεων

ισοδυναμία συσχετίσεων - ιδιοτήτων

συμβολισμοί πλοηγησιμότητας

συσχετίσεις Στη μοντελοποίηση πεδίου η πλοηγησιμότητα δε μας απασχολεί ιδιαίτερα και μπορεί να θεωρηθεί ότι είναι αμφίδρομη. Στη σχεδίαση όμως οι αμφίδρομες συσχετίσεις ορίζονται μόνο όταν αυτές είναι αναγκαίες. Η ανάγκη για την πλοηγησιμότητα διαπιστώνεται από την εξέταση της φοράς των μηνυμάτων στα διαγράμματα επικοινωνίας και ακολουθίας, όταν μελετούμε τη συμπεριφορά των αντικειμένων. Αν ένα αντικείμενο της κλάσης A πρέπει να στείλει μήνυμα σε αντικείμενο της κλάσης B και υπάρχει συσχέτιση μεταξύ των κλάσεων, τότε θα πρέπει η συσχέτιση να είναι πλοηγήσιμη από την Α προς τη Β. Ο ορισμός της πλοηγησιμότητας υποδηλώνει και την εξάρτηση ή τη σύζευξη μεταξύ των κλάσεων. Όταν τα αντικείμενα μίας κλάσης δε χρειάζεται να γνωρίζουν τα αντικείμενα στο άκρο της συσχέτισης, δεν υπάρχει λόγος να εισάγουμε κάποιου είδους εξάρτηση.

πλοηγησιμότητα στο σύστημα δανεισμού

εξάρτηση Η εξάρτηση (dependency) μεταξύ δύο στοιχείων της UML είναι μία γενική σχέση ενός στοιχείου πελάτη, το οποίο εξαρτάται με κάποιο τρόπο με άλλο στοιχείο προμηθευτή. Η εξάρτηση σημαίνει ότι κάποια αλλαγή στον προμηθευτή επηρεάζει με κάποιο τρόπο τον πελάτη. Έχουμε ήδη συναντήσει ισχυρές μορφές εξάρτησης μεταξύ κλάσεων που είναι η συσχέτιση και η γενίκευση. Δεν είναι όμως οι μόνες περιπτώσεις από τις οποίες προκύπτει μία σχέση εξάρτησης μεταξύ δύο κλάσεων. Άλλες περιπτώσεις εξάρτησης είναι όταν ένα αντικείμενο της κλάσης πελάτη αποστέλλει μήνυμα σε αντικείμενο της κλάσης προμηθευτή ή όταν κάποια λειτουργία της κλάσης πελάτη έχει μία παράμετρο με τύπο την κλάση προμηθευτή. Με όρους κώδικα: η διαγραφή της κλάσης B από τον κώδικα προκαλεί σφάλμα μεταγλώττισης στην κλάση Α.

διεπαφές Οι διεπαφές (interfaces) είναι μηχανισμοί των σύγχρονων γλωσσών προγραμματισμού όπως η Java για την επίτευξη πολυμορφισμού. Μία διεπαφή μπορεί να θεωρηθεί ως μία κλάση χωρίς πεδία όπου όλες οι πράξεις είναι αφηρημένες. Οι διεπαφές της Java μοιάζουν με τις αφηρημένες κλάσεις, αλλά παρουσιάζουν ορισμένες σημαντικές διαφορές που είναι: Οι αφηρημένες κλάσεις μπορεί να έχουν πεδία, ενώ οι διεπαφές όχι.

διεπαφές Οι αφηρημένες κλάσεις μπορεί να έχουν αφηρημένες λειτουργίες, δηλαδή χωρίς υλοποίηση, αλλά μπορεί να έχουν και συγκεκριμένες λειτουργίες που κληρονομούνται από τις υποκλάσεις. Οι διεπαφές δηλώνουν τις υπογραφές των λειτουργιών, χωρίς να παρέχουν καμία υλοποίηση. Οι αφηρημένες κλάσεις δηλώνουν κατασκευαστές, ενώ οι διεπαφές όχι. Η ορατότητα μίας διεπαφής για τη Java μπορεί να είναι μόνο δημόσια. Οι λειτουργίες μίας αφηρημένης κλάσης μπορεί να έχουν ορατότητα προστατευμένη ή ιδιωτική, ενώ οι λειτουργίες που δηλώνει μία διεπαφή έχουν δημόσια ορατότητα

διεπαφές Η υποκλάση μίας αφηρημένης κλάσης κληρονομεί τη δημόσια διεπαφή και την υλοποίηση που ίσως η αφηρημένη κλάση παρέχει, έχοντας ταυτόχρονα τη δυνατότητα επαναορισμού (overriding) των μεθόδων της. Μία κλάση μπορεί να υλοποιεί (και δεν κληρονομεί) μία ή περισσότερες διεπαφές. Η κλάση θα πρέπει να παρέχει την υλοποίηση για τις μεθόδους που δηλώνει μία διεπαφή, να παρέχει δηλαδή την υλοποίηση της διεπαφής.

διεπαφές Επομένως, μία διεπαφή έχει περισσότερο το χαρακτήρα μίας δήλωσης. Δηλώνει υπογραφές (signatures) μεθόδων στις οποίες μία κλάση θα πρέπει να συμμορφώνεται σε περίπτωση που υλοποιεί τη διεπαφή. Οι διεπαφές είναι και το βασικό αντίδοτο για τις γλώσσες προγραμματισμού που δεν υποστηρίζουν την πολλαπλή κληρονομικότητα. Μία κλάση μπορεί να είναι υποκλάση μίας και μόνο κλάσης, ενώ μπορεί να υλοποιεί πολλές διεπαφές.

διεπαφές στη UML

παροχή και χρήση διεπαφής

γενίκευση και υλοποίηση διεπαφών

διεπαφές και αφηρημένες κλάσεις