Εισαγωγή στη
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

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


  • 91 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Εισαγωγή στη 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Jav

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

Βασίλης Παπαταξιάρχης

[email protected]}

Μάθημα: Αντικειμενοστραφής Προγραμματισμός

Διδάσκουσα: Ιζαμπώ Καράλη

Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών


Jav

Περισσότερα θέματα στη Java

  • Λάθη και Εξαιρέσεις

  • Μετατροπή Αντικειμένων

  • Είσοδος / Έξοδος

  • Γενικά Σχόλια

  • Εργαλεία Ανάπτυξης


Jav

Λάθη και Εξαιρέσεις

  • Κατά την εκτέλεση μίας μεθόδου μπορεί να προκληθούν συνθήκες απρόβλεπτες.

  • Σε αυτές τις περιπτώσεις εμφανίζονται λάθη (errors)και εξαιρέσεις (exceptions)

  • Η Java επιτρέπει αυτόματο χειρισμό τέτοιων λαθών (automated exception handling)

  • Ένα αντικείμενο της κλάσης Error δημιουργείται λόγω «σημαντικών» λαθών που δεν δύναται να αντιμετωπιστούν στα πλαίσια ενός προγράμματος

πακέτο

java.lang

  • Π.χ. NoClassDefFoundError

    (για παράδειγμα στην περίπτωση που έχουν οριστεί λάθος κατάλογοι στη μεταβλητήπεριβάλλοντος CLASSPATH)


Jav

Εξαιρέσεις (1/2)

  • Μία εξαίρεσηείναι οποιοδήποτε γεγονός διαταράσσει την ομαλή εκτέλεση ενός προγράμματος

  • Η μέθοδος στην οποία προκαλείται το σφάλμα δημιουργεί ένα exception object, το οποίο περιέχει πληροφορίες για το σφάλμα που προκλήθηκε και καλούμαστε να το διαχειριστούμε runtime.

  • Το σύστημα ελέγχει τη στοίβα κλήσης

    συναρτήσεων με σκοπό να βρει κώδικα

    που να κάνει handle το exception που

    προέκυψε.


Jav

Εξαιρέσεις (2/2)

  • Η αναζήτηση ξεκινά από τη συνάρτηση στην οποία προκλήθηκε το σφάλμα και καταλήγει στη main (ανπριν δεν βρεθεί handler)

  • Ένας handler είναι κατάλληλος να κάνει handle ένα exception αν ο τύπος του exception object ταιριάζει με τον τύπο εξαίρεσης που ο handler μπορεί να διαχειριστεί.

  • Αν βρεθεί κατάλληλος handler, τότε εκτελείται ο κώδικάς του, διαφορετικά το πρόγραμμα τερματίζεται.


Jav

Χειρισμός Εξαιρέσεων

  • try – catch

    • Η κλήση της μεθόδου η εκτέλεση της οποίας ενδέχεται να προκαλέσει μία εξαίρεση τοποθετείται εντός του μπλοκεντολών try.

try {

//κώδικας που μπορεί να

//προκαλέσει εξαίρεση

} catch(MyException1 mye1) {

// …

} catch(MyException2 mye2) {

// …

} finally {

// …

}

  • Το μπλοκ catch περιέχει εντολές που θα διαχειριστούν την εξαίρεση που προκλήθηκε.

  • finally: μπλοκ εντολών που ακολουθεί των catch μπλοκ και περιέχει κώδικα που εκτελείται είτε συμβεί εξαίρεση είτε όχι


Jav

Συνήθεις Εξαιρέσεις

  • NullPointerException: Προσπέλαση αντικειμένου null

  • IllegalArgumentException: Λάθος τύπου ορίσματα

  • ArrayIndexOutOfBoundsException: Εκτός ορίων πίνακα

  • ArithmeticException: Διαίρεση με το 0

  • FileNotFoundException: Το αρχείο δεν βρέθηκε στο δίσκο


Jav

Πλεονεκτήματα Χειρισμού Εξαιρέσεων

  • Διαχωρισμός κώδικα για αναγνώριση λαθών από τον «κανονικό» κώδικα

  • Ικανότητα διαχείρισης της εξαίρεσης ακολουθώντας τη στοίβα κλήσης μεθόδων

  • Δυνατότητα χειρισμού μίας εξαίρεσης με διαφορετικούς τρόπους

    • Πολλά catchμπλοκ μπορούν να αναφέρονται στο ίδιο tryμπλοκ

    • Υψηλότερα οι ειδικότερες εξαιρέσεις στον κώδικα

  • Δυνατότητα δημιουργίας νέων κλάσεων εξαιρέσεων


Jav

