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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

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

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

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

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Εισαγωγή στον Προγραμματισμό με C++

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

Εισαγωγή στον Προγραμματισμό με C++

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

Εισαγωγή στον Προγραμματισμό με C++

Πληροφορική ΙΙ Θεματική Ενότητα 9

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

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

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

Διδακτική της Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

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

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

Αυτοματοποιημένη χαρτογραφία

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

Mεταβλητές (variables) και Σταθερές (constants)

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

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

Υπολογιστικά Συστήματα

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

Μαθησιακές δραστηριότητες με υπολογιστή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Σχεδίαση Κλάσεων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Σχεδίαση Κλάσεων

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τα παραδείγματα κώδικα που χρησιμοποιούνται σε κάποιες από τις ακόλουθες διαφάνειες μπορούν να βρεθούν στον παρακάτω σύνδεσμο: http://users.auth.gr/greg/oop.zip

Εισαγωγή Εμπορικό λογισμικό. Διαρκής συντήρηση (διόρθωση σφαλμάτων) και επέκταση (προσθήκη λειτουργιών). change or die. Καλοσχεδιασμένο λογισμικό. O κώδικας πρέπει να διευκολύνει τις αλλαγές. Βραχυπρόθεσμα αυτό απαιτεί προσπάθεια, όμως μακροπρόθεσμα μας σώζει από πολύ κόπο. Δεν αφορά στην ορθή λειτουργία ή την τεκμηρίωση.

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

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

Ένα Παιχνίδι Περιπέτειας Διάγραμμα κλάσεων. Game Parser Room Command CommandWords bad

Πανομοιότυπα Τμήματα Κώδικα Ένδειξη κακής σχεδίασης. Μια αλλαγή θα πρέπει να γίνει σε πολλά σημεία, κάτι που μπορεί να διαφύγει της προσοχής μας. Σύμπτωμα χαμηλής συνοχής. Ξεχωριστή μέθοδος για το τμήμα κώδικα που επαναλαμβάνεται (μεγαλύτερη συνοχή). Παράδειγμα. Αφαιρέστε τις δύο εμφανίσεις πανομοιότυπου τμήματος κώδικα από την κλάση Game. Στις μεθόδους printwelcome και goroom. better

Δύο Κανόνες Καλής Σχεδίασης Ενθυλάκωση / απόκρυψη πληροφορίας. Η ενθυλάκωση χαλαρώνει τη σύζευξη. Σχεδίαση καθοδηγούμενη από αρμοδιότητες. Κάθε κλάση πρέπει να είναι αρμόδια για τη διαχείριση των δικών της δεδομένων. Χαλάρωση σύζευξης, αύξηση συνοχής.

Παράδειγμα (1/2) Παράδειγμα. Επεκτείνετε το παιχνίδι με δύο επιπλέον εξόδους από ένα δωμάτιο (πάνω και κάτω). Ενθυλάκωση. Χρήση ενθυλάκωσης για χαλάρωση της σύζευξης της κλάσης Room με την κλάση Game. Πρόβλεψη πιθανών αλλαγών. Χρήση HashMap για αποθήκευση εξόδων. better2, better3

Παράδειγμα (2/2) Σχεδίαση καθοδηγούμενη από αρμοδιότητες. Η printlocationinfo της Game ασχολείται με τις εξόδους, οι οποίες όμως ανήκουν στην Room. Κατασκευή μεθόδου String getexitstring() στη Room και αντίστοιχη αλλαγή της Game. Κατασκευή μεθόδου String getlongdescription() στη Room και αντίστοιχη αλλαγή της Game. better4, better5

Έμμεση σύζευξη Έμμεση σύζευξη. Μια κλάση βασίζεται σε εσωτερικές πληροφορίες μιας άλλης κλάσης χωρίς αυτό να είναι προφανές. Παράδειγμα. Προσθήκη διαταγής look που εμφανίζει την περιγραφή του δωματίου. Τι θα συμβεί αν δώσουμε τη διαταγή help; better6, better7

Αλλαγές στον Κώδικα Τοπικότητα και πρόβλεψη αλλαγών. Η πραγματοποίηση αλλαγών σε μια κλάση πρέπει να έχει ελάχιστες συνέπειες σε άλλες. Ο καλός προγραμματιστής πρέπει να προβλέπει τις αλλαγές και να προνοεί για τη διευκόλυνση τους. Παράδειγμα. Ο τρόπος αλληλεπίδραση με το χρήστη (κείμενο, GUI) να είναι αποκλειστική ευθύνη της Game. Επιστροφή συμβολοσειράς με τις διαθέσιμες εντολές και εμφάνιση τους από τη Game. better8

Τα Oφέλη της Συνοχής (1/2) Βελτιώνει την αναγνωσιμότητα του κώδικα. Π.χ. μέθοδος printwelcome της Game. Αυξάνει την επαναχρησιμοποίηση του κώδικα. Π.χ. η μέθοδος getlongdescription της Room. χρησιμοποιείται σε τρεις μεθόδους της Game. Παράδειγμα. Επέκταση του παιχνιδιού ώστε κάθε δωμάτιο να έχει ένα αντικείμενο (περιγραφή και βάρος).

Τα Oφέλη της Συνοχής (2/2) Προσθήκη ιδιοτήτων στην κλάση Room. Κακή συνοχή, αφού πλέον η Room αφορά και αντικείμενα. Προβλήματα σε επεκτάσεις όπως μεταφορά αντικειμένων από δωμάτιο σε δωμάτιο, πολλαπλά αντικείμενα σε κάθε δωμάτιο. Δημιουργία νέας κλάσης Item. better9

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

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

Απαριθμητοί Τύποι Απαριθμητός τύπος (enumerated type). Ορίζει ένα σύνολο από σταθερές. Η δήλωση του γίνεται με τη λέξη κλειδί enum Μεταβλητές απαριθμητών τύπων. Μπορούν να περιέχουν ως τιμή μία εκ των προκαθορισμένων σταθερών. Πριν τη σταθερά πρέπει να προηγείται ο τύπος και ο τελεστής τελεία.

Παράδειγμα public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } ------------------------------------------- public class Main { } public static void main(string[] args) { Day d = new Day.MONDAY; } enums.day.java, enums.testday.java

Έλεγχος Τιμής με If και Switch Έλεγχος τιμής με if if (day == Day.FRIDAY) System.out.println("Hurray!"); Έλεγχος τιμής με switch switch (day) { case FRIDAY: System.out.println("Hurray!"); break; case MONDAY: System.out.println("Yuck!"); break; }

Απαριθμητός Τύπος ως Κλάση Στη Java ο απαριθμητός τύπος ορίζει κλάση. Οι σταθερές είναι στην πραγματικότητα σταθερά (final) αντικείμενα αυτής της κλάσης. Μπορούμε να ορίσουμε πεδία και μεθόδους. Διατίθενται κάποιες έτοιμες μέθοδοι. Υπάρχουν όμως κάποιες διαφορές. Δεν μπορούν να οριστούν νέα αντικείμενα με new. Δεν επιτρέπονται public κατασκευαστές, όμως default κατασκευαστές μπορούν να χρησιμοποιηθούν κατά τον ορισμό σταθερών.

Έτοιμες Μέθοδοι static enum-type[] values() Επιστρέφει πίνακα με όλες τις σταθερές. static enum-type valueof(string s) Επιστρέφει τη σταθερά που αντιστοιχεί στη συμβολοσειρά που δίνεται ως παράμετρος. String tostring() Επιστρέφει την σταθερά ως συμβολοσειρά. int ordinal() Επιστρέφει ακέραιο με τη σειρά της σταθεράς. int compareto(enum-type e) Σύγκριση με άλλη σταθερά με βάση τη σειρά.

Παράδειγμα 1 Day all[] = Day.values(); for (Day day : all) System.out.println(day.toString() + " " + day.ordinal()); Scanner scanner = new Scanner(System.in); System.out.print("Δώσε μια ημέρα: "); Day day1 = Day.valueOf(scanner.nextLine()); System.out.print("Δώσε μια ακόμη ημέρα: "); Day day2 = Day.valueOf(scanner.nextLine()); if (day1.compareto(day2) < 0) { System.out.printf("H %s προηγείται της %s%n", day1.tostring(), day2.tostring()); } enums.testday.java

Παράδειγμα 2 (1/2) public enum Planet { VENUS (4.869e+24, 6.0518e6), EARTH (5.976e+24, 6.37814e6); private final double mass; // kilograms private final double radius; // meters Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double surfacegravity() { return 6.67300E-11 * mass / (radius * radius); } enums.planet.java...

Παράδειγμα 2 (2/2) public double surfaceweight(double othermass) { return othermass * surfacegravity(); } public static void main(string[] args) { double g = Planet.EARTH.surfaceGravity(); double m = 78 / g; for (Planet p : Planet.values()) System.out.printf("on %s weight is %f%n", p.tostring(), p.surfaceweight(m)); } } enums.planet.java

Παράδειγμα Αναπαραγοντοθέτησης Ανεξαρτησία από τη γλώσσα. Χρήση enumerations αντί για φυσική γλώσσα για αναπαράσταση των εντολών. best

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, Εαρινό Εξάμηνο 2013-2014