1 / 22

Εισαγωγή στη JAV Α ( μέρος Β’ )

Εισαγωγή στη JAV Α ( μέρος Β’ ). Βασίλης Παπαταξιάρχης {vpap@di.uoa.gr} Μάθημα : Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα : Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Περισσότερα θέματα στη Java. Λάθη και Εξαιρέσεις

marion
Télécharger la présentation

Εισαγωγή στη JAV Α ( μέρος Β’ )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Εισαγωγή στη JAVΑ(μέρος Β’) Βασίλης Παπαταξιάρχης {vpap@di.uoa.gr} Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

  2. Περισσότερα θέματα στη Java • Λάθη και Εξαιρέσεις • Μετατροπή Αντικειμένων • Είσοδος / Έξοδος • Γενικά Σχόλια • Εργαλεία Ανάπτυξης

  3. Λάθη και Εξαιρέσεις • Κατά την εκτέλεση μίας μεθόδου μπορεί να προκληθούν συνθήκες απρόβλεπτες. • Σε αυτές τις περιπτώσεις εμφανίζονται λάθη (errors)και εξαιρέσεις (exceptions) • Η Java επιτρέπει αυτόματο χειρισμό τέτοιων λαθών (automated exception handling) • Ένα αντικείμενο της κλάσης Error δημιουργείται λόγω «σημαντικών» λαθών που δεν δύναται να αντιμετωπιστούν στα πλαίσια ενός προγράμματος πακέτο java.lang • Π.χ. NoClassDefFoundError (για παράδειγμα στην περίπτωση που έχουν οριστεί λάθος κατάλογοι στη μεταβλητήπεριβάλλοντος CLASSPATH)

  4. Εξαιρέσεις (1/2) • Μία εξαίρεσηείναι οποιοδήποτε γεγονός διαταράσσει την ομαλή εκτέλεση ενός προγράμματος • Η μέθοδος στην οποία προκαλείται το σφάλμα δημιουργεί ένα exception object, το οποίο περιέχει πληροφορίες για το σφάλμα που προκλήθηκε και καλούμαστε να το διαχειριστούμε runtime. • Το σύστημα ελέγχει τη στοίβα κλήσης συναρτήσεων με σκοπό να βρει κώδικα που να κάνει handle το exception που προέκυψε.

  5. Εξαιρέσεις (2/2) • Η αναζήτηση ξεκινά από τη συνάρτηση στην οποία προκλήθηκε το σφάλμα και καταλήγει στη main (ανπριν δεν βρεθεί handler) • Ένας handler είναι κατάλληλος να κάνει handle ένα exception αν ο τύπος του exception object ταιριάζει με τον τύπο εξαίρεσης που ο handler μπορεί να διαχειριστεί. • Αν βρεθεί κατάλληλος handler, τότε εκτελείται ο κώδικάς του, διαφορετικά το πρόγραμμα τερματίζεται.

  6. Χειρισμός Εξαιρέσεων • try – catch • Η κλήση της μεθόδου η εκτέλεση της οποίας ενδέχεται να προκαλέσει μία εξαίρεση τοποθετείται εντός του μπλοκεντολών try. try { //κώδικας που μπορεί να //προκαλέσει εξαίρεση } catch(MyException1 mye1) { // … } catch(MyException2 mye2) { // … } finally { // … } • Το μπλοκ catch περιέχει εντολές που θα διαχειριστούν την εξαίρεση που προκλήθηκε. • finally: μπλοκ εντολών που ακολουθεί των catch μπλοκ και περιέχει κώδικα που εκτελείται είτε συμβεί εξαίρεση είτε όχι

  7. Συνήθεις Εξαιρέσεις • NullPointerException: Προσπέλαση αντικειμένου null • IllegalArgumentException: Λάθος τύπου ορίσματα • ArrayIndexOutOfBoundsException: Εκτός ορίων πίνακα • ArithmeticException: Διαίρεση με το 0 • FileNotFoundException: Το αρχείο δεν βρέθηκε στο δίσκο

  8. Πλεονεκτήματα Χειρισμού Εξαιρέσεων • Διαχωρισμός κώδικα για αναγνώριση λαθών από τον «κανονικό» κώδικα • Ικανότητα διαχείρισης της εξαίρεσης ακολουθώντας τη στοίβα κλήσης μεθόδων • Δυνατότητα χειρισμού μίας εξαίρεσης με διαφορετικούς τρόπους • Πολλά catchμπλοκ μπορούν να αναφέρονται στο ίδιο tryμπλοκ • Υψηλότερα οι ειδικότερες εξαιρέσεις στον κώδικα • Δυνατότητα δημιουργίας νέων κλάσεων εξαιρέσεων

  9. Μετατροπή Αντικειμένων • Η μετατροπή αντικειμένων (type casting)είναι χρήσιμη όταν θέλουμε να διαχειριστούμε ένα αντικείμενο ως διαφορετικού του ενός τύπου • Μετατροπές προς τα πάνω (upcasting) • Πάντα επιτρεπτές • Γίνονται με απλή ανάθεση • Μετατροπές προς τα κάτω (downcasting) • Δεν είναι πάντα επιτρεπτές • Γίνονται με χρήση cast τελεστή • Μπορεί να γίνει κανονικά η μεταγλώττιση (αφού το cast ίσως επιτρέπεται), αλλά να παραχθεί runtime error

  10. Παράδειγμα

  11. Είσοδος / Έξοδος (I/O) • Η Java χρησιμοποιεί ροές (streams) για νααναπαραστήσει πηγές εισόδου ή προορισμούς εξόδου (π.χ. αρχεία στο δίσκο, άλλα προγράμματα). • Ροή: ακολουθία από δεδομένα (απλά bytes μέχρι σύνθετα αντικείμενα). • Είσοδος / Έξοδος σε αρχεία δίσκου

  12. Ροές Εισόδου / Εξόδου • Ροές Εισόδου (Input Streams) • Διαβάζουν ένα «τεμάχιο» πληροφορίας τη φορά • Ροές Εξόδου (Output Streams) • Γράφουν ένα «τεμάχιο» πληροφορίας τη φορά

  13. Τύποι Ροών (1/2) • Byte Streams: Ι/Ο αυθαίρετου τύπου δεδομένων • Character Streams: I/O χαρακτήρων • Buffered Streams : χρήση δομής buffer για αποδοτικότερη αλληλεπίδραση • Scanning and Formatting: για formatted κείμενο

  14. Τύποι Ροών (2/2) • I/O from the command line • Standard Stream • Input: πληκτρολόγιο • Output: οθόνη • Console • Data Streams: για primitive data types και String δυαδικής μορφής • Object Streams: για οποιουδήποτε τύπου αντικείμενα

  15. Byte Streams • Ροές που διαχειρίζονται χαμηλού επιπέδου δεδομένα • Συνήθεις ροές byte • FileInputStream/ FileOutputStream • Όλοι οι υπόλοιποι τύποι ροών βασίζονται στις ροές byte.

  16. Ι/Ο από αρχεία δίσκου • Οι ροές δεν υποστηρίζουν όλες τις επιθυμητές αλληλεπιδράσεις με τα αρχεία που βρίσκονται στο δίσκο • File: χειρισμός αρχείων ανεξαρτήτου πλατφόρμας και OS • Random Access File: υποστηρίζει μη-ακολουθιακή προσπέλαση στα αρχεία

  17. Χρόνος Εκτέλεσης • Γενικά, ο χρόνος εκτέλεσης ενός java προγράμματος αναμένεται μεγαλύτερος ενός ισοδύναμου σε κάποια άλλη γλώσσα προγραμματισμού (όχι όμως και ο χρόνος ανάπτυξης ) • Αιτία: Ο μεταγλωττισμένος για μία μηχανή κώδικας είναι εν γένει ταχύτερος από τον κώδικα που εκτελείται από έναν interpreter. • Βελτίωση: Just-In-Time μεταγλώττιση

  18. Κάποια Τελευταία Σχόλια… • Πώς προέκυψε ο όρος “bytecode”; • Επειδή ουσιαστικά αποτελεί μία binary αναπαράσταση του προγράμματος προορισμένη να εκτελεστεί από τη JVM (software)και όχι από το hardware. • Σε τι γλώσσα είναι γραμμένη η Java; • Οι περισσότεροι compilers(π.χ. της Sun) για Java είναι πλέον γραμμένοι σε Java, αν και αρχικά ως βάση χρησιμοποιήθηκαν οι γλώσσες C/C++. • Σε ότι αφορά τις JVM ακόμα και σήμερα χρησιμοποιούν C++ (όχι όμως αποκλειστικά), κυρίως για λόγους απόδοσης. Ακόμα και JVMs της Sun!

  19. C++ vs. Java

  20. Εργαλεία Ανάπτυξης • Eclipse (open source) • NetBeans (open source) • JDeveloper (Oracle) • Visual J++ (Microsoft) • …

  21. Προτεινόμενες Πηγές • Exceptions,http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html • Input/Output, http://java.sun.com/docs/books/tutorial/essential/io/ • Type casting, http://www.janeg.ca/scjp/oper/cast.html

  22. Ερωτήσεις ?

More Related