Διάλεξη 4. Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java
|
|
- Ευδοκία Λαγός
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Διάλεξη 4 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
2 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
3 Εισαγωγή στα νήματα Σε υπολογιστικά περιβάλλοντα εφαρμογές «ανταγωνίζονται» να αποκτήσουν την δυνατότητα πρόσβασης και εκτέλεσης στην CPU (concurrent programming). Δυο ειδών οντότητες εκτέλεσης συναντούμε συνήθως, τις διεργασίες (processes) και τα νήματα (threads). Διεργασίες Οι διεργασίες αποτελούν αυτόνομες εφαρμογές που διαθέτουν δικό τους memory space. Το εκάστοτε λειτουργικό σύστημα υποστηρίζει την ύπαρξη πόρων για την επικοινωνία μεταξύ διεργασιών (Inter Process Communication-ΙPC resources) στον ίδιο ή και σε διαφορετικούς υπολογιστές (πχ pipes, sockets ). Νήματα Μπορούν να χαρακτηριστούν και ως lightweight processes. Παρέχουν και αυτά ένα χώρο εκτέλεσης μόνο που η δημιουργία ενός thread απαιτεί λιγότερους πόρους να δεσμευτούν από το λειτουργικό σύστημα. Τα νήματα γεννώνται μέσα σε μια διεργασία. Συγκεκριμένα, μια διεργασία μπορεί να δημιουργήσει ένα ή περισσότερα νήματα ώστε να εκτελέσει πολλά tasks «ταυτόχρονα». Τα νήματα μοιράζονται πόρους της διεργασίας που τα δημιουργεί όπως μνήμη, αρχεία κλπ αλλά διαθέτουν και το δικό τους address space. Η αλλαγή στην προσπέλαση της CPU μεταξύ threads είναι λιγότερο χρονοβόρα (context switching) σε σχέση με τις διεργασίες. 3
4 Τα νήματα στην Java (1/2) H Java μας παρέχει δυο τρόπους για την δημιουργία νημάτων Με το να κάνουμε extend την κλάση Thread (java.lang.thread) Με το να κάνουμε implement το Runnable interface (java.lang.runnable) Extends Thread Μια κλάση μπορεί να κάνει extend την Thread και να κάνει override την μέθοδο run() με σκοπό να ορίσει τα βήματα εκτέλεσης ενός thread. (Να σημειώσουμε πως η Thread κάνει implement το Runnable Interface) O constructor της κλάσης αυτής μπορεί να καλέσει τον constructor της Thread ρητά με χρήση της super(). Η κλάση μας κληρονομεί την μέθοδο start() που ορίζεται στην κλάση Thread και με την κλήση της από ένα αντικείμενο μπορεί να ξεκινήσει την εκτέλεση του ένα νέο thread. 4
5 Τα νήματα στην Java (2/2) Implements Runnable Μια κλάση μπορεί να κάνει implement το interface Runnable αρκεί να γραφτεί κώδικας για την μέθοδο run() που θα οριζει τον κύκλο ζωής ενός thread. Ακολούθως, ένα αντικείμενο τύπου Thread δημιουργείται και του περνάμε σαν όρισμα στον constructor του ένα αντικείμενο από την κλάση που δημιουργήσαμε και κάνει implement το Runnable. Η μέθοδος start() του αντικειμένου τύπου Thread καλείται και επιστρέφει μόλις γεννηθεί το thread Συνίσταται η χρήση threads που κάνουν implement το Runnable interface αντί να κληρωνομούν την Thread Class: 1. Αν κάνoυμε extend την Thread, τότε δεν μπορούμε να κάνουμε extend καμία άλλη κλάση 2. To Runnable interface μας υπαγορεύει να κάνουμε implement μόνο μια μέθοδο (την run) και αποφεύγουμε να κληρονομήσουμε 5 extra overhead της Thread.
6 Κύκλος ζωής ενός thread Start: είναι η κατάσταση στην οποία δημιουργούμε ένα αντικείμενο τύπου Thread και λίγο πριν καλέσουμε την start() Runnable (Ready-to-run): Είναι η στιγμή που καλείται η start() και από εδώ ξεκινά η ζωή ενός thread. Σε αυτή την κατάσταση περιμένει πρόσβαση στην CPU. Ακόμη, σε αυτή την κατάσταση μπορούμε να μεταπέσουμε από τις non-runnable και running Running: Σε αυτή την κατάσταση το thread εκτελείται. Ο scheduler το επιλέγει μέσα από την runnable pool. Dead: Το thread σε αυτή την κατάσταση παύει να εκτελεί και γίνεται join από την διεργασία που το δημιούργησε. Non-runnable state: Kλήση της static: void sleep(long millisecond) throws InterruptedException Περιμένει notification από άλλο thread: final void wait() throws InterruptedException To thread περιμένει για I/O πόρους Περιμένει τον τερματισμό ενός άλλου thread για να τερματίσει (joint completion) Περιμένει μέχρι να κάνει lock κάποιο πόρο. 6
7 Static μέθοδος που τυπώνει το όνομα του thread που την κάλεσαι και το μήνυμα που δέχεται ως παράμετρο Σε περίπτωση που το thread λάβει interrupt από κάποιο άλλο thread Η run ορίζει τον κύκλο ζωής του thread To αντικείμενο t τύπου Thread μας παρέχει μεθόδους για να χειριστούμε το thread που γεννήσαμε H main εκτός από διεργασία αποτελεί και thread και μπορεί να καλέσει την threadmessage
8 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
9 Συγχρονισμός Ζητήματα ασυνέπειας δεδομένων προκύπτουν όταν ένα σύνολο από threads διαμοιράζονται κοινή μνήμη και η πρόσβαση σε αυτή δεν γίνεται συγχρονισμένα. start() thread1 thread2 Shared object Η Java μας παρέχει την μεθοδολογία για να πετύχουμε συγχρονισμό στην πρόσβαση ενός κοινού πόρου. Μεγάλη προσοχή πρέπει να δίνουμε όχι μόνο στο να σχεδιάσουμε σωστά την ελεγχόμενη πρόσβαση, αλλά και την αποφυγή καταστάσεων όπως deadlocks και starvation. 9
10 Συγχρονισμός και μέθοδοι Ορίζουμε ως synchronized τις μεθόδους της κλάσης. Κάθε φορά ένα νήμα θα έχει πρόσβαση σε οποιαδήποτε synchronized μέθοδο ενός δεδομένου αντικειμένου, μπλοκάροντας οποιαδήποτε άλλη κλήση τόσο στην ίδια όσο και στις υπόλοιπες synchronized μεθόδους. Η λειτουργία του synchronized βασίζεται στην ύπαρξη ενός intrinsic lock που διαθέτει το αντικείμενο Ορίζουμε σαν διαμοιραζόμενο πόρο το αντικείμενο t Δημιουργούμε δυο νήματα που ζητούν πρόσβαση στο αντικείμενο μέσα από τις μεθόδους του. Το πρόβλημα που μπορεί να προκύψει από αυτή τη σχεδίαση είναι να προκληθούν φαινόμενα starvation, μιας και απαγορεύουμε την πρόσβαση στον διαμοιραζόμενο πόρο για όλη τη διάρκεια της κλήσης μιας synchronized μεθοδου. Το νήμα 2 είναι σε κατάσταση BLOCKED
11 Συγχρονισμός και block εντολών Στην περίπτωση των synchronized statements πρέπει να δηλώσουμε ως προς ποιό αντικείμενο πάμε να κάνουμε lock. Fine-grained συγχρονισμός. Επικεντρωνόμαστε στον διαμοιραζόμενο πόρο και δεν μπλοκάρουμε την λειτουργία για όλη τη διάρκεια εκτέλεσης της μεθοδου 11
12 Συγχρονισμός με χρήση αντικειμένων Ορισμός αντικειμένων με αποκλειστική χρήση για τον συγχρονισμό διαφορετικών πόρων Η πρόσβαση στον ένα πόρο δεν αποκλείει την ταυτόχρονη προσπέλαση του άλλου 12
13 Ατομική Εκτέλεση (Atomic execution) Ατομική πράξη εκτέλεσης (Atomic action) ορίζουμε την πράξη που εκτελείται επιτυχώς και με τη μια. Δεν μπορεί να σταματήσει στη μέση. Είτε εκτελείται ολόκληρη ή καθόλου. Ακόμα και απλές πράξεις μπορεί να μην είναι ατομικές λόγω του ότι αποσυντίθενται σε επιμέρους (χωρίς να καταλαβαίνει ο χρήστης). Παράδειγμα: double d; d++; Retrieve the current value of d. Increment the retrieved value by 1. Store the incremented value back in d. Παρόλα αυτά οι παρακάτω πράξεις είναι ατομικές: Για primitive variables (εκτος long, double) και references, οι πράξεις read/write ειναι ατομικές. Για όλες τις μεταβλητές που ορίζονται ως volatile (πτητικές) (εδώ συμπεριλαμβάνονται οι long, double). Οι αλλαγές που κάνουμε σε volatile variables είναι αμέσως οράτες σε άλλα νήματα. Ορίζοντας κάτι volatile δεν σημαίνει ότι εξασφαλίζουμε συγχρονισμό!!! 13
14 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
15 Εξωτερικές διεργασίες Η Java σχεδιάστηκε με σκοπό να παρέχει στις εφαρμογές ανεξαρτησία από το περιβάλλον εκτέλεσης. Όμως, υπάρχουν περιπτώσεις που θέλουμε να εκτελέσουμε μια εφαρμογή που να σχετίζεται με το λειτουργικό σύστημα που βρισκόμαστε. Η μεθοδολογία που ακολουθούμε είναι να δημιουργούμε μια νέα διεργασία μέσα στην εφαρμοφή μας που θα εκτελεί platform dependent ενέργειες. Η κλάση Runtime αποτελεί μια διεπαφή με το περιβάλλον που τρέχει η εφαρμογή μας getruntime(): μας επιστρέφει ένα αντικείμενο τύπου Runtime για την ίδια μας την εφαρμογή exec(string[] cmdandαrgs): δημιουργεί νέα διεργασία που εκτελεί την εντολή με παραμέτρους που της περνάμε σαν όρισμα Process p = Runtime.getRuntime().exec("/bin/ls"); Προσοχή!! Η java ανακατευθύνει τα stdin, stdout, stderr. Για να αλληλεπιδράσουμε με την διεργασία πρέπει να χρησιμοποιήσουμε τις μεθόδους getinputstream(), getoutputstream() και geterrorstream() που μας παρέχει το αντικείμενο τύπου Process. 15
16 Παράδειγμα Εκτελούμε την ls που βρίσκεται στον κατάλογο /bin Η getinputstream μας παρέχει πρόσβαση στο output stream της διεργασίας παιδιού. Τα δεδομένα αυτά αποτελούν input stream για την main Κάνουμε buffered το input stream και διαβάζουμε γραμμή-γραμμή τα δεδομένα Κλείνουμε πάντα τις ροές!! 16
17 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
18 Collections Ως Collections ορίζονται αντικείμενα που ομαδοποιούν άλλα αντικείμενα σε μια οντότητα. Τα Collections μας παρέχουν επιπλέον ένα framework για να αποθηκεύσουμε και να διαχειριστούμε τα αντικείμενα αυτά. Ένα collection framework περιλαμβάνει: Interfaces: διεπαφή για να χειριστούμε/προσπελαύνουμε με τον ίδιο τρόπο collections που διαθέτουν διαφορετικές λεπτομέριες υλοποίησης Κλάσεις: περιλαμβάνουν υλοποιημένες κλάσεις των Interfaces. Συνιστούν βιβλιοθήκη για τις εφαρμογές μας. Αλγορίθμους: αλγόριθμοι όπως η αναζήτηση, ταξινόμηση αντικειμένων υλοποιούνται με διαφορετικό τρόπο ως μέθοδοι των διαφόρων κλάσεων. Οι αλγόριθμοι αυτοί είναι πολυμορφικοί μιας και η ίδια μέθοδος διαφέρει ανάλογα με το collection interface. Μερικά από τα χαρακτηριστικά και προτερήματα από την χρήση collection framework: Έτοιμος κώδικας για χρήση από τις εφαρμογές μας Data structures εμπλουτισμένα με αλγόριθμους για γρήγορη προσπέλαση Ενιαίο API για χρήση, ανεξάρτητο από τις λεπτομέριες υλοποίησης 18
19 Collection interfaces Διαφορετικά είδη collection interfaces συνιστούν μια ιεραρχία και καθορίζουν διαφορετικούς τύπους αποθήκευσης και χειρισμού αντικειμένων. Collection: είναι η ρίζα στην ιεραρχία των collections και δεν υλοποιείται από κάποια κλάση. Χρησιμοποιείται συνήθως για την επικοινωνία collections με γενικό τρόπο. Set: ορίζει μια συλογή στην οποία δεν μπορούν να υπάρχουν διπλότυπα αντικείμενα. List: συνιστά μια συλλογή από αντικείμενα που εμφανίζουν μια σειρά. Μπορούμε να προσπελάσουμε ένα αντικείμενο με χρήση κάποιου index. Queue: collection που εμφανίζει τις ιδιότητες της ουράς. Map: collection που αντιστοιχεί κάποιο αντικείμενο με ένα κλειδί. SortedSet: διαθέτει τις ίδιες ιδιότητες με το Set, μόνο που χειρίζεται τα αντικείμενα με σειρά. SortedMap: διαθέτει τις ίδιες ιδιότητες με το Map, καθώς επίσης τα κλειδιά είναι ταξινομημένα. 19
20 Collection implementation Η υλοποίηση των Collection interfaces μπορεί να γίνει με διαφορετικούς τρόπους. Οι υπάρχουσες κατηγορίες συνοψίζονται παρακάτω: General-purpose implementations σε αυτή την κατηγορία βρίσκουμε τις πιο συχνά χρησιμοποιούμενες κλάσεις για collections. Special-purpose implementations κλάσεις για ειδικό σκοπό εμφανίζονται στην κατηγορία αυτή που παρουσιάζουν πολλές φορές μη αποδοτική συμπεριφορά. Concurrent implementations η υλοποίηση που παρέχεται εξασφαλίζει την ταυτόχρονη προσπέλαση των αντικειμένων αυτής της κατηγορίας από πολυνηματικά περιβάλλοντα (java.util.concurrent package). Wrapper implementations χρησιμοποιούνται σε συνδυασμό με general-purpose υλοποιήσεις για να παρέχουν επιπλέον λειτουργικότητα. Convenience implementations collections που είναι σχεδιασμένα με static συμπεριφορά (πχ singleton sets). Abstract implementations παρέχουν abstract κλάσεις για custom υλοποίηση από τον χρήστη. Ποιο συχνή είναι η χρήση general-purpose implementations και συγκεκριμένα Set HashSet, TreeSet, LinkedHashSet List ArrayList, LinkedList Map HashMap, TreeMap, LinkedHashMap Κάθε μια από τις κλάσεις παρέχει υλοποίηση όλων των μεθόδων που έχουν συμφωνηθεί στο interface. Δεν είναι thread-safe. Παρέχουν iterators για προσπέλαση στοιχείων. Είναι Serializable και υποστηρίζουν την clone(). 20
21 Προσπέλαση ενός Collection Υπάρχουν δυο τρόποι για να προσπελάσει κανείς κάποιο collection αντικείμενο, και κατά συνέπεια τα στοιχεία που το αποτελούν, ανεξάρτητα από τις λεπτομέρειες υλοποίησης: Με χρήση της δομής ελέγχου for-each Με χρήση Iterator. Η δομή ελέγχου for-each μας επιτρέπει να προσπελάσουμε με συνέπεια το σύνολο των στοιχείων ενός collection (ή ενός πίνακα array). for (Object o : collection) System.out.println(o); Ο Iterator είναι ένα interface που μας δίνει μεθόδους για να προσπελάσουμε ένα collection καθώς και να διαγράψουμε στοιχεία του. Κάθε Collection υλοποιεί τη μέθοδο iterator() μας επιστρέφει ένα αντικείμενο τύπου Iterator. public interface Iterator<E> { boolean hasnext(); E next(); void remove(); //optional } static void filter(collection<?> c) { for (Iterator<?> it = c.iterator(); it.hasnext(); ) if (!cond(it.next())) it.remove(); } Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
22 Άλλα χρήσιμα χαρακτηριστικά... Bulk operations containsall(): ελέγχουμε αν ένα collection περιέχει όλα τα στοιχεία ενός άλλου. addall(): «συνενώνει» δυο collections. removeall(): διώχνει τα στοιχεία από ένα collection που εμφανίζονται σε ένα άλλο (διαφορά συνόλων). retainall(): η αντίστροφη διαδικασία από το removeall. Clear(): αδειάζουμε ένα collection από τα στοιχεία του. size() Μας επιστρέφει το πλήθος των στοιχείων που διατηρεί το collection toarray() Μέθοδος που μας επιτρέπει να μετατρέψουμε τα στοιχεία ενός collection σε πίνακα από αντικείμενα Collection<String> c Object[] a = c.toarray(); ή και String[] a = (String[]) c.toarray(new String[c.size()]); 22
23 Generics Χαρακτηριστικό που εμφανίστηκε στην Java SE 5. Μας παρέχει 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(); Πως δουλεύει ο compiler με την ύπαρξη generics (Type Erasure) Σβήνει τα generics για να μείνουν raw types, για παράδειγμα ArrayList<String> ArrayList. Εισάγει type casting στα κατάλληλα σημεία μέσα στον κώδικα. Τα generics μας παρέχουν μια ευχέρια για το συντακτικό της γλώσσας και δεν κρατούν πληροφορίες για τον τύπο αντικειμένων κατά την διάρκεια της εκτέλεσης. 23
24 Η χρήση των Generics μέσα από παραδείγματα Set setofrawtype = new HashSet<String>(); setofrawtype = new HashSet<Integer>(); Set<Object> setofanytype = new HashSet<Object>(); setofanytype.add("abc"); setofanytype.add(new Float(3.0f)); Set<?> setofunknowntype = new LinkedHashSet<String>(); setofunknowntype = new LinkedHashSet<Integer>(); Set<String> setofstring = new HashSet<String>(); setofstring = new LinkedHashSet<String>(); Set<Object> SetOfObject = new HashSet<String>(); //compiler error 24
25 Νήματα (Threads) στην Java Συγχρονισμός Εξωτερικές διεργασίες Collections & Generics Διαχείριση σφαλμάτων στην Java Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
26 Σφάλματα στην Java (1/2) Τα σφάλματα (Bugs) είναι το πλέον κοινότυπο πρόβλημα ενός προγράμματος Προγραμματιστικά λάθη Λάθη σχεδιασμού Λάθος είσοδος δεδομένων Αστοχία υλικού Μη ελεγχόμενοι, εξωγενείς παράγοντες Κάθε προγραμματιστής πρέπει να διαχειρίζεται τις καταστάσεις: Στην C: Κάθε συνάρτηση γυρνά κάποια τιμή ενώ παράλληλα η perror τυπώνει το σφάλμα που συνέβη. Στην Java: Χρήση εξαιρέσεων (exceptions). Υπάρχουν δύο είδη, οι ελεγχόμενες εξαιρέσεις (checked) και μη ελεγχόμενες (unchecked). Διάλεξη 4 26 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
27 Σφάλματα στην Java (2/2) Κατά την εκτέλεση ενός προγράμματος όταν συμβεί σφάλμα σε κάποια συνάρτηση που εκτελείται, αυτή δημιουργεί ένα αντικείμενο (exception object) και το παραδίδει στο runtime system (κάνει throw ένα exception). Ένα exception αντικείμενο περιέχει πληροφορίες για το είδος του σφάλματος που συνέβει, την κατάσταση του προγράμματος μας τη στιγμή του exception κ.α... To runtime system ψάχνει για κάποιο handler ορισμένο από τον προγραμματιστή που διαχειρίζεται αυτό το σφάλμα (κάνει catch το exception). Η αναζήτηση ξεκινά ιεραρχικά από την τρέχουσα συνάρτηση που συνέβει το σφάλμα και φτάνει μέχρι την main. Throws exception Forwards exception method3() method2() Call stack trace Catch exception method1() main() Διάλεξη 4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών 27 Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
28 Κατηγορίες exceptions Η Java μας παρέχει τριών ειδών exceptions. Όλα έχουν ως υπερκλάση την java.lang.throwable Checked exceptions: Error: Ορίζουν exceptional conditions όπου μια εφαρμογή θα πρέπει να κάνει recover. Υπόκεινται στο Catch or Specify Requirement, μιας και το πρόγραμμα μας θα πρέπει να διαθέτει handlers για να τα κάνει catch και να δώσει προς τον χρήστη κάποιο διαγνωστικό μήνυμα. Όλα τα exceptions θεωρούνται checked, εκτός από που ανήκουν στις κλάσεις Error, RunTimeException και τις αντίστοιχες υποκλάσεις τους Ορίζουν exceptional conditions που οφείλονται σε εξωτερικούς από την εφαρμογή παράγοντες και η εφαρμογή συνήθως δεν μπορεί να προβλέψει και να κάνει recover. Συνήθως οι λόγοι είναι αστοχία στο hardware. Δεν υπόκεινται στο Catch or Specify Requirement και το πιο πιθανό είναι να τυπωθεί το stack trace μέχρι το σημείο που συνέβει το exception και το πρόγραμμα μας να τερματίσει. Runtime exceptions/unchecked exceptions: Ορίζουν exceptional conditions που οφείλονται σε λογικά λάθη του προγραμματιστή. Το πιο δημοφηλές exception σε αυτή την κατηγορία είναι το NullPointerException!! Δεν υπόκεινται στο Catch or Specify Requirement και ανήκουν στην κλάση RunTimeException Διάλεξη 4 28 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
29 Exception handler Εάν δεν θέλουμε να διαχειριστούμε κάποιο/α ExceptionType, τότε εισάγουμε στο header της εκάστοτε συνάρτησης την δήλωση throw ExceptionType Η 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 {... } Περικλύω μέσα στο try block κομμάτι της εφαρμογής μου που υπάρχει πιθανότητα να γίνει throw ένα exception. Κάθε catch block ορίζει έναν exception handler, για ένα δεδομένο τύπο exception. Συνήθως τυπώνουν διαγνωστικό μήνυμα προς το χρήστη. Το finally block εκτελείται πάντα, είτε συμβεί exception είτε όχι. Συνήθως γράφουμε σ αυτό clean up κώδικα. 29
30 Η ανώτερη ιεραρχικά κλάση διαχειρίζεται και τα 2 πιθανά σφάλματα. Το σφάλμα θα το διαχειριστεί η καλούσα μέθοδος. Γιατί θα έχουμε πρόβλημα εδώ; Χρήση 2 διαδοχικών exceptions για να καλύψουμε τις περιπτώσεις απώλειας του αρχείου και σφάλματος εγγραφής. Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
31 Διαχειριζόμαστε το exception όπως το ζητά η αντίστοιχη μέθοδος. Η χρήση του stack trace που μας δίνει κάθε exception επιτρέπει την αποσφαλμάτωση του προγράμματός μας. Η διαδικασία είναι η εξής: 1. Αναζητούμε την πρώτη δικιά μας κλήση που δημιούργησε πρόβλημα (από πάνω προς τα κάτω). 2. Ανατρέχουμε στην αντίστοιχη γραμμή του κώδικά μας. Το σημείο αυτό έχει πρόβλημα. 3. Ανάλογα με το πρόβλημα ελέγχουμε την είσοδο ή την έξοδο της εντολής. Σφάλμα στην γραμμή 53! Μπορούσε να μην εμφανιστεί αν δεν ζητούσαμε εκτύπωση. Σφάλμα στην γραμμή 58! Προέρχεται από λάθος κλήση στην γραμμή 38. Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
32 Αποσφαλμάτωση με χρήση Exceptions - Πλεονεκτήματα Η κλάση exceptions προσφέρει την δυνατότητα εκτύπωσης των κλήσεων που οδήγησαν στο συγκεκριμένο σφάλμα Μέθοδος printstacktrace(); Τυπώνονται οι διαδοχικές κλήσεις μεθόδων που οδήγησαν στο συγκεκριμένο σφάλμα. ΔΕΝ ΕΙΝΑΙ ΚΑΛΗ ΠΡΑΚΤΙΚΗ: Να χρησιμοποιείται η ανώτερη ιεραρχικά κλάση για την διαχείριση όλων των σφαλμάτων (δηλαδή η Exception). Να τοποθετείται throws στην μέθοδο main. Μερικά από τα προτερήματα που μας παρέχει η χρήση exceptions: Διαχωρισμός του κώδικα που κάνει exception handling από τον κώδικα της εφαρμογής μας. Διαχείρηση ενός exception υψηλότερα στο call stack, απλά με την χρήση της δήλωσης throws. Κατηγοριοποίηση και χειρισμός των exceptions σε ομάδες λόγω της ύπαρξης ιεραρχίας κλάσεων (πχ τα exceptions FileNotFoundException και InterruptedIOException μπορούν να αντικατασταθούν από το IOException) Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διάλεξη Εισαγωγή στη Java, Μέρος B
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος B Collections & Generics Διαχείριση σφαλμάτων στην
Διαβάστε περισσότεραΔιάλεξη Εισαγωγή στη Java, Μέρος Γ
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες Χειμερινό Εξάμηνο 2017-2018 Διάλεξη Εισαγωγή στη Java, Μέρος Γ Νήματα (Threads) στην Java Συγχρονισμός Producer-Consumer
Διαβάστε περισσότεραNATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis
Διαχείριση Δικτύων Nikolas Bompetsis nbompetsis@di.uoa.gr Εισαγωγική Διάλεξη Java Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Τεχνολογία Java Collections & Generics Διαχείριση σφαλμάτων Ροές Δεδομένων
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΧειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:
Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που
Διαβάστε περισσότεραΕιδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΟρισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα
ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων
Διαβάστε περισσότεραιάλεξη 3 Τµήµα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισµικού Χειµερινό Εξάµηνο ιάλεξη 3
ιάλεξη 3 Εξωτερικές διεργασίες Collections & Generics ιαχείριση σφαλµάτων στην Java Ροές εδοµένων Χρήσιµα interfaces - Serializable, Comparable Properties & NetworkInterface Regular expressions ιάλεξη
Διαβάστε περισσότεραΕιδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΚλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΕργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραΚλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΚαρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA
Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά
Διαβάστε περισσότεραιάλεξη 5 Νήµατα (Threads) στην Java Συγχρονισµός Singleton Pattern Producer-Consumer problem Γραφικάµε Java - JavaFX
Νήµατα (Threads) στην Java Συγχρονισµός Singleton Pattern Producer-Consumer problem Γραφικάµε Java - JavaFX Τµήµα Πληροφορικής και Τηλεπικοινωνιών 1 Νήµατα (Threads) στην Java Συγχρονισµός Singleton Pattern
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 3: JAVA: ΕΞΑΙΡΕΣΕΙΣ, ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ, ΝΗΜΑΤΑ Νήματα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΝΗΜΑΤΑ
Διαβάστε περισσότεραΕξαιρέσεις στην Java EXCEPTIONS IN JAVA
Εξαιρέσεις στην Java EXCEPTIONS IN JAVA Τι είναι μια εξαίρεση Έστω το κάτωθι τμήμα κώδικα: int age = Integer.parseInt(input); Προφανώς αναμένουμε έναν αριθμό (ακέραιο) από το χρήστη που αντιπροσωπεύει
Διαβάστε περισσότεραΚατανεμημένα Συστήματα
Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 13: Ταυτόχρονος Προγραμματισμός Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν
Διαβάστε περισσότερα6. Εξαιρέσεις στη γλώσσα Java
6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις
Διαβάστε περισσότεραJava Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7
Περιεχόμενα 1 Εισαγωγικές Έννοιες...12 1.1 Το Αντικείμενο στην καθημερινότητα...12 1.2 Το Αντικείμενο στον Προγραμματισμό...12 1.3 Επικοινωνία αντικειμένων...13 1.4 Κλάση (class) αντικειμένων...14 1.4.1
Διαβάστε περισσότεραWeek. 6: Java Collections
Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται
Διαβάστε περισσότεραΠρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη
9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή
Διαβάστε περισσότεραΚεφάλαιο 1. Νήματα (Threads). Time Sharing
Κεφάλαιο 1. Νήματα (Threads). Time Sharing Η επεξεργαστική ισχύς είναι ένας πόρος περιορισμένος (ιδιαίτερα στις προηγούμενες δεκαετίες) ο οποίος θέλουμε να εξυπηρετεί ταυτόχρονα πολλές εργασίες. Στους
Διαβάστε περισσότεραH κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος
H κλάση ArrayList Γιώργος Θάνος Γραφείο Γ ος όροφος Γκλαβάνη 37 Εισαγωγικά Η κλάση ArrayList δίνει την δυνατότητα να αποθηκεύσουμε δεδομένα οποιουδήποτε τύπου σε μία δομή δεδομένων η οποία επιτρέπει τα
Διαβάστε περισσότεραΤ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων
Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται
Διαβάστε περισσότεραΓενικά (για τις γραπτές εξετάσεις)
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΕργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση
Διαβάστε περισσότεραΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα
ΕΞΑΙΡΕΣΕΙΣ Εξαίρεση (Exception): Ένα συµβάν κατά τον χρόνο εκτέλεσης (π.χ. αδυναµία ανοίγµατος αρχείου ή ανάγνωσης πληροφορίας, µη ύπαρξη αντικειµένου στη στοίβα) που απαιτεί ειδικό χειρισµό. Ονοµάζεται
Διαβάστε περισσότεραΠρογραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές
Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές Multithreading Μulti-processing Πολλές διεργασίες ταυτόχρονα Κάθε διεργασία έχει το δικό της χώρο μνήμης ή ενδέχεται όλες να μοιράζονται και κάποιο
Διαβάστε περισσότεραΤο πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.
Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15
Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)
Διαβάστε περισσότεραΛειτουργικά Συστήματα (Λ/Σ)
Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Ο κώδικας δεν εκτελείται «μόνος του» Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότεραΕισαγωγικά & Βασικές Έννοιες
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΕισαγωγικά & Βασικές Έννοιες
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη
Διαβάστε περισσότερα11β Δομικά πρότυπα σχεδίασης
11β Δομικά πρότυπα σχεδίασης Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Δομικά πρότυπα
Διαβάστε περισσότεραWeek 7: Java Collection Classes
Week 7: Java Collection Classes Υλοποιήσεις Εβδοµάδα 7: Κλάσεις συλλογών δεδοµένων στην Java Τύποι συλλογών δεδοµένων Τεχνικές υλοποίησης linked Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης,
Διαβάστε περισσότεραΒασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1
Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Μονονηματική / πολυνηματική εκτέλεση Μονονηματικό μοντέλο εκτέλεσης (συμβατικό) Οι εντολές του κώδικα εκτελούνται σειριακά Ένα μοναδικό νήμα εκτέλεσης (execution
Διαβάστε περισσότερα$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).
Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία
Διαβάστε περισσότεραΠρογραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων
Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Διαχείριση λαθών Εξαιρέσεις Δημιουργία Ανίχνευση Διαχείριση Βασικοί τύποι εξαιρέσεων Δημιουργία τύπων εξαίρεσης 2 Αντιμετώπιση λαθών Υπάρχουν λάθη χρόνου
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε
Διαβάστε περισσότεραΔιεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1
Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 22: Συγχρονισμός (Concurrency) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διεργασίες (processes) και Νήματα (threads) - Συγχρονισμός Νημάτων, Προβλήματα, Λύσεις - Οι τροποποιητές
Διαβάστε περισσότεραΤο παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:
Εισαγωγή στη γλώσσα προγραμματισμού Java 41 6. Threads Πολλές γλώσσες προγαμματισμού όπως και η Java διαθέτουν εργαλεία για την υλοποίηση threads στα προγράμματά τους. Αυτές οι γλώσσες καλούνται multithreading
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων)
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 10 Exceptions handling (Χειρισμός εξαιρέσεων)
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Διαβάστε περισσότεραΧειρισμός Εξαιρέσεων EXCEPTIONS IN JAVA
Χειρισμός Εξαιρέσεων EXCEPTIONS IN JAVA Τι είναι μια εξαίρεση Έστω το κάτωθι τμήμα κώδικα: int age = Integer.parseInt(input); Προφανώς αναμένουμε έναν αριθμό (ακέραιο) από το χρήστη που αντιπροσωπεύει
Διαβάστε περισσότεραΝήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1
Νήµαταστην Java Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων Κατανεµηµένα Συστήµατα 11-1 Νήµαταστην Java γεννηθείσα notify notifyall έτοιµη start εκπνοή
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 3: JAVA: ΕΞΑΙΡΕΣΕΙΣ, ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ, ΝΗΜΑΤΑ Εξαιρέσεις ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΕΞΑΙΡΕΣΕΙΣ
Διαβάστε περισσότεραΕισαγωγή στην Java. Module 9: Threads. Prepared by Chris Panayiotou for EPL /03/2004
Εισαγωγή στην Java Module 9: Threads 15/03/2004 Prepared by Chris Panayiotou for EPL 602 1 Εισαγωγή στα Threads Συχνά χρειάζεται, να υπάρχουν ανεξάρτητες διεργασίες σε ένα πρόγραµµα separate, independently-running
Διαβάστε περισσότεραΤο λειτουργικό σύστημα. Προγραμματισμός II 1
Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Διαβάστε περισσότεραΠεριεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5
Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών
Διαβάστε περισσότεραΔομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.
Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η
Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος
Διαβάστε περισσότεραΥποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Επικοινωνία με περιφερειακά Αρτηρία εισόδου-εξόδου, διευθύνσεις, εγγραφές αναγνώσεις Διαδικασία εξόδου έλεγχος κατάστασης περιφερειακού περίμενε
Διαβάστε περισσότεραΛειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα
Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 4: Διεργασίες Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα
Διαβάστε περισσότεραΤο λειτουργικό σύστημα. Προγραμματισμός II 1
Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός
Αντικειμενοστραφής Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 7: Εξαιρέσεις (Exceptions), Εντοπισμός Σφαλμάτων (Debugging) Δρ. Χαράλαμπος Ζ. Πατρικάκης
Διαβάστε περισσότεραΛειτουργικά Συστήματα Η/Υ
Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 4 «Αρχιτεκτονικές ΛΣ» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 1. Μονολιθικά συστήματα Αρχιτεκτονικές ΛΣ 2. Στρωματοποιημένη αρχιτεκτονική 3. Αρχιτεκτονική
Διαβάστε περισσότεραΕξαιρέσεις. try, catch, finally, throw, throws
Εξαιρέσεις try, catch, finally, throw, throws Εξαιρέσεις Πολλές φορές όταν προγραµµατίζουµε σε κάποια γλώσσα προγραµµατισµού συµβαίνουν διάφορα σφάλµατα που οφείλονται είτε σε διάφορες αιτίες όπως σε λάθη
Διαβάστε περισσότεραΕισαγωγή εκτελέσιμου κώδικα σε διεργασίες
0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε
Διαβάστε περισσότερα2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12
Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
Διαβάστε περισσότεραΕισαγωγή στην Πληροφορική
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά
Διαβάστε περισσότεραΚληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1
Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί
Διαβάστε περισσότεραΠρογραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται
Διαβάστε περισσότερα. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014
.. Μεθοδολογία Προγραμματισμού Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραpublic void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);
Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας
Διαβάστε περισσότεραΔιαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING
Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING Επιλογή δομής δεδομένων Κριτήρια: Μέγεθος του προβλήματος Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Χειρισμός Εξαιρέσεων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ
Διαβάστε περισσότεραΔομές Δεδομένων - Εργαστήριο 2. Λίστες
Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές
Διαβάστε περισσότεραΕπιτεύγµατα των Λ.Σ.
Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση
Διαβάστε περισσότεραΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java
JAVA, NETBEANS ΑΝΑΚΕΦΑΛΑΙΩΣΗ Τα βασικά για την γλώσσα Java Java portability Το μεγαλύτερο πλεονέκτημα της Java είναι η μεταφερσιμότητα: ο κώδικας μπορεί να τρέξει πάνω σε οποιαδήποτε πλατφόρμα. Write-Once-Run-Anywhere
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραΤο λειτουργικό σύστημα. Προγραμματισμός II 1
Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα
Διαβάστε περισσότεραΠροβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU
Διαβάστε περισσότεραΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής
Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Διαβάστε περισσότεραΔιάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))
Διαβάστε περισσότεραΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη
ΣΕΜΙΝΑΡΙΟ JAVA 5 η ιάλεξη ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓ/ΣΜΟΣ & ΣΦΑΛΜΑΤΑ Εnumerators Κληρονοµικότητα Exceptions try / catch / finally Interfaces ENUMERATORS ( ENUM ) Τα enum είναι ένα εργαλείο για να οριστεί
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότεραιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Διαβάστε περισσότερα(Διαφάνειες Νίκου Βιδάκη)
(Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής
Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Τίτλος Διατριβής Java Collections Framework - Μελέτη αποδοτικότητας των θεμελιωδών τους λειτουργιών. Java Collections
Διαβάστε περισσότεραΠληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος
Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο 2016 2017 Καθηγητής Δ. Γουνόπουλος Άσκηση 2 - Εξωτερική Ταξινόμηση Παράδοση: 20/01/2017 Σκοπός της εργασίας αυτής
Διαβάστε περισσότεραΠρογραμματισμός Ταυτόχρονος Προγραμματισμός
Εισαγωγικά & Βασικές Έννοιες ΙΙΙ 1 lalis@inf.uth.gr Γιατί πολλές διεργασίες/νήματα; Επίπεδο εφαρμογής Καλύτερη δόμηση κώδικα Αποφυγή μπλοκαρίσματος / περιοδικών ελέγχων Φυσική έκφραση παραλληλισμού Επίπεδο
Διαβάστε περισσότεραHelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1
HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότερα