Προγραμματισμός ΙΙ (Java) Επανάληψη

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Προγραμματισμός ΙΙ (Java) Επανάληψη"

Transcript

1 Προγραμματισμός ΙΙ (Java) Επανάληψη

2 Ύλη Οι διαφάνειες των διαλέξεων Τα παραδείγματα κώδικα στο «βοηθητικό υλικό» Tα κεφάλαια 8-11,14,17,20,22,25,26,28 από το βιβλίο (Deitel & Deitel 8 η έκδοση) ή Tα κεφάλαια 8-11, 13,14,17,19,22,23,25 από το βιβλίο (Deitel & Deitel 6 η έκδοση) 2

3 Βαθμολογία Βαθμολογία : Τελική εξέταση:70% [βαθμός >=5] Εργασίες:30% [βαθμός >=5] Bonus μέχρι 15% Τελική εξέταση: με ανοιχτό βιβλίο και σημειώσεις μαθήματος Ερωτήσεις πολλαπλών απαντήσεων + συγγραφή κώδικα Κατοχύρωση: Εργασίες δίνετε μόνο μέσα στο εξάμηνο και ο βαθμός τους κατοχυρώνεται για το Σεπτέμβριο Τίποτε δεν κατοχυρώνεται για επόμενη χρονιά! 3

4 1 ο μάθημα Κλάσεις Δήλωση κλάσης, Δήλωση χαρακτηριστικών, μεθόδων Αντικείμενα Δημιουργία αντικειμένου Κλήση μεθόδων, χαρακτηριστικών Έλεγχος πρόσβασης (ενθυλάκωση) 4

