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

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

description

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

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

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

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

Βασίλης Παπαταξιάρχης{[email protected]}

Μάθημα: Αντικειμενοστραφής ΠρογραμματισμόςΔιδάσκουσα: Ιζαμπώ Καράλη

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

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

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

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

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

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

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

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

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

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

προκληθούν συνθήκες απρόβλεπτες.

Σε αυτές τις περιπτώσεις εμφανίζονται λάθη

(errors) και εξαιρέσεις (exceptions)

Η Java επιτρέπει αυτόματο χειρισμό τέτοιων

λαθών (automated exception handling)

Ένα αντικείμενο της κλάσης Error δημιουργείται

λόγω «σημαντικών» λαθών που δεν δύναται να

αντιμετωπιστούν στα πλαίσια ενός

προγράμματος

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

πακέτο java.lang

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

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

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

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

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

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

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

προέκυψε.

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

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

Εξαιρέσεις (2/2) Η αναζήτηση ξεκινά από τη

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

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

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

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

try – catch Η κλήση της μεθόδου η

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

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

////κώδικας που μπορεί να κώδικας που μπορεί να ////προκαλέσει εξαίρεσηπροκαλέσει εξαίρεση

} } catchcatch(MyException1 mye1) {(MyException1 mye1) { // …// …} } catchcatch(MyException2 mye2) {(MyException2 mye2) { // …// …} } finallyfinally { { // …// …}}

trytry { {

////κώδικας που μπορεί να κώδικας που μπορεί να ////προκαλέσει εξαίρεσηπροκαλέσει εξαίρεση

} } catchcatch(MyException1 mye1) {(MyException1 mye1) { // …// …} } catchcatch(MyException2 mye2) {(MyException2 mye2) { // …// …} } finallyfinally { { // …// …}}

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

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

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

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

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

null

IllegalArgumentException: Λάθος τύπου

ορίσματα

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

πίνακα

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

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

στο δίσκο

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

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

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

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

Δυνατότητα χειρισμού μίας εξαίρεσης με διαφορετικούς τρόπους Πολλά catch μπλοκ μπορούν να αναφέρονται στο ίδιο

try μπλοκ

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

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

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

Μετατροπή Αντικειμένων Η μετατροπή αντικειμένων (type casting) είναι

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

Μετατροπές προς τα πάνω (upcasting) Πάντα επιτρεπτές Γίνονται με απλή ανάθεση

Μετατροπές προς τα κάτω (downcasting) Δεν είναι πάντα επιτρεπτές Γίνονται με χρήση cast τελεστή Μπορεί να γίνει κανονικά η μεταγλώττιση (αφού το

cast ίσως επιτρέπεται), αλλά να παραχθεί runtime error

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

Παράδειγμα

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

Είσοδος / Έξοδος (I/O) Η Java χρησιμοποιεί ροές (streams) για να

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

μέχρι σύνθετα αντικείμενα).

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

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

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

Streams) Διαβάζουν ένα «τεμάχιο»

πληροφορίας τη φορά

Ροές Εξόδου (Output Streams) Γράφουν ένα «τεμάχιο»

πληροφορίας τη φορά

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

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

Byte Streams: Ι/Ο αυθαίρετου τύπου

δεδομένων

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

Buffered Streams : χρήση δομής buffer

για αποδοτικότερη αλληλεπίδραση

Scanning and Formatting: για formatted

κείμενο

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

Τύποι Ροών (2/2) I/O from the command line

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

• Output: οθόνη

Console

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

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

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

Byte Streams Ροές που

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

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

FileOutputStream

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

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

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

Οι ροές δεν υποστηρίζουν όλες τις

επιθυμητές αλληλεπιδράσεις με τα αρχεία

που βρίσκονται στο δίσκο

File: χειρισμός αρχείων ανεξαρτήτου

πλατφόρμας και OS

Random Access File: υποστηρίζει μη-

ακολουθιακή προσπέλαση στα αρχεία

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

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

Γενικά, ο χρόνος εκτέλεσης ενός java

προγράμματος αναμένεται μεγαλύτερος ενός

ισοδύναμου σε κάποια άλλη γλώσσα

προγραμματισμού (όχι όμως και ο χρόνος

ανάπτυξης )

Αιτία: Ο μεταγλωττισμένος για μία μηχανή

κώδικας είναι εν γένει ταχύτερος από τον

κώδικα που εκτελείται από έναν interpreter.

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

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

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

Πώς προέκυψε ο όρος “bytecode”; Επειδή ουσιαστικά αποτελεί μία binary αναπαράσταση

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

Σε τι γλώσσα είναι γραμμένη η Java; Οι περισσότεροι compilers (π.χ. της Sun) για Java είναι

πλέον γραμμένοι σε Java, αν και αρχικά ως βάση χρησιμοποιήθηκαν οι γλώσσες C/C++.

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

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

C++ vs. Java

C++ JAVACout<<“Answer:”<<answer; System.out.println("Answer: “ + answer);

cin>>ch; ch=System.in.read();

void main() public static void main(String[] args)

int main(int argc,char** argv) public static void main(String[] args)

const int MAX=10; final int MAX=10;

char* str; String str;

int* scores=new int[5]; int[] scores=new int[5];

delete scores; ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ

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

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

Eclipse (open source)

NetBeans (open source)

JDeveloper (Oracle)

Visual J++ (Microsoft)

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

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

Exceptions,

http://java.sun.com/docs/books/tutorial/essential/exception

s/index.html

Input/Output,

http://java.sun.com/docs/books/tutorial/essential/io/

Type casting, http://www.janeg.ca/scjp/oper/cast.html

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

Ερωτήσεις ?