NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis

Σχετικά έγγραφα
Διάλεξη Εισαγωγή στη Java, Μέρος B

Διάλεξη 4. Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java

Αρχεία και Ρεύματα. Αρχεία

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

ιάλεξη 3 Τµήµα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισµικού Χειµερινό Εξάµηνο ιάλεξη 3

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

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

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

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

Συντακτικά λάθη, λάθη εκτέλεσης, Λογικά λάθη

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

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

(Διαφάνειες Νίκου Βιδάκη)

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

6. Εξαιρέσεις στη γλώσσα Java

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions

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

Generics και ArrayLists

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

ΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

10.1 Γενικά για τα streams

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

Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

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

Προγραµµατισµός ΙΙ Java 2

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Διάλεξη Εισαγωγή στη Java, Μέρος Α

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

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

Μάθημα 2 [10/11/2015]

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

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

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Εκτέλεση εξωτερικών προγραμμάτων και εντολών The Java Reflection - Αρχικοποίηση (Initialization)

Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση:

05β Η ιδεατή μηχανή της Java

Εξαιρέσεις. try, catch, finally, throw, throws

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ

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

Ευφυείς Τεχνολογίες ----Πράκτορες

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Είσοδος Έξοδος (Input Output) Εξαιρέσεις (Exceptions)

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Προγραµµατισµός ΙΙ Java 2

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

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

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

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Προγράμματα με δομή Κληρονομικότητας

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Transcript:

Διαχείριση Δικτύων Nikolas Bompetsis nbompetsis@di.uoa.gr

Εισαγωγική Διάλεξη Java Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Τεχνολογία Java Collections & Generics Διαχείριση σφαλμάτων Ροές Δεδομένων Εργαλεία Παραδείγματα Παρουσίαση Datasets Εργασίας http://scan.di.uoa.gr Page 2 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (1/6) Βασικές αρχές αντικειμενοστραφούς μοντέλου Τα βασικά στοιχεία του αντικειμενοστραφούς μοντέλου της Java: Αντικείμενα (Objects) Κλάσεις (Classes) Κληρονομικότητα(Inheritance) Διεπαφές (Interfaces) http://scan.di.uoa.gr Page 3 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (2/6) Αντικείμενα (Objects) Σύμφωνα με τον αντικειμενοστραφή προγραμματισμό ένα πρόγραμμα αποτελείται από αντικείμενα τα οποία εμπεριέχουν δεδομένα (data- members) που μέσω αυτών ανταλλάσσεται πληροφορία και έτσι ολοκληρώνεται ο σκοπός του προγράμματος Τα αντικείμενα ακόμα και στον πραγματικό κόσμο έχουν δύο χαρακτηριστικά (Π.χ. Αντικείμενο: Σκύλος) Κατάσταση (Π.χ. Κατάσταση: Όνομα, χρώμα, τρίχωμα) Συμπεριφορά (Π.χ. Συμπεριφορά: Γάβγισμα, κούνημα ουράς) http://scan.di.uoa.gr Page 4 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (3/6) Κλάσεις (Classes) Όπως και στον πραγματικό κόσμο μπορείτε να βρείτε αντικείμενα που ανήκουν στην ίδια κατηγορία. Π.χ. Μια εταιρία ηλεκτρονικών υπολογιστών κατασκευάζει laptops, μερικά από αυτά είναι πανομοιότυπα και άλλα όχι. Έτσι ο κώδικας που ορίζει ένα αντικείμενο λέγεται κλάση και χρησιμοποιείται στην κατασκευή αντικειμένων (instances) Το αντικείμενο είναι μια οντότητα στη μνήμη που περιέχει δεδομένα. Αντίθετα η κλάση είναι απλώς ένα πρότυπο για την δημιουργία αντικειμένων. Είναι ο τύπος δεδομένων των αντικειμένων http://scan.di.uoa.gr Page 5 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (4/6) Κληρονομικότητα (Inheritance) Διαφορετικά είδη από αντικείμενα συχνά έχουν ένα ποσοστό ομοιότητας Π.χ. Mountain Bike Road Bike Και τα δυο αντικείμενα μοιράζονται κοινά χαρακτηριστικά του ποδήλατου (πετάλια, ταχύτητες, φρένα και άλλα) Αλλά έχουν επιπλέον δυνατότητες. Το ένα είναι σαφώς καλύτερο στο βουνό ενώ το άλλο απευθύνεται για δρόμο http://scan.di.uoa.gr Page 6 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (5/6) Διεπαφές (Interfaces) Τα αντικείμενα προσδιορίζουν την αλληλεπίδραση τους με τον έξω κόσμο μέσω μεθόδων (συναρτήσεων) που διαθέτουν Μια διεπαφή αποτελεί μια ομάδα σχετικών μεθόδων με κενό σώμα. Έτσι η συμπεριφορά ενός αντικειμένου μπορεί να καθοριστεί από μια διεπαφή. http://scan.di.uoa.gr Page 7 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (6/6) Διεπαφές (Interfaces) interface Bicycle { void changegear(int newvalue); void speedup(int increment); void applybrakes(int decrement); class BMXBicycle implements Bicycle { int cadence = 0; int speed = 0; int gear = 1; @Override void changegear(int newvalue) { gear = newvalue; @Override void speedup(int increment) { speed = speed + increment; @Override void applybrakes(int decrement) { speed = speed - decrement; http://scan.di.uoa.gr Page 8 24/04/2015

Τεχνολογία Java (1/4) Η Java αποτελεί υψηλού επιπέδου αντικειμενοστραφής γλώσσα προγραμματισμού. Διαθέτει παρόμοιο συντακτικό όπως αυτό της C++ Java Virtual Machine (JVM) JVM is an abstract computing machine, όπως ένας πραγματικός υπολογιστής που διαθέτει σύνολο εντολών και χειρίζεται περιοχές μνήμης σε πραγματικό χρόνο Τα προγράμματα στην Java δομούνται σε ξεχωριστά.java αρχεία και αυτά μεταγλωττίζονται σε.class αρχεία Το JVM αντιλαμβάνεται μόνο.class αρχεία, τα οποία περιέχουν JVM εντολές (bytecode) http://scan.di.uoa.gr Page 9 24/04/2015

Τεχνολογία Java (2/4) Java Virtual Machine (JVM) Αποτελείται από τρείς βασικές ενότητες Specification (Περιγράφει τι μπορεί να κάνει) Implementation (Η εφαρμογή των απαιτήσεων του JVM) Runtime instance (Εκτελεί τον εκτελέσιμο κώδικα σε μορφή bytecode) Ακολουθεί τις παρακάτω διαδικασίες Loads code Verifies code Executes code Provides Runtime environment Εξαρτάται από το λειτουργικό σύστημα που χρησιμοποιούμε. Επιτρέπει το ίδιο.class αρχείο να μπορεί να εκτελεστεί σε οποιοδήποτε περιβάλλον. http://scan.di.uoa.gr Page 10 24/04/2015

Τεχνολογία Java (3/4) Java Virtual Machine (JVM) Stack Όπως και στη γλώσσα προγραμματισμού C κρατά τις τοπικές μεταβλητές και επιστροφές και παραμέτρους μεθόδων Αυτό το κάνει μέσω τον frames που αποτελούν το ενδιάμεσο επίπεδο αποθήκευσης Heap Η heap είναι η run time περιοχή μνήμης που αποθηκεύονται όλα τα στιγμιότυπα κλάσεων και πινάκων Java API Τέλος, η τεχνολογία της Java μας παρέχει και ένα σύνολο βιβλιοθηκών (Java Application Programming Interface (Java API)) με έτοιμο κώδικα που παρέχει χρήσιμη λειτουργικότητα για τις εφαρμογές μας http://scan.di.uoa.gr Page 11 24/04/2015

Τεχνολογία Java (4/4) http://scan.di.uoa.gr Page 12 24/04/2015

Collections & Generics (1/5) Τι είναι ένα Collection? Είναι μια ομάδα (unit) αντικειμένων και αποτελεί μια οντότητα Το Collection περιέχουν ένα framework Παρέχει μια αρχιτεκτονική για να αποθηκεύσει και να διαχειριστεί την ομάδα των αντικειμένων Πιο αναλυτικά ένα Collection framework περιλαμβάνει Interfaces: Για να διαχειριστούμε collection που διαθέτουν διαφορετικές υλοποιήσεις Classes: Περιλαμβάνουν υλοποιημένες κλάσεις των Interfaces Algorithms: Έτοιμος κώδικας μεθόδων για χρήση όπως αλγόριθμοι αναζήτησης, ταξινόμησης κ.α. http://scan.di.uoa.gr Page 13 24/04/2015

Collections & Generics (2/5) Διαφορετικά είδη collection interfaces συνιστούν μια ιεραρχία και καθορίζουν διαφορετικούς τύπους http://scan.di.uoa.gr Page 14 24/04/2015

Collections & Generics (3/5) Ποιο συχνή χρήση Collections είναι αυτή των general- purpose implementations Set - > HashSet, TreeSet, LinkedHashSet List - > ArrayList, LinkedList Map - > HashMap, TreeMap, LinkedHashMap Κάθε μια από τις κλάσεις παρέχει υλοποίηση όλων των μεθόδων που έχουν συμφωνηθεί στο interface. Δεν είναι thread- safe Παρέχουν iterators για προσπέλαση στοιχείων Είναι Serializable και υποστηρίζουν την clone(). http://scan.di.uoa.gr Page 15 24/04/2015

Collections & Generics (4/5) Bulk operations containsall(): ελέγχουμε αν ένα collection περιέχει όλα τα στοιχεία ενός άλλου addall(): «συνενώνει» δυο collections removeall(): διώχνει τα στοιχεία από ένα collection που εμφανίζονται σε ένα άλλο (διαφορά συνόλων) retainall(): η αντίστροφη διαδικασία από το removeall Clear(): αδειάζουμε ένα collection από τα στοιχεία του toarray() Μετατροπή των στοιχείων ενός collection σε πίνακα από αντικείμενα etc, Collection<String> c; String[] a = (String[]) c.toarray(new String[c.size()]); http://scan.di.uoa.gr Page 16 24/04/2015

Collections & Generics (5/5) Generics Χαρακτηριστικό που εμφανίστηκε στην Java SE 5 H σημαντικότερη λειτουργία που μας παρέχουν είναι η type- safety at compile time. Με αυτή τη λειτουργία αποφεύγουμε να σφάλματα τύπου ClassCastException Τα Generics είναι άμεσα συνδεδεμένα με τη χρήση collections List myintlist = new LinkedList(); myintlist.add(new Integer(0)); Integer x = (Integer) myintlist.iterator().next(); List<Integer> myintlist = new LinkedList<Integer>(); myintlist.add(new Integer(0)); Integer x = myintlist.iterator().next(); http://scan.di.uoa.gr Page 17 24/04/2015

Διαχείριση Σφαλμάτων (1/5) Σφάλματα Τα σφάλματα (bugs) που κατηγοριοποιούνται σε Λογικά λάθη του προγραμματιστή Λάθη σχεδιασμού Λάθη σε εισόδους δεδομένων Λάθος υλικού Έλεγχοι και εξωγενείς παράγοντες Σε αυτές τις περιπτώσεις η Java δίνει τη δυνατότητα στον προγραμματιστή να χρησιμοποιήσει εξαιρέσεις(exceptions) Αυτές χωρίζονται σε δύο κατηγορίες Οι ελεγχόμενες εξαιρέσεις (checked) Μη ελεγχόμενες εξαιρέσεις (unchecked) http://scan.di.uoa.gr Page 18 24/04/2015

Διαχείριση Σφαλμάτων (2/5) Όλες οι εξαιρέσεις προέρχονται από την υπερκλάση java.lang.throwable Checked exceptions Ορίζουν exceptional conditions όπως ότι μια εφαρμογή θα πρέπει να κάνει recover Υπόκεινται στο Catch or Specify Requirement, μιας και το πρόγραμμα μας θα πρέπει να διαθέτει handlers για να τα κάνει catch και να δώσει προς τον χρήστη κάποιο διαγνωστικό μήνυμα. Όλα τα exceptions θεωρούνται checked, εκτός από τα unchecked Error Runtime http://scan.di.uoa.gr Page 19 24/04/2015

