33
NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS Nikolas Bompetsis [email protected] Διαχείριση Δικτύων

NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

Embed Size (px)

Citation preview

Page 1: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Nikolas [email protected]

Διαχείριση Δικτύων

Page 2: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγική Διάλεξη Java

http://scan.di.uoa.gr | Page 2 | 24/04/2015

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Τεχνολογία Java Collections & Generics Διαχείριση σφαλμάτων Ροές Δεδομένων Εργαλεία Παραδείγματα Παρουσίαση Datasets Εργασίας

Page 3: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (1/6)

http://scan.di.uoa.gr | Page 3 | 24/04/2015

Βασικές αρχές αντικειμενοστραφούς μοντέλου Τα βασικά στοιχεία του αντικειμενοστραφούς μοντέλου της Java: Αντικείμενα (Objects) Κλάσεις (Classes) Κληρονομικότητα(Inheritance) Διεπαφές (Interfaces)

Page 4: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (2/6)

http://scan.di.uoa.gr | Page 4 | 24/04/2015

Αντικείμενα (Objects) Σύμφωνα με τον αντικειμενοστραφή προγραμματισμό ένα πρόγραμμα αποτελείται από αντικείμενα τα οποία εμπεριέχουν δεδομένα (data-­‐members) που μέσω αυτών ανταλλάσσεται πληροφορία και έτσι ολοκληρώνεται ο σκοπός του προγράμματος

Τα αντικείμενα ακόμα και στον πραγματικό κόσμο έχουν δύο χαρακτηριστικά (Π.χ. Αντικείμενο: Σκύλος) Κατάσταση (Π.χ. Κατάσταση: Όνομα, χρώμα, τρίχωμα) Συμπεριφορά (Π.χ. Συμπεριφορά: Γάβγισμα, κούνημα ουράς)

Page 5: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (3/6)

http://scan.di.uoa.gr | Page 5 | 24/04/2015

Κλάσεις (Classes) Όπως και στον πραγματικό κόσμο μπορείτε να βρείτε αντικείμενα που ανήκουν στην ίδια κατηγορία. Π.χ. Μια εταιρία ηλεκτρονικών υπολογιστών κατασκευάζει laptops, μερικά από αυτά είναι πανομοιότυπα και άλλα όχι.

Έτσι ο κώδικας που ορίζει ένα αντικείμενο λέγεται κλάση και χρησιμοποιείται στην κατασκευή αντικειμένων (instances)

Το αντικείμενο είναι μια οντότητα στη μνήμη που περιέχει δεδομένα. Αντίθετα η κλάση είναι απλώς ένα πρότυπο για την δημιουργία αντικειμένων. Είναι ο τύπος δεδομένων των αντικειμένων

Page 6: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (4/6)

http://scan.di.uoa.gr | Page 6 | 24/04/2015

Κληρονομικότητα (Inheritance) Διαφορετικά είδη από αντικείμενα συχνά έχουν ένα ποσοστό ομοιότητας

Π.χ. Mountain Bike Road Bike

Και τα δυο αντικείμενα μοιράζονται κοινά χαρακτηριστικά του ποδήλατου (πετάλια, ταχύτητες, φρένα και άλλα)

Αλλά έχουν επιπλέον δυνατότητες. Το ένα είναι σαφώς καλύτερο στο βουνό ενώ το άλλο απευθύνεται για δρόμο

Page 7: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (5/6)

http://scan.di.uoa.gr | Page 7 | 24/04/2015

Διεπαφές (Interfaces) Τα αντικείμενα προσδιορίζουν την αλληλεπίδραση τους με τον έξω κόσμο μέσω μεθόδων (συναρτήσεων) που διαθέτουν

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

Page 8: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

http://scan.di.uoa.gr | Page 8 | 24/04/2015

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;

@Overridevoid changeGear(int newValue) gear = newValue; @Overridevoid speedUp(int increment) speed = speed + increment; @Overridevoid applyBrakes(int decrement) speed = speed -­‐ decrement;

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (6/6) Διεπαφές (Interfaces)

Page 9: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Τεχνολογία Java (1/4)

http://scan.di.uoa.gr | Page 9 | 24/04/2015

Η Java αποτελεί υψηλού επιπέδου αντικειμενοστραφής γλώσσα προγραμματισμού. Διαθέτει παρόμοιο συντακτικό όπως αυτό της C++