Μετατροπή Αντικειμένων

  • Η μετατροπή αντικειμένων (type casting)είναι χρήσιμη όταν θέλουμε να διαχειριστούμε ένα αντικείμενο ως διαφορετικού του ενός τύπου

  • Μετατροπές προς τα πάνω (upcasting)

    • Πάντα επιτρεπτές

    • Γίνονται με απλή ανάθεση

  • Μετατροπές προς τα κάτω (downcasting)

    • Δεν είναι πάντα επιτρεπτές

    • Γίνονται με χρήση cast τελεστή

    • Μπορεί να γίνει κανονικά η μεταγλώττιση (αφού το cast ίσως επιτρέπεται), αλλά να παραχθεί runtime error


Jav

Παράδειγμα


Jav

Είσοδος / Έξοδος (I/O)

  • Η Java χρησιμοποιεί ροές (streams) για νααναπαραστήσει πηγές εισόδου ή προορισμούς εξόδου (π.χ. αρχεία στο δίσκο, άλλα προγράμματα).

    • Ροή: ακολουθία από δεδομένα (απλά bytes μέχρι σύνθετα αντικείμενα).

  • Είσοδος / Έξοδος σε αρχεία δίσκου


Jav

Ροές Εισόδου / Εξόδου

  • Ροές Εισόδου (Input Streams)

    • Διαβάζουν ένα «τεμάχιο» πληροφορίας τη φορά

  • Ροές Εξόδου (Output Streams)

    • Γράφουν ένα «τεμάχιο» πληροφορίας τη φορά


Jav

Τύποι Ροών (1/2)

  • Byte Streams: Ι/Ο αυθαίρετου τύπου δεδομένων

  • Character Streams: I/O χαρακτήρων

  • Buffered Streams : χρήση δομής buffer για αποδοτικότερη αλληλεπίδραση

  • Scanning and Formatting: για formatted κείμενο


Jav

Τύποι Ροών (2/2)

  • I/O from the command line

    • Standard Stream

      • Input: πληκτρολόγιο

      • Output: οθόνη

    • Console

  • Data Streams: για primitive data types και String δυαδικής μορφής

  • Object Streams: για οποιουδήποτε τύπου αντικείμενα


Byte streams

Byte Streams

  • Ροές που διαχειρίζονται χαμηλού επιπέδου δεδομένα

  • Συνήθεις ροές byte

    • FileInputStream/ FileOutputStream

  • Όλοι οι υπόλοιποι τύποι ροών βασίζονται στις ροές byte.


Jav

Ι/Ο από αρχεία δίσκου

  • Οι ροές δεν υποστηρίζουν όλες τις επιθυμητές αλληλεπιδράσεις με τα αρχεία που βρίσκονται στο δίσκο

  • File: χειρισμός αρχείων ανεξαρτήτου πλατφόρμας και OS

  • Random Access File: υποστηρίζει μη-ακολουθιακή προσπέλαση στα αρχεία


Jav

Χρόνος Εκτέλεσης

  • Γενικά, ο χρόνος εκτέλεσης ενός java προγράμματος αναμένεται μεγαλύτερος ενός ισοδύναμου σε κάποια άλλη γλώσσα προγραμματισμού (όχι όμως και ο χρόνος ανάπτυξης )

  • Αιτία: Ο μεταγλωττισμένος για μία μηχανή κώδικας είναι εν γένει ταχύτερος από τον κώδικα που εκτελείται από έναν interpreter.

  • Βελτίωση: Just-In-Time μεταγλώττιση


Jav

Κάποια Τελευταία Σχόλια…

  • Πώς προέκυψε ο όρος “bytecode”;

    • Επειδή ουσιαστικά αποτελεί μία binary αναπαράσταση του προγράμματος προορισμένη να εκτελεστεί από τη JVM (software)και όχι από το hardware.

  • Σε τι γλώσσα είναι γραμμένη η Java;

    • Οι περισσότεροι compilers(π.χ. της Sun) για Java είναι πλέον γραμμένοι σε Java, αν και αρχικά ως βάση χρησιμοποιήθηκαν οι γλώσσες C/C++.

    • Σε ότι αφορά τις JVM ακόμα και σήμερα χρησιμοποιούν C++ (όχι όμως αποκλειστικά), κυρίως για λόγους απόδοσης. Ακόμα και JVMs της Sun!


C vs java

C++ vs. Java


Jav

Εργαλεία Ανάπτυξης

  • Eclipse (open source)

  • NetBeans (open source)

  • JDeveloper (Oracle)

  • Visual J++ (Microsoft)


Jav

Προτεινόμενες Πηγές

  • 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


Jav

Ερωτήσεις ?


  • Login