ΣΕΜΙΝΑΡΙΟ JAVA 5 η ιάλεξη
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓ/ΣΜΟΣ & ΣΦΑΛΜΑΤΑ Εnumerators Κληρονοµικότητα Exceptions try / catch / finally Interfaces
ENUMERATORS ( ENUM ) Τα enum είναι ένα εργαλείο για να οριστεί ένα σύνολο τιµών ως τύ ος δεδοµένων. Είναι ουσιαστικά µια ειδική ερί τωση κλάσης. Για αράδειγµα εάν θέλαµε να χαρακτηρίσουµε την κατάσταση ενός αρχείου θα µ ορούσαµε να ούµε ότι αίρνει µία τιµή α ό τις: Ανύ αρκτο Ανοιχτό Κλειστό ιαγραµµένο Αυτό εκφράζεται στην Java µε τη χρήση των enums, µέσα σε ξεχωριστό αρχείο ό ως οι κλάσεις ως εξής: public enum FileStatus { Inexistent, Open, Closed, Deleted; }
ENUMERATORS ( ENUM ) Στη συνέχεια θα µ ορούσε να χρησιµο οιηθεί ως τύ ος δεδοµένων µε ένα κώδικα ό ως ο ακόλουθος: FileStatus status; status = FileStatus.Open; if (status == FileStatus.Closed)...κλπ Η µέθοδος αυτή υ ερτερεί α ό τις τεχνικές ου χρησιµο οιούνταν αλιότερα (.χ. Αντιστοίχιση ενός αριθµού σε µία κατάσταση) στα εξής σηµεία: Είναι ιο ξεκάθαρο το νόηµα ου έχει το σύνολο τιµών Α οφεύγονται τα «αριθµητικά τεχνάσµατα» ου µ ερδεύουν τον κώδικα και οδηγούν σε σφάλµατα Μετατρέ ονται µε εντολές του συστήµατος α ό και ρος κείµενο Στην ολοκληρωµένη τους µορφή, κάθε στοιχείο του συνόλου µ ορεί να έχει δικά του χαρακτηριστικά και µεθόδους ό ως ένα αντικείµενο, ου δίνει µια άλλη διάσταση στη χρήση τους Χρησιµο οιείται µε ξεκάθαρο τρό ο στην switch/case εντολή και µάλιστα είναι µία α ό τις λίγες ερι τώσεις ου η χρήση της switch/case ροτιµάται α ό τους ρογραµµατιστές.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ CONTD. 1/ Άλλα θέµατα κληρονοµικότητας Copy contructor Equals overriding ToString overriding Ειδικά για τη Java Object object
ΠΑΡΑ ΕΙΓΜΑ - ΓΕΩΜΕΤΡΙΑ
ΙΕΡΑΡΧΙΑ ΓΕΩΜΕΤΡΙΚΩΝ ΣΧΗΜΑΤΩΝ PlaneEntity Entity2D Entity1D Point Polygon Ellipse Arc Spline Line Polyline Segment
ΙΕΡΑΡΧΙΑ ΓΕΩΜΕΤΡΙΚΩΝ ΣΧΗΜΑΤΩΝ PlaneEntity Ellipse (2D) Spline (1D) Line (1D) Point Arc (1D) Segment (1D) Polyline (1D) Polygon (2D) NormalPolygon (2D) Rectangle (2D) Square (2D)
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ CONTD. 2/ Interfaces Ό ως οι abstract κλάσεις, αλλά υ οχρεωτικά χωρίς κώδικα, άρα δεν έχει αφού δεν έχει νόηµα και µεταβλητές ου να την αφορούν Α οφεύγονται διφορούµενες δηλώσεις µεθόδων κλάσεων Το instanceof λειτουγρεί και για τα interfaces Έχουν ιεραρχική δοµή και ισχύει η κληρονοµικότητα Παράδειγµα το Comparable interface Για ένα άτοµο µε όνοµα, ε ώνυµο, ύψος, βάρος
EXCEPTIONS 1/ Υ οδεικνύουν σφάλµατα στην εκτέλεση ενός ρογράµµατος. Π.χ.: ArrayIndexOutOfBoundsException ClassCastException NullPointerException ArithmeticException StackOverflowError Ιεραρχία των Exceptions Exception βασική κλάση Checked Unchecked (.χ. runtime)
EXCEPTIONS 2/
EXCEPTIONS 3/ Όταν ροκύ τει ένα exception (γίνεται throw) τότε ρέ ει ο κώδικας να κάνει ένα α ό τα ακόλουθα: try και catch Στο try εκτελεί κώδικα µέσα στον ο οίο αναµένεται να ροκύψει κά οιο Exception Μετά ακολουθεί ένα ή ερισσότερα catch µε αράµετρο µια κλάση ου κληρονοµεί α ό την Exception Εάν όντως ροκύψει το Exception τότε εκτελείται ο κώδικας µε το catch ου αντιστοιχεί «καλύτερα» στο Exception ου ροέκυψε throws ηλώνει ότι η µέθοδος ου εριέχει τον κώδικα ου ιθανώς να δώσει το Exception, ότι υ άρχει αυτό το ενδεχόµενο finally Μ ορείτε και εσείς να κάνετε throw κά οιο Exception Μ ορείτε να δηµιουργήσετε και εσείς το δικό σας exception ως κλάση ου κληρονοµεί : Α ό το ίδιο το Exception class Α ό κά οιου άλλου τύ ου Exception
ΛΕΞΙΛΟΓΙΟ Αγγλικά Ελληνικά Ε εξήγηση inheritance κληρονοµικότητα interface διε αφή GUI ή graphical interface γραφική διε αφή exception Εξαίρεση / Σφάλµα Χρησιµο οιείται για να αραστήσει ένα σφάλµα του ρογράµµατος ου ροκύ τει κατά την εκτέλεση του stack trace - καµία δόκιµη µετάφραση - λίστα µε τις µεθόδους ου βρίσκονται υ ό εκτέλεση throw ρίχνω / ετάω Χρησιµο οιείται για να ούµε ότι αρουσιάστηκε κά οια εξαίρεση