Διαχείριση Σφαλμάτων (3/5) Unchecked exceptions Αυτές οι εξαιρέσεις χωρίζονται σε Errors: Ορίζουν exceptional conditions που οφείλονται σε εξωτερικούς παράγοντες όπως η αστοχία στο hardware Δεν υπόκεινται στο Catch or Specify Requirement και το πιο πιθανό είναι να τυπωθεί το stack trace μέχρι το σημείο που συνέβη το exception και το πρόγραμμα μας να τερματίσει. Runtime exceptions: Ορίζουν exceptional conditions που οφείλονται σε λογικά λάθη του προγραμματιστή. Το πιο δημοφηλές exception σε αυτή την κατηγορία είναι το NullPointerException!! Δεν υπόκεινται στο Catch or Specify Requirement http://scan.di.uoa.gr Page 20 24/04/2015

Διαχείριση Σφαλμάτων (4/5) Κατά την εκτέλεση ενός προγράμματος όταν συμβεί σφάλμα δημιουργείται ένα αντικείμενο (exception object) στο runtime system Το exception αντικείμενο περιέχει πληροφορίες για το είδος του σφάλματος που συνέβη, την κατάσταση του προγράμματος μας τη στιγμή του exception κ.α To runtime system ψάχνει για κάποιο handler (try- catch). Η αναζήτηση ξεκινά ιεραρχικά από την τρέχουσα συνάρτηση και φτάνει μέχρι την main. http://scan.di.uoa.gr Page 21 24/04/2015

Διαχείριση Σφαλμάτων (5/5) Η Java μας παρέχει τρία exception handler components. Τα try, catch, και finally blocks μας επιτρέπουν να ορίσουμε τον δικό μας exception handler. try { Εδώ περιέχεται ο κώδικας που υπάρχει η πιθανότητα code να κάνει throw exception catch (ExceptionType name) { System.err.println(...);... Εδώ περιέχεται ο κώδικας που θα κληθεί να καλεστεί με το exception catch (ExceptionType name) { System.err.println(...);... finally {... Το finally block εκτελείται πάντα, είτε συμβεί exception είτε όχι. Συνήθως γράφουμε σ αυτό clean up κώδικα. http://scan.di.uoa.gr Page 22 24/04/2015

Ροές Δεδομένων (1/5) Μια ροή είναι είτε μια πηγή είτε ένας προορισμός από bytes Η πηγή και ο προορισμός των ροών περιλαμβάνει αρχεία στο δίσκο, συσκευές, άλλα προγράμματα... Δύο βασικές κατηγορίες Ροές εισόδου: μπορείτε μόνο να διαβάσετε Ροές εξόδου: μπορείτε μόνο να γράψετε Η Java υποστηρίζει ένα σύνολο από τύπους δεδομένων που περνούν σαν ροές όπως bytes, primitive τύπους δεδομένων, αντικείμενα. Η βιβλιοθήκη java.io περιλαβάνει όλες οι κλάσεις για τις ροές δεδομένων. http://scan.di.uoa.gr Page 23 24/04/2015

Ροές Δεδομένων (2/5) Ροές τύπου Bytes Εκτελούν μεταφορά δεδομένων σε 8- bit bytes. Η Java μας παρέχει τις κλάσεις InputStream και OutputStream και τις αντίστοιχες υποκλάσεις τους για να διαχειριστούμε ροές τύπου byte. Οι ροές δεδομένων για αρχεία import java.io.fileinputstream;; import java.io.fileoutputstream;; import java.io.ioexception;; public class ExampleBytes { public static void main(string[] args) throws IOException { FileInputStream in = null;; FileOutputStream out = null;; try { in = new FileInputStream("test.txt");; out = new FileOutputStream( output.txt");; int c;; while ((c = in.read())!= -1) { ανήκουν στην κατηγορία των byte streams. out.write(c);; Σημείωση: ΔΕΝ χρησιμοποιούμε τα finally { if (in!= null) { byte streams κατευθείαν, διότι in.close();; παρέχουν Ι/Ο λειτουργικότητα πολύ if (out!= null) { χαμηλού επιπέδου. out.close();; Όλες οι άλλες πιο πολύπλοκες ροές βασίζονται στα byte streams. http://scan.di.uoa.gr Page 24 24/04/2015

Ροές Δεδομένων (3/5) Πέρα από τις ροές τύπου Bytes και υπάρχουν και οι ροές τύπου χαρακτήρων Η Java παρέχει δύο κλάσεις γενικού σκοπού για τη διασύνδεση των ροών τύπου byte και των ροών χαρακτήρων InputStreamReader και OutputStreamWriter χρησιμοποιούνται για να δημιουργήσουν ροές χαρακτήρων όταν δεν υπάρχουν έτοιμες ροές τύπου byte που να σας εξυπηρετούν. http://scan.di.uoa.gr Page 25 24/04/2015

Ροές Δεδομένων (4/5) Ροές Δεδομένων με ενδιάμεση μνήμη import java.io.filereader;; import java.io.filewriter;; import java.io.bufferedreader;; import java.io.printwriter;; import java.io.ioexception;; public class ExampleLines { public static void main(string[] args) throws IOException { BufferedReader inputstream = null;; Οι κλάσεις BufferedInputStream και BufferedOutputStrea m χειρίζονται ροές BufferedWriter outputstream = null;; try { inputstream = new BufferedReader(new FileReader( test.txt"));; outputstream = new BufferedWriter(new FileWriter( output.txt"));; String l;; while ((l = inputstream.readline())!= null) { outputstream.write(l);; finally { if (inputstream!= null) { bytes με ενδιάμεση inputstream.close();; μνήμη. if (outputstream!= null) { outputstream.close();; http://scan.di.uoa.gr Page 26 5/20/2014

Ροές Δεδομένων (5/5) Βασική Είσοδος: System.in Βασική Έξοδος: System.out Βασική Έξοδος Λαθών: System.err Η ροή System.in είναι μια ροή τύπου byte και δεν περιέχει τη λειτουργικότητα μιας ροής χαρακτήρων. Για να διαβάσετε από τη γραμμή εντολών εντολών θα πρέπει να χρησιμοποιήσετε την κλάση InputStreamReader InputStreamReader in = new InputStreamReader(System.in); http://scan.di.uoa.gr Page 27 24/04/2015

Εργαλεία (1/2) Για να γράψετε, να μεταγλωττίσετε και να εκτελέσετε ένα πρόγραμμα σε γλώσσα προγραμματισμού Java πρέπει αν έχετε τα: Java Development Kit (JDK): http://www.oracle.com/technetwork/java/javase/downloads/index.html Καλύτερα για την εργασία του μαθήματος να χρησιμοποιείτε JDK 1.7 Ένα κειμενογράφο ή ενα IDE Notepad++, gedit, geany NetBean, Eclipse, intellij IDEA Frameworks: Maven, Spring, etc. Μεταγλώτιση και εκτέλεση από την γραμμή εντολών javac cp path_to_libraries:path_to_classes sourcepath path_to_sources java cp path_to_libraries:path_to_classes ExcecutableName arg1 arg2 Σε περιβάλλον Linux το διαχωριστικό ανάμεσα στις βιβλιοθήκες είναι : ενώ το ; των Windows. http://scan.di.uoa.gr Page 28 24/04/2015

Εργαλεία (2/2) http://scan.di.uoa.gr Page 29 24/04/2015

Παραδείγματα (1/3) http://scan.di.uoa.gr Page 30 24/04/2015

Παραδείγματα (2/3) http://scan.di.uoa.gr Page 31 24/04/2015

Παραδείγματα (3/3) http://scan.di.uoa.gr Page 32 24/04/2015

Datasets Εργασίας (1/1) http://scan.di.uoa.gr Page 33 24/04/2015