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

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

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

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιεπαφές και Εσωτερικές κλάσεις Interfaces and Inner Classes. ιεπαφές - Interfaces

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

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Βασικά της γλώσσας JAVA

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

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

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

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

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

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

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

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

ΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

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

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

Βασικά Στοιχεία της Java

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

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

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΑΤΙΣΜΟΣ Α (C++) ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΤΩΝ Δρ. Νικόλαος Ζ. Ζάχαρης

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

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

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

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Βασικά Στοιχεία της Java

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

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

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

Week. 6: Java Collections

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

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

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

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

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)


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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

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

Τύποι δεδομένων, τελεστές, μεταβλητές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Παράδειγμα χρήσης κληρονομικότητας

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

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

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

Transcript:

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

Abstract κλάσεις Πολλές φορές είναι χρήσιμο να έχουμε κλάσεις με μερική μόνο υλοποίηση Οι κλάσεις αυτές ορίζουν συνήθως κάποιες μεθόδους με υλοποίηση και κάποιες άλλες μεθόδους στις οποίες οι υλοποίηση πρέπει να δοθεί από άλλες (υπο)κλάσεις Τέτοιες κλάσεις λέγονται abstract Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 2 / 24

Παράδειγμα a b s t r a c t p u b l i c c l a s s Shape { a b s t r a c t p u b l i c v o i d Draw ( ) ; p u b l i c c l a s s C i r c l e e x t e n d s Shape { p u b l i c v o i d Draw ( ) {... Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 3 / 24

Ιδιαιτερότητες των abstract κλάσεων Δε μπορούν να αρχικοποιηθούν Αν υπάρχει έστω και μία abstract μέθοδος, η κλάση χαρακτηρίζεται abstract Αν μια κλάση κληρονομεί από μια abstract κλάση είτε πρέπει να υλοποιήσει τις abstract μεθόδους είτε πρέπει να οριστεί και αυτή ως abstract Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 4 / 24

Interfaces Προσφέρουν ένα τρόπο να περιγράφουν τι πρέπει να κάνει μια κλάση, χωρίς όμως να ορίζουν το πώς Δεν είναι κλάσεις, αλλά ένα σύνολο από απαιτήσεις που πρέπει να ικανοποιούν οι κλάσεις p u b l i c i n t e r f a c e C o m p a r a b l e { i n t compareto ( O b j e c t o t h e r O b j e c t ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 5 / 24

Δήλωση interface Αποτελείται από τη λέξη interface, το όνομα και τα μέλη Παρόμοια με τις κλάσεις μπορούν να έχουν Σταθερές (constant fields) μεθόδους εσωτερικές κλάσεις και άλλα interfaces itemize Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 6 / 24

Σταθερές Ενα interface μπορεί να έχει public, static και final πεδία (συνήθως παραλείπονται) Ενα interface δε μπορεί να έχει άλλα πεδία. Τα πεδία πρέπει να είναι σε κεφαλαία i n t e r f a c e v e r b o s e { i n t SILENT = 0 ; i n t TERSE = 1 ; v o i d s e t V e r b o s i t y ( i n t l e v e l ) ; i n t g e t V e r b o s i t y ( ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 7 / 24

Μέθοδοι Είναι εξ' ορισμού abstract και public Κάθε δήλωση μεθόδου αποτελείται από το όνομα της μεθόδου, τις παραμέτρους και τον επιστρεφόμενο τύπο Οι μέθοδοι δε μπορεί να είναι final και static Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 8 / 24

Interface modifiers Ένα interface μπορεί να είναι public ή package (το default) Όλα τα interfaces είναι abstract Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 9 / 24

Υλοποίηση ενός interface Μια κλάση μπορεί να υλοποιεί ένα ή περισσότερα interfaces Αυτό σημαίνει ότι πρέπει να παρέχει υλοποιήσεις για όλες τις μεθόδους που ορίζει το interface Μια κλάση δηλώνει ότι υλοποιεί ένα interface χρησιμοποιώντας τη λέξη κλειδί implements Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 10 / 24

Παράδειγμα c l a s s Employee i m p l e m e n t s C o m p a r a b l e {... p u b l i c i n t compareto ( O b j e c t o t h e r O b j e c t ) { Employee o t h e r = ( Employee ) o t h e r O b j e c t ; i f ( s a l a r y < o t h e r. s a l a r y ) r e t u r n 1; i f ( s a l a r y > o t h e r. s a l a r y ) r e t u r n 1 ; r e t u r n 0 ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 11 / 24

«Δημιουργία» interfaces Τα intefaces δεν είναι κλάσεις Δε μπορείτε να κάνετε αυτό: Comparable n = new Comparable(); Μπορείτε όμως να κάνετε αυτό: Comparable n = new Employee(); Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 12 / 24

Επέκταση intefrace Τα interfaces υποστηρίζουν την πολλαπλή κληρονομικότητα Ένα interface μπορεί να επεκτείνει πάνω από ένα interface p u b l i c i n t e r f a c e S e r i a l i z a b l e R u n n a b l e e x t e n d s j a v a. i o. S e r i a l i z a b l e, R u n n a b l e {... Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 13 / 24

Λεπτομέρειες Οταν ένα interface επεκτείνει δύο interfaces που έχουν τα ίδια πεδία: i n t e r f a c e A { i n t v a l = 1 ; i n t e r f a c e B { i n t v a l = 2 ; i n t e r f a c e C e x t e n d s A, B { S y s t e m. o u t. p r i n t l n ( A. v a l = + A. v a l ) ; S y s t e m. o u t. p r i n t l n ( B. v a l = + B. v a l ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 14 / 24

Λεπτομέρεις (συνχ) Όταν ένα interface επεκτείνει ένα interface και έχει το ίδιο πεδίο i n t e r f a c e X { i n t v a l = 1 ; i n t e r f a c e Y e x t e n d s X { i n t v a l = 2 ; i n t sum = v a l + X. v a l ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 15 / 24

Λεπτομέρειες (συνχ) Όταν μια κλάση υλοποιεί ένα interface που έχει επεκτείνει ένα άλλο c l a s s Z i m p l e m e n t s Y {... S y s t e m. o u t. p r i n t l n ( Z. v a l : + v a l ) ; / / Z. v a l = 2 / / o u t s i d e t h e c l a s s S y s t e m. o u t. p r i n t l n ( Z. v a l : + Z. v a l ) ; / / Z. v a l = 2 Z v = new Z ( ) ; S y s t e m. o u t. p r i n t ( v. v a l = + v. v a l +, ( ( Y ) v ). v a l = + ( ( Y ) v ). v a l / / 2 +, ( ( X ) v ). v a l = + ( ( X ) v ). v a l ) ; / / 1 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 16 / 24

Marker interfaces Ένα marker (tagging) interface δεν έχει ούτε μεθόδους ούτε σταθερές. Ο μόνος του σκοπός είναι να επιτρέψει τη χρήση του τελεστή instance of κατά την εκτέλεση του προγράμματος/ Το πιο γνωστό παράδειγμα ενός τέτοιου interface είναι το Cloneable Αποφύγετε τη χρήση marker interfaces Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 17 / 24

Διαφορά Interface και Abstract κλάσεων Μια κλάση μπορεί να κληρονομήσει μόνο μία abstract αλλά μπορεί να υλοποιήσει πολλά interfaces Mia abstract κλάση μπορεί να έχει μερική υλοποίηση Τα interfaces έχουν μόνο public σταθερές and public μεθόδους Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 18 / 24

Απαριθμήσεις (Enumerations) Ορισμένες φορές μια μεταβλητή μπορεί να πάρει μόνο ορισμένες τιμές. Για παράδειγμα η μεταβλητή dayofweek μπορεί να πάρει μόνο τις τιμές: Δευτέρα, Τρίτη, Τετάρτη κτλ Μια τέτοια μεταβλητή δεν ανήκει σε κανέναν από τους συνηθισμένους τύπους: int, boolean κτλ Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 19 / 24

Enums Στη Java είναι δυνατόν να ορίσεις τέτοιους τύπους ως enum Ένας τύπος enum είναι ένας νέος τύπος στον οποίο ορίζουμε εμείς ποιές είναι οι πιθανές τιμές του enum Day { MONDAY, TUESDAY, WEDNESDAY. THURSDAY, FRIDAY, SATURDAY, SUNDAY Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 20 / 24

Enum και Class Ένα enum είναι ουσιαστικά ένας νέος τύπος κλάσης Μπορούν να οριστούν ως εσωτερικές ή εξωτερικές κλάσεις Μπορούν να οριστούν ως public, static ή final Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 21 / 24

Περισσότερα Enums Ένα enum υλοποιεί το interface Comparable και μπορεί να ταξινομηθεί Ένα enum επαναορίζει τη μέθοδο tostring() Ένα enum προσφέρει τη μέθοδο valueof() Day day = Day. MONDAY ; S y s t e m. o u t. p r i n t l n ( day ) ; / / p r i n t s MONDAY day = Day. v a l u e O f ( " SUNDAY " ) ; S y s t e m. o u t. p r i n t l n ( day ) ; / / p r i n t s SUNDAY Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 22 / 24

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

Παράδειγμα enum p u b l i c enum C o i n { PENNY ( 1 ), NICKEL ( 5 ), DIME ( 1 0 ), QUARTER ( 2 5 ) ; p r i v a t e f i n a l i n t v a l u e ; C o i n ( i n t v a l u e ) { t h i s. v a l u e = v a l u e ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 24 / 24