Java Virtual Machine (JVM) JVM is an abstract computing machine, όπως ένας πραγματικός υπολογιστής που διαθέτει σύνολο εντολών και χειρίζεται περιοχές μνήμης σε πραγματικό χρόνο

Τα προγράμματα στην Java δομούνται σε ξεχωριστά .java αρχεία και αυτά μεταγλωττίζονται σε .class αρχεία

Το JVM αντιλαμβάνεται μόνο .class αρχεία, τα οποία περιέχουν JVM εντολές (bytecode)

Page 10: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Τεχνολογία Java (2/4)

http://scan.di.uoa.gr | Page 10 | 24/04/2015

Java Virtual Machine (JVM) Αποτελείται από τρείς βασικές ενότητες

Specification (Περιγράφει τι μπορεί να κάνει) Implementation (Η εφαρμογή των απαιτήσεων του JVM) Runtime instance (Εκτελεί τον εκτελέσιμο κώδικα σε μορφή bytecode)

Ακολουθεί τις παρακάτω διαδικασίες Loads code Verifies code Executes code Provides Runtime environment

Εξαρτάται από το λειτουργικό σύστημα που χρησιμοποιούμε.Επιτρέπει το ίδιο .class αρχείο να μπορεί να εκτελεστεί σε οποιοδήποτε περιβάλλον.

Page 11: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Τεχνολογία Java (3/4)

http://scan.di.uoa.gr | Page 11 | 24/04/2015

Java Virtual Machine (JVM) Stack

Όπως και στη γλώσσα προγραμματισμού C κρατά τις τοπικές μεταβλητές και επιστροφές και παραμέτρους μεθόδων

Αυτό το κάνει μέσω τον frames που αποτελούν το ενδιάμεσο επίπεδο αποθήκευσης

Heap Η heap είναι η run time περιοχή μνήμης που αποθηκεύονται όλα τα στιγμιότυπα κλάσεων και πινάκων

Java API Τέλος, η τεχνολογία της Java μας παρέχει και ένα σύνολο βιβλιοθηκών (Java Application Programming Interface (Java API)) με έτοιμο κώδικα που παρέχει χρήσιμη λειτουργικότητα για τις εφαρμογές μας

Page 12: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Τεχνολογία Java (4/4)

http://scan.di.uoa.gr | Page 12 | 24/04/2015

Page 13: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Collections & Generics (1/5)

http://scan.di.uoa.gr | Page 13 | 24/04/2015

Τι είναι ένα Collection? Είναι μια ομάδα (unit) αντικειμένων και αποτελεί μια οντότητα

Το Collection περιέχουν ένα framework Παρέχει μια αρχιτεκτονική για να αποθηκεύσει και να διαχειριστεί την ομάδα των αντικειμένων

Πιο αναλυτικά ένα Collection framework περιλαμβάνει Interfaces: Για να διαχειριστούμε collection που διαθέτουν διαφορετικές υλοποιήσεις

Classes: Περιλαμβάνουν υλοποιημένες κλάσεις των Interfaces Algorithms: Έτοιμος κώδικας μεθόδων για χρήση όπως αλγόριθμοι αναζήτησης, ταξινόμησης κ.α.

Page 14: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Collections & Generics (2/5)

http://scan.di.uoa.gr | Page 14 | 24/04/2015

Διαφορετικά είδη collection interfaces συνιστούν μια ιεραρχία και καθορίζουν διαφορετικούς τύπους

Page 15: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Collections & Generics (3/5)

http://scan.di.uoa.gr | Page 15 | 24/04/2015

Ποιο συχνή χρήση Collections είναι αυτή των general-­‐purpose implementations Set -­‐> HashSet, TreeSet, LinkedHashSet List -­‐> ArrayList, LinkedList Map -­‐> HashMap, TreeMap, LinkedHashMap

Κάθε μια από τις κλάσεις παρέχει υλοποίηση όλων των μεθόδων που έχουν συμφωνηθεί στο interface. Δεν είναι thread-­‐safe Παρέχουν iterators για προσπέλαση στοιχείων Είναι Serializable και υποστηρίζουν την clone().

Page 16: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Collections & Generics (4/5)

http://scan.di.uoa.gr | Page 16 | 24/04/2015

Bulk operations containsAll(): ελέγχουμε αν ένα collection περιέχει όλα τα στοιχεία ενός άλλου

addAll(): «συνενώνει» δυο collections removeAll(): διώχνει τα στοιχεία από ένα collection που εμφανίζονται σε ένα άλλο (διαφορά συνόλων)

retainAll(): η αντίστροφη διαδικασία από το removeAll Clear(): αδειάζουμε ένα collection από τα στοιχεία του

toArray() Μετατροπή των στοιχείων ενός collection σε πίνακα από αντικείμενα

Collection<String> c;String[] a = (String[]) c.toArray(new String[c.size()]);

etc,

Page 17: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Collections & Generics (5/5)

http://scan.di.uoa.gr | Page 17 | 24/04/2015

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();

Page 18: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Διαχείριση Σφαλμάτων (1/5)

http://scan.di.uoa.gr | Page 18 | 24/04/2015

Σφάλματα Τα σφάλματα (bugs) που κατηγοριοποιούνται σε

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

Σε αυτές τις περιπτώσεις η Java δίνει τη δυνατότητα στον προγραμματιστή να χρησιμοποιήσει εξαιρέσεις(exceptions)

Αυτές χωρίζονται σε δύο κατηγορίες Οι ελεγχόμενες εξαιρέσεις (checked) Μη ελεγχόμενες εξαιρέσεις (unchecked)

Page 19: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Διαχείριση Σφαλμάτων (2/5)

http://scan.di.uoa.gr | Page 19 | 24/04/2015

Όλες οι εξαιρέσεις προέρχονται από την υπερκλάσηjava.lang.Throwable

Checked exceptions Ορίζουν exceptional conditions όπως ότι μια εφαρμογή θα πρέπει να κάνει recover

Υπόκεινται στο “Catch or Specify Requirement”, μιας και το πρόγραμμα μας θα πρέπει να διαθέτει handlers για να τα κάνει catch και να δώσει προς τον χρήστη κάποιο διαγνωστικό μήνυμα.

Όλα τα exceptions θεωρούνται checked, εκτός από τα unchecked Error Runtime

Page 20: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Διαχείριση Σφαλμάτων (3/5)

http://scan.di.uoa.gr | Page 20 | 24/04/2015

Unchecked exceptions Αυτές οι εξαιρέσεις χωρίζονται σε

Errors: Ορίζουν exceptional conditions που οφείλονται σε εξωτερικούς παράγοντες όπως η αστοχία στο hardware

Δεν υπόκεινται στο “Catch or Specify Requirement” και το πιο πιθανό είναι να τυπωθεί το stack trace μέχρι το σημείο που συνέβη το exception και το πρόγραμμα μας να τερματίσει.

Runtime exceptions: Ορίζουν exceptional conditions που οφείλονται σε λογικά λάθη του προγραμματιστή.

Το πιο δημοφηλές exception σε αυτή την κατηγορία είναι το NullPointerException!!

Δεν υπόκεινται στο “Catch or Specify Requirement”

Page 21: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Διαχείριση Σφαλμάτων (4/5)

http://scan.di.uoa.gr | Page 21 | 24/04/2015

Κατά την εκτέλεση ενός προγράμματος όταν συμβεί σφάλμα δημιουργείται ένα αντικείμενο (exception object) στο runtime system

Το exception αντικείμενο περιέχει πληροφορίες για το είδος του σφάλματος που συνέβη, την κατάσταση του προγράμματος μας τη στιγμή του exception κ.α…

To runtime system ψάχνει για κάποιο handler (try-­‐catch). Η αναζήτηση ξεκινά ιεραρχικά από την τρέχουσα συνάρτηση και φτάνει μέχρι την main.

Page 22: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Διαχείριση Σφαλμάτων (5/5)

http://scan.di.uoa.gr | Page 22 | 24/04/2015

Η Java μας παρέχει τρία exception handler components. Τα try, catch, και finally blocks μας επιτρέπουν να ορίσουμε τον δικό μας exception handler.try

code catch (ExceptionType name)

System.err.println(.....);....

catch (ExceptionType name)

System.err.println(.....);....

finally .....

Εδώ περιέχεται ο κώδικας που υπάρχει η πιθανότητα να κάνει throw exception

Εδώ περιέχεται ο κώδικας που θα κληθεί να καλεστεί

με το exception

Το finally block εκτελείται πάντα, είτε συμβεί exception είτε όχι. Συνήθως γράφουμε σ’ αυτό clean up κώδικα.