5 Ορισμός κλάσης class Human { boolean alive; int age; String name; void born() { alive = true; void speak() { System.out.println( Hi! ); void incr_age() { age = age +1; Δεδομένα Λειτουργίες Μέθοδοι Στόχο έχουν να χειρίζονται τα δεδομένα, να τα τροποποιούν ή να επιστρέφουν τις τιμές αυτών, σε όποιον τις ζητήσει Κλήση μεθόδου = Αποστολή Μηνύματος 5

6 Κλήση μεθόδων Μια μέθοδος καλείται από κάποιο αντικείμενο (συνήθως) π.χ. Human John= new Human(); John.born(); John.speak(); John.setAge(10); Μπορούμε να αναφερθούμε απευθείας στα δεδομένα του αντικειμένου. John.age=15; int z=john.getage(); 6

7 Τα όρια μιας κλάσης Υπάρχουν τρεις τύποι πρόσβασης στα μέρη μιας κλάσης: public, private, και protected. Δημόσια (public), τα μέρη είναι διαθέσιμα σε όλους Ιδιωτική (private), τα μέρη είναι διαθέσιμα μόνο στην ίδια την κλάση και τις λειτουργίες της Προστατευμένη (protected), τα μέρη είναι διαθέσιμα στην κλάση και σε όσες κλάσεις την κληρονομούν. Δεδομένη (default) πρόσβαση, όταν δεν δηλώνεται κάποια από τις προηγούμενες, τα μέρη είναι διαθέσιμα στην κλάση και σε όλες τις υπόλοιπες κλάσεις της ίδιας εφαρμογής (του ίδιου package) 7

8 Νέος ορισμός κλάσης class Human { private boolean alive; private int age; void Human() { alive = true; age = 0 public int getage() { return age; public void setage(int a) { age=a; void speak() { System.out.println( Hi! ); void incr_age() { age = age +1; 8

9 Συμπερασματικά Σε ένα πρόβλημα: Προσπαθώ να δω: ποια αντικείμενα εμπλέκονται, τι δεδομένα έχει το καθένα από αυτά και ποιες λειτουργίες επιτελεί και στη συνέχεια ορίζω τις αντίστοιχες κλάσεις Σε μια κλάση Ορίζω χαρακτηριστικά: name, surname, age Ορίζω μεθόδους πρόσβασης: getname(), setname().. Ορίζω άλλες βοηθητικές μεθόδους Στο τέλος Ορίζω μια κλάση με μια μέθοδο main() Η κλάση αυτή εκτελεί το πρόγραμμά μου. Μόνο που δεν περιέχει όλη τη λύση. Κάποια πράγματα τα αναλαμβάνουν τα αντικείμενα 9

10 2 ο μάθημα Static και Final Μέθοδοι Πέρασμα αντικειμένου σε μέθοδο Υπερφόρτωση μεθόδων Μέθοδοι κατασκευαστές Υπερφόρτωση κατασκευαστών Πακέτα Βοηθητικά πακέτα της Java Σύνθεση και κληρονομικότητα 10

11 Τελεστής ανάθεσης Δημιουργώντας ένα αντικείμενο, ουσιαστικά δεσμεύουμε μνήμη και δημιουργούμε μια αναφορά σε αυτή. Complex c1 = new Complex(); Complex c2 = new Complex(); c1.setreal(9); c1.setimag(47); c2=c1; Όταν αναθέσουμε ένα αντικείμενο (c1) σε ένα άλλο (c2), ουσιαστικά έχουμε δύο αναφορές στην ίδια θέση μνήμης (αυτή που δεσμεύτηκε για το c1) c2 = c1; To φαινόμενο αυτό ονομάζεται aliasing (συνωνυμία) public class Complex { private double x,y; public double real() { return x; public double imag() { return y; public void setreal(double u) {x=u; public void setimag(double v) {y=v; c2 c1 x=9.0, y=47.0 public double real() public double imag() public void setreal(double u) public void setimag(double v) 11

12 H equals στις κλάσεις χρήστη Ορίζοντας τη μέθοδο equals καθορίζουμε τον τρόπο με τον οποίο θα συγκρίνονται τα αντικείμενα της κλάσης μας public class Complex { private double x,y; public boolean equals(complex c) { if (x==c.x && y==c.y) return true; else return false; 12

13 static γνωρίσματα- μέθοδοι Αν ένα γνώρισμα είναι κοινό για όλα τα αντικείμενα μιας κλάσης τότε δεσμεύουμε μια φορά χώρο για όλα τα αντικείμενα. Κατά τη δήλωση της κλάσης, τη δηλώνουμε static. Το γνώρισμα αυτό θα δημιουργηθεί μία φορά μόλις δηλωθεί το πρώτο αντικείμενο αυτής της κλάσης και θα μπορεί να χρησιμοποιείται από κάθε αντικείμενο της ίδιας κλάσης. π.χ. static float bonus; Αν θέλουμε να αναφερθούμε στο γνώρισμα αυτό, μπορούμε απ ευθείας μέσω της κλάσης: π.χ. Human.bonus=100,00; Παρόμοια ισχύουν και για τις μεθόδους. π.χ. static setbonus(float b) Human.setBonus(200,00); Τα static μέλη μπορούμε να τα καλούμε είτε απ ευθείας μέσω της κλάσης είτε μέσω των αντικειμένων που δημιουργούμε. Οι static μέθοδοι έχουν πρόσβαση στα static μέλη της κλάσης. 13

14 Final γνωρίσματα Πρακτικά: final = μόνο για ανάγνωση Αν ένα γνώρισμα δηλωθεί final, τότε λειτουργεί ως σταθερά που πρέπει να αρχικοποιηθεί και δεν αλλάζει τιμή Αν η παράμετρος εισόδου μιας μεθόδου δηλωθεί final τότε δεν μπορεί να αλλάξει τιμή στο σώμα της μεθόδου. public void sethour(final int hrs) Αν ένα αντικείμενο δηλωθεί final τότε το όνομα του αντικειμένου θα αναφέρεται πάντα στο ίδιο αντικείμενο. Αν μια κλάση δηλωθεί final τότε δεν μπορεί να κληρονομηθεί από άλλη κλάση. 14

15 Τελικοί (Final) μέθοδοι Οι final μεταβλητές γίνονται σταθερές Ανατίθεται ακριβώς μία φορά και δε μπορεί να αλλάξει Οι final μέθοδοι δεν είναι overridable Η κλάση γονέα τις ορίζει μία φορά και δεν ορίζονται ξανά στις υπο-κλάσεις Όλες οι private μέθοδοι είναι έμμεσα τελικές (implicitly final) Οι μέθοδοι δεν μπορούν να είναι μαζί abstract και final - γιατί; Εξασφαλίζουμε ότι η συμπεριφορά διατηρείται και δεν μπορεί να τις αλλάξει κανείς στις υπο-κλάσεις 15

16 Final κλάσεις Οι final κλάσεις δεν κληρονομούνται Ολοι οι μέθοδοι της γίνονται έμμεσα τελικές Οταν θέλουμε να είμαστε σίγουροι ότι κανείς δεν θα τις κληρονομήσει public final class String{.. Οι final μέθοδοι και κλάσεις δεν χρησιμοποιούνται συχνά 16

17 Δομή μεθόδου πρόσβαση τύποςεπιστροφής όνομαμεθόδου (τυπος1 παράμετρος1, ) { public double adddouble (double num1, double num2) { return num1+num2; 17

18 Μέθοδοι class Human { boolean alive; int age; String name; void speak(string phrase) { System.out.println( Hi! ); System.out.println( My name is +name); System.out.print( You asked me to say: ); System.out.println(phrase); int getageafter(int months){ int years=months/12; int ageafter=age+years; return ageafter; void setage(){ Scanner keyboard=new Scanner(System.in); System.out.println( How old are you? ); age=keyboard.nextint(); Input parameters System.in phrase months System.in attribute method name speak age getageafter age setage System.out void name, phrase return type return type System.out void 18

19 Υπερφόρτωση μεθόδων Σε μια τάξη μπορούμε να ξαναχρησιμοποιήσουμε το ίδιο όνομα για μεθόδους που έχουν ελαφρώς διαφορετική συμπεριφορά Διαφορετικούς τύπους ορισμάτων Διαφορετικό πλήθος ορισμάτων void speak (String phrase); void speak (); void speak (int times, String phrase); 19

20 Μέθοδος κατασκευαστής Βασικός ή κενός κατασκευαστής: Μια public μέθοδος με όνομα ίδιο με αυτό της τάξης, χωρίς παραμέτρους και τύπο επιστροφής. public Human(){ Δεσμεύει μνήμη για το αντικείμενο και κάνει τις αρχικοποιήσεις Αν τον ορίσουμε στην τάξη, μπορούμε να ορίσουμε τις αρχικοποιήσεις που θα κάνει Μπορούμε να ορίσουμε άλλους κατασκευαστές. Οπότε αναιρείται ο βασικός. Αν θέλουμε και το βασικό κατασκευαστή πρέπει υποχρεωτικά να τον ορίσουμε. 20

21 Παράδειγμα (1) Ορισμός ενός καλύτερου κατασκευαστή για τη Human public Human (String tempname, String tempsurname, int tempage) { name=tempname; surname=tempsurname; age=tempage; Αν ορίσουμε μόνο αυτόν τον κατασκευαστή τότε στη demo θα μπορούμε να χρησιμοποιούμε μόνο αυτόν. Human h1=new Human(); // βγάζει λάθος 21

22 Παράδειγμα (2) Ορισμός του βασικού κατασκευαστή στη Human public Human(){ name= ; surname= ; age=0; Διαφορετικά τα name και surname σε κάθε νέο Human είναι null. Human h1=new Human(); System.out.println(h1.name); //τυπώνει null 22

23 Η λέξη this Χρησιμοποιείται μέσα σε μια μέθοδο για να αναφερθούμε στο αντικείμενο για το οποίο καλείται η μέθοδος. Το this είναι μια αναφορά στο αντικείμενο στο οποίο βρισκόμαστε. Αν για παράδειγμα μια μέθοδος της τάξης Human έπρεπε να επιστρέφει το ίδιο το αντικείμενο: Human increaseage(){ age++; return this; Human h1=new Human( Nikos, Nikolaou,20); int x=h1.increaseage().increaseage().getage(); 23

24 Επαναχρησιμοποίηση (σύνθεση+κληρονομικότητα) public class Employee extends Human{ //κληρονομικότητα String position; Address residence; //σύνθεση void setposition(string temp){position=temp; String getposition () {return position; void setaddress(address tempad){residence=tempad; Address getaddress() {return residence; main(..){ Employee e1=new Employee(); Address a1=new Address(); a1.street= Patision ; e1.setaddress(a1); street number state postcode Name Surname Age residence position Human Employee 24

25 3ο Μάθημα Δυναμικές δομές ArrayList Πολυμορφισμός - Polymorphism Αφηρημένες κλάσεις Abstract Classes Διεπαφές - Interfaces 25

26 Η κλάση ArrayList Ίδιες ιδιότητες με τη Vector Προτείνεται από τους δημιουργούς της Java ArrayList list = new ArrayList(); add(object searchkey), get(int position) Iterator it = list.iterator(); StringBuffer buf = new StringBuffer(); while (it.hasnext()) buf.append( it.next()).append( " " ); System.out.println(buf.toString()); 26

27 Άλλες μέθοδοι της ArrayList void clear(); //αδειάζει τη λίστα Object clone(); //δημιουργεί αντίγραφο boolean addall(collection c);//προσθέτει όλα τα //αντικείμενα της c στη λίστα boolean contains(object elem); // αναζητά το elem int indexof(object elem); //βρίσκει την θέση 1 ης //εμφάνισης Object remove(int index); //διαγράφει στοιχείο Object[] toarray();// επιστρέφει τα στοιχεία της //λίστας σε πίνακα αντικειμένων 27

28 H κλάση Arrays της java.util Γέμισμα πίνακα με μια τιμή int[] a6=new int[5]; Arrays.fill(a6, 23); αντιγραφή int[] i = new int[25]; int[] j = new int[25]; Arrays.fill(i, 47); Arrays.fill(j, 99); System.arraycopy(i, 0, j, 0, i.length); //static μέθοδος της Java Σύγκριση τιμών Arrays.equals(i,j); //ελέγχει ισότητα στα περιεχόμενα των πινάκων Ταξινόμηση Arrays.sort(a6); 28

29 Δομές και κληρονομικότητα Σε ένα array με αντικείμενα Human μπορούμε να βάλουμε και αντικείμενα Employee (upcasting) Human[] group=new Human[]; group[0]=new Human(); group[1]=new Employee(); Στα αντικείμενα αυτά μπορούμε χωρίς κίνδυνο να καλέσουμε χαρακτηριστικά και μεθόδους της Human. Για να καλέσουμε χαρακτηριστικά και μεθόδους της Employee από κάποιο αντικείμενο πρέπει πρώτα να το μετατρέψουμε σε Employee (downcasting) (Employee)group[1].getPosition(); (Employee)group[0].getPosition(); //Class Cast Exception 29

30 Η λύση - RTTI Για τη μέθοδο tostring που υπάρχει και στις δύο τάξεις, το πρόβλημα λύνεται αυτόματα. Χωρίς να κάνουμε downcasting. group[1].tostring(); group[0].tostring(); Αν βρει αντικείμενο της τάξης Human καλεί την tostring της Human. Αν βρει αντικείμενο της τάξης Employee καλεί αυτόματα την αντίστοιχη tostring. Run Time Type Identification Καθορισμός τύπου την ώρα εκτέλεσης 30

31 Δομές αντικειμένων Σε ArrayList και Vector αποθηκεύουμε αντικείμενα διαφόρων τάξεων που όλες κληρονομούν από την ίδια βασική τάξη. Η βασική τάξη έχει μεθόδους και οι παράγωγες τάξεις τις υπερβαίνουν Όταν ανακτούμε ένα αντικείμενο από τη δομή το μετατρέπουμε στη βασική τάξη και καλούμε τις μεθόδους του. Ανάλογα με τον τύπο του αντικειμένου παίρνουμε και άλλη συμπεριφορά - Πολυμορφισμός 31

32 Αφηρημένες τάξεις abstract classes Μια abstract τάξη βρίσκεται στην κορυφή μιας ιεραρχίας τάξεων και συγκεντρώνει λειτουργίες. Οι υπόλοιπες τάξεις της ιεραρχίας υλοποιούν τις λειτουργίες αυτές με το δικό τους τρόπο Δεν μπορούμε να φτιάξουμε αντικείμενα abstract τάξεων μπορούμε όμως να έχουμε αναφορές σε abstract τάξεις. 32

33 Interface To interface είναι μια συλλογή από υπογραφές μεθόδων (δεν υπάρχουν στιγμιότυπα, ούτε υλοποιήσεις των μεθόδων) Περιγράφει πρωτόκολλο/συμπεριφορά αλλά όχι υλοποίηση Όλες οι μέθοδοι του είναι public και abstract (ποτέ static) Όλες οι μεταβλητές είναι static και final Μια κλάση υλοποιεί (implements) ένα interface 33

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

35 Κληρονομικότητα και ορατότητα -residence : Address -position : String #bonus : double Employee (abstract) +(abstract) getsalary() : double +getresidence() : Address +setresidence(in getresidence : Address) : void +getposition() : String +setposition(in position : String) : void +worksfor(in manager : Manager) : void - private # protected + public Manager -weeklysalary : double +Manager() +getsalary() : double PieceWorker -wageperpiece : double -quantity : int +PieceWorker() +getsalary() : double HourlyWorker -wage : double -hours : int +HourlyWorker() +getsalary() : double 35

36 4 ο Μάθημα Ρεύματα Προκαθορισμένα ρεύματα εισόδου/εξόδου Η τάξη File - Οργάνωση αρχείων Ρεύματα bytes, χαρακτήρων Αρχεία κειμένου Ρεύματα εισόδου αρχείων Ρεύματα εξόδου αρχείων Διαχείριση λαθών Εξαιρέσεις Δημιουργία Ανίχνευση Διαχείριση Βασικοί τύποι εξαιρέσεων Δημιουργία τύπων εξαίρεσης 36

37 H κλάση File Είναι η βασική κλάση για αρχεία και φακέλους Μέθοδοι της File exists: ελέγχει αν υπάρχει το αρχείο canread: ελέγχει αν μπορούμε να διαβάσουμε από το αρχείο canwrite: ελέγχει αν μπορούμε να γράψουμε στο αρχείο delete: διαγράφει το αρχείο και επιστρέφει true (αν πετύχει) length: επιστρέφει το μέγεθος του αρχείου σε bytes getname: επιστρέφει το όνομα του αρχείου (μόνο) getpath: επιστρέφει το πλήρες μονοπάτι του αρχείου File numfile = new File( numbers.txt ); if (numfile.exists()) System.out.println(numfile.length()); 37

38 Σχετικές κλάσεις Η FileInputStream και η FileOutputStream έχουν κατασκευαστές που παίρνουν ως όρισμα ένα αντικείμενο File ή το όνομα του αρχείου ως String PrintWriter smileyoutstream = new PrintWriter(new FileOutputStream( smiley.txt )); File smileyfile = new File( smiley.txt ); if (smileyfile.canwrite()) PrintWriter smileyoutstream = new PrintWriter(new FileOutputStream(smileyFile)); 38

39 Συνδυασμός ρευμάτων bytes float, String, κλπ. bytes DataInputStream FilterInputStream ή BufferedInputStream bytes InputStream FileInputStream Αρχείο bytes 39

40 Διάβασμα από αρχεία Η τάξη File (στο πακέτο java.io.*) αντιπροσωπεύει: Ένα αρχείο: File arxeio = new File("c:\\1.txt"); Ένα κατάλογο: File katalogos = new File("."); String path=katalogos.getabsolutepath(); File[] files=katalogos.listfiles(); Η τάξη FileReader (FileWriter) δημιουργεί ένα ρεύμα εισόδου (εξόδου) από αρχείο: FileReader arxeio = new FileReader("c:\\1.txt")); 40

41 Ανάγνωση - Εγγραφή Ανάγνωση: Όπως και με το πληκτρολόγιο συνδέουμε το πρόγραμμά μας με το αρχείο με έναν BufferedReader BufferedReader eisodos = new BufferedReader(new FileReader("c:\\1.txt")); Εγγραφή: Συνδέουμε το πρόγραμμά μας με το αρχείο με ένα BufferedWriter PrintWriter exodos =new PrintWriter(new BufferedWriter(new FileWriter( c:\\copy.txt"))); String s; while((s = eisodos.readline())!= null ) exodos.println(linecount++ + ": " + s); exodos.close(); 41

42 Αντιμετώπιση λαθών Υπάρχουν λάθη χρόνου εκτέλεσης (run time errors) τα οποία δεν ανιχνεύονται στη μεταγλώττιση. Αναζήτηση στοιχείου έξω από τα όρια ενός πίνακα Άνοιγμα αρχείου που δεν υπάρχει Κλήση αναφοράς σε null Θα πρέπει να αντιμετωπίζονται όταν το πρόγραμμα εκτελείται Ο κώδικας που δημιουργεί κάποιο λάθος μεταδίδει πληροφορία στον κώδικα που καλείται να το αντιμετωπίσει. Αυτό γίνεται με τις Εξαιρέσεις Exceptions Σηματοδοτούν εμφάνιση συνθηκών ιδιαίτερης μεταχείρισης και διακόπτουν τη συνήθη ροή του κώδικα 42

43 Αναλυτικά με τις εξαιρέσεις Όταν εμφανίζεται μία εξαίρεση σταματά η εκτέλεση της μεθόδου Δεν υπάρχει η απαραίτητη πληροφορία στο scope της μεθόδου Ανεβαίνουμε και αντιμετωπίζουμε το πρόβλημα σε κάποιο «υψηλότερο» scope. «Ρίχνουμε» μια εξαίρεση (throw) Ένα αντικείμενο εξαίρεσης (Exception object) δημιουργείται στον σωρο (heap) με χρήση του τελεστή new όπως κάθε άλλο Java object Διακόπτεται η εκτέλεση της μεθόδου και κρατιέται μια αναφορά στο Exception object σε κάποια περιοχή της μνήμης Αναλαμβάνει ο μηχανισμός διαχείρισης της εξαίρεσης (Exception handling mechanism) που πρέπει να βρει το κατάλληλο μέρος για να συνεχίσει να εκτελεί κώδικα 43

44 Αντικείμενα εξαιρέσεων To keyword throw προκαλεί τα ακόλουθα γεγονότα: εκτελεί την έκφραση new και δημιουργεί ένα αντικείμενο που δεν θα υπήρχε κανονικά Το αντικείμενο αυτό επιστρέφεται στην ουσία από την μέθοδο ή το block μέσα στο οποίο δημιουργήθηκε μολονότι η μέθοδος δεν έχει δηλωθεί να επιστρέφει παραμέτρους αυτού του τύπου και τα blocks δεν έχουν φυσικά παραμέτρους που να επιστρέφουν Το πρόγραμμα βγαίνει από τη μέθοδο ή το block. Τα αντικείμενα exception που «ρίχνονται» μπορεί να είναι διάφορων τύπων, ανάλογα το είδος της εξαίρεσης Κάθε αντικείμενο κωδικοποιεί στα πεδία του όλη την πληροφορία που αφορά την εξαίρεση, ώστε ο μηχανισμός διαχείρισης εξαιρέσεων στα ψηλότερα επίπεδα να μπορεί να πάρει τις κατάλληλες αποφάσεις 44

45 Σύλληψη εξαίρεσης Όταν ρίχνουμε μία εξαίρεση πρέπει στα υψηλότερα επίπεδα κάποιο μπλοκ κώδικα να την ανιχνεύσει και να την διαχειριστεί. Προστατευόμενη περιοχή είναι ένα κομμάτι κώδικα που μπορεί να ρίξει εξαιρέσεις και που ακολουθείται από κώδικα που διαχειρίζεται αυτές τις εξαιρέσεις. Μια προστατευόμενη περιοχή μπορεί να ανιχνεύσει ένα ή περισσότερους τύπους εξαιρέσεων και να τους διαχειριστεί ή να τους ρίξει ακόμη πιο πάνω (με νέο throw) 45

46 Προστατευόμενη περιοχή - try Ένα τέτοιο μπλοκ ονομάζεται try block αφού εκεί δοκιμάζουμε να κάνουμε κλήσεις σε διάφορες «επικίνδυνες μεθόδους» Το try block είναι ένα κανονικό scoper που περικλείεται από την κωδική λέξη try try { // κώδικας που παράγει εξαιρέσεις Προστασία από εξαιρέσεις: Bάζουμε όλον τον «επικίνδυνο» κώδικα σε ένα try block και πιάνουμε όλες τις εξαιρέσεις στο ίδιο μέρος. 46

47 Διαχειριστές εξαιρέσεων - catch Κάθε εξαίρεση που ανιχνεύεται μέσα στο try καταλήγει στον αντίστοιχο κώδικα (catch block) που θα την εξυπηρετήσει. Τα catch ελέγχονται διαδοχικά. Παράδειγμα: try { // κώδικας που παράγει εξαιρέσεις catch (type1 id1) { // χειρισμός εξαιρέσεων τύπου 1 catch (type2 id2) { // χειρισμός εξαιρέσεων τύπου 2 catch (type3 id3) { // χειρισμός εξαιρέσεων τύπου 3 Αν πολλές μέθοδοι στο try ρίχνουν τον ίδιο τύπο εξαίρεσης, τότε χρειαζόμαστε μόνο έναν exception handler για αυτόν τον τύπο. 47

48 Παράδειγμα έλεγχος εισόδου (2) Μπορούμε να χρησιμοποιήσουμε δική μας εξαίρεση; Στο αρχείο MySpecialException.java public class MySpecialException extends Exception{ Οπότε public double readdouble() throws MySpecialException{ Scanner in =new Scanner(System.in); if(in.hasnextdouble()){ return in.nextdouble(); else throw new MySpecialException(); 48

49 Παράδειγμα Μη διαχείριση σφάλματος εισόδου public double sumnumbers() throws MySpecialException{ double sum=0; sum+=readdouble(); return sum; public static void main(string[] args) throws MySpecialException{ Main m=new Main(); double z=m.sumnumbers(); System.out.println("Sum is:"+z); Έτσι αποφεύγουμε να χειριστούμε την εξαίρεση 49

50 Παράδειγμα Διαχείριση σφάλματος εισόδου public double sumnumbers(){ double sum=0; try{ sum+=readdouble(); catch(myspecialexception ex){ //θα συμβεί αν ο χρήστης δεν δώσει αριθμό System.err.println(ex.toString()); //τυπώνει το όνομα της κλάσης εξαίρεσης catch(exception ex){ //θα συμβεί σε οποιαδήποτε άλλη περίπτωση λάθους System.err.println(ex.getMessage()); //τυπώνει το μήνυμα της εξαίρεσης return sum; Η MySpecialException είναι ειδικότερη από την Exception 50

51 Κατασκευαστές public Human(){ name= Unknown ; surname= Unknown ; age=0; System.out.println( A new Human has been created ); public Address(){ street= Unknown ; number=0; city= Unknown ; System.out.println( A blank Address has been created ); public Employee(){ residence=new Address(); position= Unemployed ; System.out.println( A new Employee has been created ); Με ποια σειρά καλούνται οι κατασκευαστές; 51

52 Δημιουργία αντικειμένων Address ad1=new Address(); A blank Address has been created Human h1=new Human(); A new Human has been created Employee e1= new Employee(); A new Human has been created A blank Address has been created A new Employee has been created Καλείται αυτόματα ο βασικός κατασκευαστής της Human 52

53 Αν η Human δεν έχει βασικό κατασκευαστή; public Human(String name,string surname, int age){ this.name=name; this.surname=surname; this.age=age; System.out.println(name+ +surname+ has been created ); Πρέπει να δηλώσουμε στον κατασκευαστή της Employee ποιο συγκεκριμένο κατασκευαστή της Human θα καλέσει Αυτό γίνεται με τη λέξη super. public Employee(){ super( Unknown, Unknown,0); residence=new Address(); position= Unemployed ; System.out.println( A new Employee has been created ); 53

54 Υπέρβαση μεθόδων Η getcompletedata της Human String getcompletedata(){ String data=new String(); data=name+ +surname+ +age+ years old ; return data; Λόγω κληρονομικότητας μπορούμε να την καλέσουμε για έναν Employee, αλλά δε θα έχουμε όλες τις πληροφορίες γι αυτόν. 54

55 Υπέρβαση μεθόδων Υπερβαίνουμε τη μέθοδο, δηλώνοντάς την ΚΑΙ στην Employee με το ίδιο όνομα Καλούμε στο σώμα της τη μέθοδο της employee με τη δήλωση super class Employee{... String getcompletedata(){ String data=new String(); data=super.getcompletedata() + " "+ residence.getcompleteaddress()+" position:"+ position; return data; 55

56 7ο Μάθημα Γραφικά περιβάλλοντα (GUI) Abstract Windowing Toolkit (AWT) Swing Containers Components Layout managers (Listeners) Αρχιτεκτονική Model-View-Controller Διάφορα στοιχεία του Swing Παράθυρα και μενού Περιγράμματα Τοποθέτηση στοιχείων στο παράθυρο Διαχειριστές τοποθέτησης Βασικά interfaces Τάξεις

57 Τα μέρη ενός γραφικού περιβάλλοντος GUI Σύνθεση τάξεων JFrame JPanel containers JFrame JButton JPanel JLabel JButton JLabel components

58 Με ποια σειρά φτιάχνουμε το GUI Δημιουργούμε Το JFrame Το JPanel Τα Components (JButton, JLabel) To Listener για το JButton Προσθέτουμε (μέθοδος add) Τον Listener στo JButton Τα components στο Jpanel To JPanel στο JFrame Εμφανίζουμε Το JFrame (μέθοδος show) Listener JLabel JButton JPanel JFrame

59 8ο Μάθημα Στοιχεία Περιοχές κειμένου Κουμπιά Λίστες επιλογών Παράθυρα διαλόγου Παράθυρα επιβεβαίωσης Παράθυρο επιλογής αρχείου Παράθυρο επιλογής χρώματος

60 Στοιχεία του Swing

61 Λίστες επιλογών JComboBox: Περιέχει ένα πίνακα από επιλογές, εμφανίζει στο χρήστη μόνο μία και επιτρέπει μονές ή πολλαπλές επιλογές. String [] items = { "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove", "deici", "undici" ; JComboBox combobox = new JComboBox(items); combobox.additem("dodici"); combobox.getselecteditem() //επιστρέφει Object combobox.getselectedobjects() //επιστρέφει Object[] JList: Περιέχει ένα πίνακα από επιλογές, εμφανίζει στο χρήστη ορισμένες από αυτές (ανάλογα με το ύψος της) και επιτρέπει μονές ή πολλαπλές επιλογές. JList list = new JList(comboBox.getModel( )); list.getselectedvalues() //επιστρέφει Object[] Mοιράζονται το ίδιο μοντέλο δεδομένων

62 Μοντέλα Δεδομένων για Λίστες dlm = new DefaultListModel(); dlm.addelement(new Human("George", "Brown", 22, "6th Avenue")); dlm.addelement(new Human("Mary", "Jones", 18, "5th Avenue")); dlm.addelement(new Human("Bill", "Murray", 19, "Madison Avenue")); students = new JList(dlm); this.getcontentpane().add(students); this.getcontentpane().add(clearbutton); this.getcontentpane().add(copybutton); - Φαίνεται ότι επιστρέφει η tostring() - Επιστρέφει όλο το Object Object[] selected=students.getselectedvalues(); for (int i=0;i<selected.length;i++) Human h=(human)selected[i];

63 Το παράθυρο JDialog Συμπεριφέρεται όπως και το JFrame JDialog dialog = new JDialog(myFrame, "Dialog Frame"); JLabel label = new JLabel("This is a message ); dialog.getcontentpane().add(label); dialog.setvisible(true); Μπορεί να μπλοκάρει τη συνέχιση του προγράμματος (modal) ή όχι (non-modal) JDialog dialog1 = new JDialog(myFrame, "This is modal", true); JDialog dialog2 = new JDialog(myFrame, "This is non modal", false);

64 9 ο Μάθημα Συλλογές και ενέργειες ArrayList Αναζήτηση συγκεκριμένου στοιχείου Αναζήτηση ελαχίστου/μεγίστου Συνάθροιση Πίνακας Εισαγωγή Εισαγωγή με έλεγχο διπλοτύπων 64

65 Σύγκριση: Η μέθοδος equals Για να δουλέψουν οι προηγούμενοι μέθοδοι για λίστες με αντικείμενα δικών μας κλάσεων πρέπει στις κλάσεις μας να έχουμε μια μέθοδο equals π.χ. public boolean equals(object o){ Department d=(department)o; // πιθανό να παράγει //ClassCastException if (this.id==d.getid() && this.name.equals(d.getname()) && this.numstudents==d.getnumstudents()) return true; else return false; 65

66 Ταξινόμηση Με ποιο τρόπο μπορώ να ταξινομήσω τα στοιχεία ενός πίνακα ή μιας λίστας; BubbleSort: public void bubblesort(int[] unsortedarray, int length) { int temp, counter, index; for(counter=0; counter<length-1; counter++) { for(index=0; index<length-1-counter; index++) { if(unsortedarray[index] > unsortedarray[index+1]) { temp = unsortedarray[index]; unsortedarray[index] = unsortedarray[index+1]; unsortedarray[index+1] = temp; 66

67 Διάταξη Η διάταξη στους ακεραίους είναι δεδομένη Τι γίνεται όμως με τις δικές μας κλάσεις; Πώς μπορούμε να ορίσουμε διάταξη στα αντικείμενά τους; public interface Comparable { int compareto(object o); Comparable Department 67

68 public class Department implements Comparator{ public int compareto(object o){ Department d=(department)o; // πιθανό να παράγει //ClassCastException if (this.numstudents>d.getnumstudents()) return 1; else if (this.numstudents<d.getnumstudents()) return -1; else return 0; 68

69 Ταξινόμηση Collections.sort(allDeps); Ταξινομεί τα τμήματα με βάση τον αριθμό σπουδαστών που έχουν Χρησιμοποιεί την QuickSort 69

70 Διεπαφές υλοποιήσεις και παρελθόν Διεπαφή Υλοποιήσεις Παλιότερες υλοποιήσεις Set HashSet TreeSet List ArrayList LinkedList Vector Stack Map HashMap TreeMap HashTable Properties Μια τάξη υλοποίησης μπορεί να μην υλοποιεί μια συγκεκριμένη μέθοδο του interface (κάποιες μέθοδοι είναι προεραιτικές) Στην περίπτωση αυτή παράγει UnsupportedOperationException

71 Υλοποιήσεις

72 Υλοποιήσεις WeakHashMap είναι μια υλοποίηση του Map που καλεί τον garbage collector όταν ένα κλειδί δε χρησιμοπείται πλέον

73 11 ο Μάθημα Πολυνηματικές εφαρμογές Ορισμοί Έλεγχος νήματος Συγχρονισμός νημάτων

74 Threads - Νήματα Τα threads επιτρέπουν εργασίες να τρέχουν παράλληλα με την κύρια εφαρμογή Είναι διεργασίες που τρέχουν στον ίδιο χώρο διευθύνσεων: μοιράζονται τις μεταβλητές στιγμιοτύπων, αλλά διατηρούν και τοπικές μεταβλητές Χρησιμοποιούνται από το JVM σε συγκεκριμένες περιπτώσεις Όταν φορτώνουμε μια εικόνα ή ένα ήχο μέσα από ένα applet. Όταν καλούμε την update του αντικειμένου graphics Μπορούμε να δηλώσουμε και να χρησιμοποιήσουμε δικά μας νήματα.

75 Τρόποι δήλωσης (1/2) Επέκταση της Thread public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); public static void main(string args[]) { (new HelloThread()).start();

76 Τρόποι δήλωσης (2/2) Υλοποίηση της Runnable public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); public static void main(string args[]) { (new Thread(new HelloRunnable())).start();

77 Μέθοδοι run(): το βασικό σύνολο εντολών του νήματος. Ενεργοποιείται με το start() static void sleep(milliseconds): σταματά προσωρινά την εκτέλεση του νήματος void interrupt(): διακόπτει το νήμα boolean interrupted(): ελέγχει αν το νήμα εξακολουθεί να είναι σταματημένο ή ξαναξεκίνησε final void otherthread.join(): διακόπτει το τρέχον νήμα μέχρι να τελειώσει το otherthread

78 12 ο μάθημα Επικοινωνία με δικτυακές πηγές Ανάγνωση από πηγή BufferedReader in = new BufferedReader( new InputStreamReader( target.openstream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close();

79 Σύνδεση με πηγή try { URL hua = new URL(" URLConnection huaconnection = hua.openconnection(); huaconnection.connect(); BufferedReader in = new BufferedReader( new InputStreamReader( huaconnection.getinputstream())); catch (MalformedURLException e) { // new URL() failed... catch (IOException e) { // openconnection() failed...

80 Γράφοντας σε μια διεύθυνση Δημιουργία του URL URL url = new URL(" Ανάκτηση του URLConnection URLConnection connection = url.openconnection(); Ενεργοποίηση εξόδου connection.setdooutput(true); Δημιουργία ρεύματος εξόδου OutputStreamWriter out = new OutputStreamWriter( connection.getoutputstream()); Πέρασμα παραμέτρων out.write("id=25"); Κλείσιμο του ρεύματος out.close();

Προγραμματισμός ΙΙ. 2. Μέθοδοι. (Java)

Προγραμματισμός ΙΙ. 2. Μέθοδοι. (Java) Προγραμματισμός ΙΙ 2. Μέθοδοι (Java) Περιεχόμενα Μέθοδοι Πέρασμα αντικειμένου σε μέθοδο Υπερφόρτωση μεθόδων Μέθοδοι κατασκευαστές Υπερφόρτωση κατασκευαστών Επαναχρησιμοποίηση κώδικα Σύνθεση και κληρονομικότητα

Διαβάστε περισσότερα

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

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Διαχείριση λαθών Εξαιρέσεις Δημιουργία Ανίχνευση Διαχείριση Βασικοί τύποι εξαιρέσεων Δημιουργία τύπων εξαίρεσης 2 Αντιμετώπιση λαθών Υπάρχουν λάθη χρόνου

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων Πίνακες Προκαθορισμένο μέγεθος Συνεχείς θέσεις Πίνακες τιμών Αρχικοποιούνται σε 0 ή false int[] a=new int[10]; boolean[] b=new boolean[10];

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή 1 Στόχοι Όσοι ολοκληρώνουν το μάθημα με επιτυχία να: Γνωρίζουν καλά τις βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού: αντικείμενα, κλάσεις, γνωρίσματα, μεθόδους,

Διαβάστε περισσότερα

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

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

Αρχεία και Ρεύματα. Αρχεία Αρχεία Αρχεία και Ρεύματα sequential files(σειριακά αρχεία) direct access(απ'ευθείας πρόσβασης) Ρεύματα (I/O Streams) Ένα ρεύμα είναι μια σειριακή ροή δεδομένων από μία πηγή προς έναν προορισμό. Όταν ένα

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων

Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων Συλλογές και ενέργειες ArrayList Αναζήτηση συγκεκριμένου στοιχείου Αναζήτηση ελαχίστου/μεγίστου Συνάθροιση Πίνακας Εισαγωγή Εισαγωγή με έλεγχο διπλοτύπων

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

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

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java JAVA, NETBEANS ΑΝΑΚΕΦΑΛΑΙΩΣΗ Τα βασικά για την γλώσσα Java Java portability Το μεγαλύτερο πλεονέκτημα της Java είναι η μεταφερσιμότητα: ο κώδικας μπορεί να τρέξει πάνω σε οποιαδήποτε πλατφόρμα. Write-Once-Run-Anywhere

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Αρχεία δεδομένων Το πακέτο java.io περιλαμβάνει περισσότερες από 60 κλάσεις και διασυνδέσεις για το χειρισμό αρχείων δεδομένων. Αρκετές από τις κλάσεις του

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

Διαβάστε περισσότερα

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές

Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές Προγραμματισμός ΙΙ (Java) 10. Πολυνηματικές εφαρμογές Multithreading Μulti-processing Πολλές διεργασίες ταυτόχρονα Κάθε διεργασία έχει το δικό της χώρο μνήμης ή ενδέχεται όλες να μοιράζονται και κάποιο

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 12 Ροές και είσοδος/έξοδος αρχείων Τα δεδομένα εισόδου

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies Μαθήματα από το εργαστήριο Όταν η εκφώνηση σας ζητάει να φτιάξετε μία μέθοδο που παίρνει

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

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

Το πρόγραμμα 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 υποστηρίζει

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου Μεγάλο παράδειγμα Θέλουμε να δημιουργήσουμε ένα λογισμικό για ένα τμήμα πανεπιστημίου. Το τμήμα έχει 4

Διαβάστε περισσότερα

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7 Περιεχόμενα 1 Εισαγωγικές Έννοιες...12 1.1 Το Αντικείμενο στην καθημερινότητα...12 1.2 Το Αντικείμενο στον Προγραμματισμό...12 1.3 Επικοινωνία αντικειμένων...13 1.4 Κλάση (class) αντικειμένων...14 1.4.1

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

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

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα ΕΞΑΙΡΕΣΕΙΣ Εξαίρεση (Exception): Ένα συµβάν κατά τον χρόνο εκτέλεσης (π.χ. αδυναµία ανοίγµατος αρχείου ή ανάγνωσης πληροφορίας, µη ύπαρξη αντικειµένου στη στοίβα) που απαιτεί ειδικό χειρισµό. Ονοµάζεται

Διαβάστε περισσότερα

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1 Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος 2010/2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου A. Πρωταρχικοί τύποι B. Είσοδος/ Έξοδος C. Πράξεις 2 Δήλωση / Αρχικοποίηση / Εκχώρηση A. Πρωταρχικοί

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Διασυνδέσεις / Διεπαφές PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Διεπαφές/Διασυνδέσεις (Interfaces) 2 Διεπαφές/Διασυνδέσεις (Interfaces)

Διαβάστε περισσότερα

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Ορισμός βασικής ορολογίας προγραμματισμού 26 Σύγκριση διαδικαστικού και αντικειμενοστρεφούς προγραμματισμού 29 Διαδικαστικός προγραμματισμός 29

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Εκμάθηση ορολογίας προγραμματισμού 26 Σύγκριση των εννοιών του διαδικαστικού και του αντικειμενοστραφούς 29 Διαδικαστικός προγραμματισμός 29 Αντικειμενοστραφής

Διαβάστε περισσότερα

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

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions (Object Oriented Programming) Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 8: Java Swing Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Constructors Κλάσεις και αντικείμενα Ορισμός κλάσης: class

Διαβάστε περισσότερα

Από τη UML στον Κώδικα. Μέρος Α

Από τη UML στον Κώδικα. Μέρος Α Από τη UML στον Κώδικα Μέρος Α περιεχόμενα παρουσίασης Κλάσεις Ισότητα αντικειμένων Μονόδρομες συσχετίσεις με πολλαπλότητα «ένα» Μονόδρομες συσχετίσεις με πολλαπλότητα «πολλά» Συλλογές από το σχέδιο στον

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΕΛΕΓΧΟΣ ΙΣΟΤΗΤΑΣ Έλεγχος ισότητας Έχουμε πει ότι όταν ελέγχουμε ισότητα μεταξύ αντικειμένων

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Κληρονομικότητα Employee name hiringdate getname gethiringdate Οι παράγωγες κλάσεις κληρονομούν τα πεδία

Διαβάστε περισσότερα

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

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis Διαχείριση Δικτύων Nikolas Bompetsis nbompetsis@di.uoa.gr Εισαγωγική Διάλεξη Java Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Τεχνολογία Java Collections & Generics Διαχείριση σφαλμάτων Ροές Δεδομένων

Διαβάστε περισσότερα

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 3: JAVA: ΕΞΑΙΡΕΣΕΙΣ, ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ, ΝΗΜΑΤΑ Νήματα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΝΗΜΑΤΑ

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

Διαβάστε περισσότερα

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Πακέτα (Packages) Φωλιασμένες

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 23: Εισαγωγή στην Δικτύωση (Networking) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διευθύνσεις και Θύρες - Sockets και ServerSockets Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

Διαβάστε περισσότερα