Page 23: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Ροές Δεδομένων (1/5)

http://scan.di.uoa.gr | Page 23 | 24/04/2015

Μια ροή είναι είτε μια πηγή είτε ένας προορισμός από bytes

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

Δύο βασικές κατηγορίες Ροές εισόδου: μπορείτε μόνο να διαβάσετε Ροές εξόδου: μπορείτε μόνο να γράψετε

Η Java υποστηρίζει ένα σύνολο από τύπους δεδομένων που περνούν σαν ροές όπως bytes, primitive τύπους δεδομένων, αντικείμενα.

Η βιβλιοθήκη java.io περιλαβάνει όλες οι κλάσεις για τις ροές δεδομένων.

Page 24: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Ροές Δεδομένων (2/5)

http://scan.di.uoa.gr | Page 24 | 24/04/2015

Ροές τύπου Bytes Εκτελούν μεταφορά δεδομένων σε 8-­‐

bit bytes. Η Java μας παρέχει τις κλάσεις

InputStream και OutputStream και τις αντίστοιχες υποκλάσεις τους για να διαχειριστούμε ροές τύπου byte.

Οι ροές δεδομένων για αρχεία ανήκουν στην κατηγορία των byte streams.

Σημείωση: ΔΕΝ χρησιμοποιούμε τα byte streams κατευθείαν, διότι παρέχουν Ι/Ο λειτουργικότητα πολύ χαμηλού επιπέδου.

Όλες οι άλλες πιο πολύπλοκες ροές βασίζονται στα byte streams.

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) out.write(c);;

finally if (in != null) in.close();;

if (out != null) out.close();;

Page 25: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Ροές Δεδομένων (3/5)

http://scan.di.uoa.gr | Page 25 | 24/04/2015

Πέρα από τις ροές τύπου Bytes και υπάρχουν και οι ροές τύπου χαρακτήρων

Η Java παρέχει δύο κλάσεις γενικού σκοπού για τη διασύνδεση των ροών τύπου byte και των ροών χαρακτήρων

InputStreamReader και OutputStreamWriter χρησιμοποιούνται για να δημιουργήσουν ροές χαρακτήρων όταν δεν υπάρχουν έτοιμες ροές τύπου byte που να σας εξυπηρετούν.

Page 26: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Ροές Δεδομένων (4/5)

http://scan.di.uoa.gr | Page 26 | 5/20/2014

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;;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) inputStream.close();;

if (outputStream != null) outputStream.close();;

Ροές Δεδομένων με ενδιάμεση μνήμη

Οι κλάσεις BufferedInputStreamκαι BufferedOutputStream χειρίζονται ροές bytes με ενδιάμεση μνήμη.

Page 27: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Ροές Δεδομένων (5/5)

http://scan.di.uoa.gr | Page 27 | 24/04/2015

Βασική Είσοδος: System.in Βασική Έξοδος: System.out Βασική Έξοδος Λαθών: System.err

Η ροή System.in είναι μια ροή τύπου byte και δεν περιέχει τη λειτουργικότητα μιας ροής χαρακτήρων. Για να διαβάσετε από τη γραμμή εντολών εντολών θα πρέπει να χρησιμοποιήσετε την κλάση InputStreamReader InputStreamReader in = new InputStreamReader(System.in);

Page 28: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εργαλεία (1/2)

http://scan.di.uoa.gr | Page 28 | 24/04/2015

Για να γράψετε, να μεταγλωττίσετε και να εκτελέσετε ένα πρόγραμμα σε γλώσσα προγραμματισμού 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.

Page 29: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Εργαλεία (2/2)

http://scan.di.uoa.gr | Page 29 | 24/04/2015

Page 30: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Παραδείγματα (1/3)

http://scan.di.uoa.gr | Page 30 | 24/04/2015

Page 31: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Παραδείγματα (2/3)

http://scan.di.uoa.gr | Page 31 | 24/04/2015

Page 32: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Παραδείγματα (3/3)

http://scan.di.uoa.gr | Page 32 | 24/04/2015

Page 33: NATIONAL’&’KAPODISTRIANUNIVERSITY’OF’ATHENS · national’&’kapodistrian university’of’athens Εισαγωγή’στον’αντικειμενοστραφή’ προγραμματισμό(1/6)

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS

Datasets Εργασίας (1/1)

http://scan.di.uoa.gr | Page 33 | 24/04/2015