Αρχικοποιήσεις Μεταβλητών και Αντικειµένων

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

Download "Αρχικοποιήσεις Μεταβλητών και Αντικειµένων"

Transcript

1 Αρχικοποιήσεις Μεταβλητών και Αντικειµένων

2 Initializers Μ. Δικαιάκος Στην Java, πριν την χρήση μιας μεταβλητής αρχέγονου τύπου, η μεταβλητή αυτή θα πρέπει να έχει αρχικοποιηθεί. Διαφορετικά ο μεταφραστής διαμαρτύρεται και βγάζει μήνυμα λάθους. Π.χ.: int i; i = i++ ; // illegal Για την αποφυγή του προβλήματος αυτού, χρησιμοποιούμε μια ειδική ανάθεση αρχικοποιητή (initializer), με την οποία αρχικοποιούμε μια αρχέγονη μεταβλητή την στιγμή της δήλωσής της: int i = 1; Εξαίρεση αποτελούν οι αρχέγονοι τύποι που είναι στοιχεία κάποιου αντικειμένου. Τα στοιχεία αυτά μπορούν να μην αρχικοποιηθούν από τον προγραμματιστή (τι τιµές παίρνουν τότε ;) 2

3 3 Παράδειγμα class Measurement { boolean t; char c; byte b; short s; int i; long l; float f; double d; void print() { System.out.println("Data type Initial value\n" + "boolean " + t + "\n" + "char " + c + "\n" + "byte " + b + "\n" + "short " + s + "\n" + "int " + i + "\n" + "long " + l + "\n" + "float " + f + "\n" +"double " + d); public class InitialValues { public static void main(string[] args){ Measurement().print;

4 4 Εκροή Παραδείγματος C:\users\epl233\eckel-code\c04>java InitialValues Data type Initial value boolean false char byte 0 short 0 int 0 long 0 float 0.0 double 0.0 Το char αρχικοποιείται σε null. Επίσης σε null αρχικοποιούνται και όποια χειριστήρια αντικειμένων περιέχονται ως στοιχεία σε αντικείμενα.

5 5 Αρχικοποιήσεις Αντικειμένων class Measurement { boolean t = false; char c = z ; byte b = 9; short s = 0; int i = f(s); long l = 12; float f = 2.3; double d = 0.9; void print() { Αρχικοποίηση μπορεί να γίνει με κλήση μεθόδου. Οι παράμετροι που δικαιούμαστε να περάσουμε στην μέθοδο, πρέπει να έχουν ήδη αρχικοποιηθεί (αλλοιώς λαμβάνουμε exception).

6 6 Κατασκευαστές (constructors)

7 6 Κατασκευαστές (constructors) Οι constructors είναι μέθοδοι που χρησιμοποιούνται για την αρχικοποίηση ενός αντικειμένου κατά την στιγμή της δημιουργίας του.

8 6 Κατασκευαστές (constructors) Οι constructors είναι μέθοδοι που χρησιμοποιούνται για την αρχικοποίηση ενός αντικειμένου κατά την στιγμή της δημιουργίας του. Δηλώνονται με το ίδιο όνοµα με την κλάση στην οποία ανήκουν. Έτσι η ονομασία τους δεν χρειάζεται ιδιαίτερη διαχείριση, για αποφυγή τυχόν συγκρούσεων με άλλα ονόματα.

9 6 Κατασκευαστές (constructors) Οι constructors είναι μέθοδοι που χρησιμοποιούνται για την αρχικοποίηση ενός αντικειμένου κατά την στιγμή της δημιουργίας του. Δηλώνονται με το ίδιο όνοµα με την κλάση στην οποία ανήκουν. Έτσι η ονομασία τους δεν χρειάζεται ιδιαίτερη διαχείριση, για αποφυγή τυχόν συγκρούσεων με άλλα ονόματα. Οι κατασκευαστές δεν επιστρέφουν τίποτε, χωρίς ωστόσο να δηλώνονται με τύπο επιστροφής void.

10 6 Κατασκευαστές (constructors) Οι constructors είναι μέθοδοι που χρησιμοποιούνται για την αρχικοποίηση ενός αντικειμένου κατά την στιγμή της δημιουργίας του. Δηλώνονται με το ίδιο όνοµα με την κλάση στην οποία ανήκουν. Έτσι η ονομασία τους δεν χρειάζεται ιδιαίτερη διαχείριση, για αποφυγή τυχόν συγκρούσεων με άλλα ονόματα. Οι κατασκευαστές δεν επιστρέφουν τίποτε, χωρίς ωστόσο να δηλώνονται με τύπο επιστροφής void. Διευκολύνουν τον προγραμματισμό καθώς «ενοποιούν» ονοματολογικά την δήλωση και την αρχικοποίηση των κλάσεων και αντικειμένων.

11 7 Παράδειγμα constructor class Rock { Rock() { // This is the constructor System.out.println("Creating Rock"); public class SimpleConstructor { public static void main(string[] args) { for(int i = 0; i < 10; i++) new Rock();

12 Προκαθορισμένοι κατασκευαστές Μ. Δικαιάκος Σε πολλές περιπτώσεις μια κλάση ορίζεται χωρίς κατασκευαστή. Στην περίπτωση αυτή (και μόνο), ο μεταφραστής ορίζει και καλεί έναν προκαθορισμένο κατασκευαστή (default constructor), ο οποίος δεν δέχεται παραμέτρους: class Bird { int i; public class DefaultConstructor { public static void main(string[] args) { Bird nc = new Bird(); // default! Bird nc = new Bird(1); // error! Η αρχικοποίηση των στοιχείων του δημιουργούμενου αντικειμένου, γίνεται από τον προκαθορισμένο κατασκευαστή με μηδενικά και null χαρακτήρες. 8

13 9 Κατασκευαστές με παραμέτρους Ένας constructor μπορεί να δεχεται παραμέτρους, οι οποίες καθορίζουν περαιτέρω το πώς θα αρχικοποιηθεί το αντίστοιχο αντικείμενο. class Rock2 { Rock2(int i) { System.out.println("Creating Rock number " + i); public class SimpleConstructor2 { public static void main(string[] args) { for(int i = 0; i < 10; i++) new Rock2(i);

14 10 Υπερφόρτωση Μεθόδων (overloading)

15 10 Υπερφόρτωση Μεθόδων (overloading) Υπερφόρτωση μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων.

16 10 Υπερφόρτωση Μεθόδων (overloading) Υπερφόρτωση μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων. Η υπερφόρτωση μεθόδων χρησιμοποιείται ευρύτατα στον Α/ΣΠ, αλλά και ιδιαίτερα στους κατασκευαστέςconstructors.

17 10 Υπερφόρτωση Μεθόδων (overloading) Υπερφόρτωση μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων. Η υπερφόρτωση μεθόδων χρησιμοποιείται ευρύτατα στον Α/ΣΠ, αλλά και ιδιαίτερα στους κατασκευαστέςconstructors. Αν δύο μέθοδοι ( κατασκευαστές ) έχουν το ίδιο όνομα, τότε πως γνωρίζει η Java ποιά μέθοδο θέλουμε να επικαλεστούμε;

18 10 Υπερφόρτωση Μεθόδων (overloading) Υπερφόρτωση μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων. Η υπερφόρτωση μεθόδων χρησιμοποιείται ευρύτατα στον Α/ΣΠ, αλλά και ιδιαίτερα στους κατασκευαστέςconstructors. Αν δύο μέθοδοι ( κατασκευαστές ) έχουν το ίδιο όνομα, τότε πως γνωρίζει η Java ποιά μέθοδο θέλουμε να επικαλεστούμε; Kάθε υπερφορτωμένη μέθοδος πρέπει να δέχεται μια διαφορετική λίστα τύπων κατηγορημάτων.

19 Υπερφόρτωση Μεθόδων (overloading) Μ. Δικαιάκος Υπερφόρτωση μεθόδων προκύπτει στην Java όταν το ίδιο όνοµα µεθόδου µπορεί να δεχτεί διαφορετικούς τύπους και/ή διαφορετικό αριθµό παραµέτρων. Η υπερφόρτωση μεθόδων χρησιμοποιείται ευρύτατα στον Α/ΣΠ, αλλά και ιδιαίτερα στους κατασκευαστέςconstructors. Αν δύο μέθοδοι ( κατασκευαστές ) έχουν το ίδιο όνομα, τότε πως γνωρίζει η Java ποιά μέθοδο θέλουμε να επικαλεστούμε; Kάθε υπερφορτωμένη μέθοδος πρέπει να δέχεται μια διαφορετική λίστα τύπων κατηγορημάτων. Ακόμη και διαφορές στην σειρά των κατηγορημάτων είναι αρκετές για να ξεχωρίσουν δυό μεθόδους, αλλά αυτό δεν είναι «καλή» προγραμματιστική τακτική. 10

20 11 Παράδειγμα Υπερφόρτωσης import java.util.*; class Tree { int height; Tree() { prt("planting a seedling"); height = 0; Tree(int i) { prt("creating new Tree that is "+ i + " feet tall"); height = i; void info() { prt("tree is "+ height + " feet tall"); void info(string s) { prt(s + : Tree is + height + " feet tall"); static void prt(string s) { System.out.println(s);

21 12 Παράδειγμα Υπερφόρτωσης (συνέχεια) public class Overloading { public static void main(string[] args) { for(int i = 0; i < 5; i++) { Tree t = new Tree(i); t.info(); t.info("overloaded method"); // Overloaded constructor: new Tree();

22 13 Υπερφόρτωση και Αρχέγονοι τύποι

23 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0.

24 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο;

25 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο; Θα εκτελεσθεί η έκδοση της f() που δέχεται ακέραιες παραµέτρους.

26 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο; Θα εκτελεσθεί η έκδοση της f() που δέχεται ακέραιες παραµέτρους. Γενικότερα, αν η τιμή που περνάμε σε μια μέθοδο έχει τύπο µικρότερο από τον τύπο της δηλωμένης παραμέτρου, τότε η τιμή προάγεται στον τύπο της παραμέτρου.

27 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο; Θα εκτελεσθεί η έκδοση της f() που δέχεται ακέραιες παραµέτρους. Γενικότερα, αν η τιμή που περνάμε σε μια μέθοδο έχει τύπο µικρότερο από τον τύπο της δηλωμένης παραμέτρου, τότε η τιμή προάγεται στον τύπο της παραμέτρου. Αν υπάρχουν πολλοί τέτοιοι δυνατοί τύποι (πολλαπλών «υπερφορτώσεων»), τότε η προαγωγή γίνεται στον αμέσως μεγαλύτερο τύπο.

28 13 Υπερφόρτωση και Αρχέγονοι τύποι Αν ορίσουμε μια υπορουτίνα : void f (double x) { /* */ και την καλέσουμε σαν f(5), η παράμετρος «5» θα προαχθεί αυτόματα (promotion) σε 5.0. Τι θα συμβεί αν η f() είναι υπερφορτωμένη ώστε να δέχεται και ακέραιη παράμετρο; Θα εκτελεσθεί η έκδοση της f() που δέχεται ακέραιες παραµέτρους. Γενικότερα, αν η τιμή που περνάμε σε μια μέθοδο έχει τύπο µικρότερο από τον τύπο της δηλωμένης παραμέτρου, τότε η τιμή προάγεται στον τύπο της παραμέτρου. Αν υπάρχουν πολλοί τέτοιοι δυνατοί τύποι (πολλαπλών «υπερφορτώσεων»), τότε η προαγωγή γίνεται στον αμέσως μεγαλύτερο τύπο. Εξαίρεση έχουμε στην περίπτωση που ο τύπος της δηλωμένης παραμέτρου είναι char κι εμείς περνάμε έναν ακέραιο, ο οποίος δεν αντιστοιχεί σε τιμή χαρακτήρα char, τότε η τιμή αυτή προάγεται σε ακέραιο (και όχι, π.χ. σε short).

29 14 Παράδειγμα public class Foo { void f1(double x) { System.out.println("double f1 -->" + x); void f1(int x) { System.out.println("int f1 -->" + x); public static void main(string[] args) { Foo ff = new Foo(); ff.f1(5);

30 15 Η χρήση του this class Banana { double param; Banana(int prm) { param = prm; void f(int i) { System.out.println( Calc: + i * param); Banana a = new Banana(5), b = new Banana(7); a.f(1); b.f(2);

31 16 Η χρήση του this (συνέχεια) Πως μπορεί η μέθοδος f() να γνωρίζει αν καλείται από το αντικείμενο a ή το αντικείμενο b; a.f(1) Banana.f(a,1) b.f(2) Banana.f(b,2) Αν θέλουμε, μέσα από κάποιο αντικείμενο, να αποκτήσουμε πρόσβαση-χειριστήριο προς τον εαυτό του, μπορούμε να χρησιμοποιήσουμε την ειδική μεταβλητή this, η οποία είναι χειριστήριο για το αντικείμενο μας. Ανάθεση στην this δεν επιτρέπεται. Μέσω της this μπορούμε να περάσουμε το τρέχον αντικείμενο σαν παράμετρο σε μεθόδους άλλων αντικειμένων.

32 Παράδειγμα χρήσης this // Simple use of the "this" keyword. public class Leaf { private int i = 0; Leaf increment() { i++; return this; void print() { System.out.println("i = " + i); public static void main(string[] args) { Leaf x = new Leaf(); x.increment().increment().increment().print(); Πολλαπλή κλήση της ίδιας μεθόδου πάνω στο ίδιο αντικείμενο. Μ. Δικαιάκος 17

33 18 Κλήση κατασκευαστών από κατασκευαστές Μέσα σε έναν constructor, η δεσμευμένη λέξη this μπορεί να χρησιμοποιηθεί και σαν κλήση μεθόδου, με πέρασμα σε αυτήν παραμέτρων. Σε μια τέτοια περίπτωση, έχουμε ρητή κλήση μιας διαφορετικής εκδοχής του constructor, η οποία έχει υποδηλωθεί με υπερφόρτωση. Η λέξη this μπορεί να χρησιμοποιηθεί σαν constructor μέσα σε κάποιον constructor, μόνο σαν πρώτη εντολή του constructor και μόνο για μιά φορά.

34 19 Παράδειγμα // Calling constructors with "this public class Flower { private int petalcount = 0; private String s = new String("null"); Flower(int petals) { petalcount = petals; Flower(String ss) { s = ss;

35 Παράδειγμα (συνέχεια) Flower(String s, int petals) { this(petals); this(s); // Δεν επιτρέπεται δεύτερη κλήση του this this.s = s; Flower() { this("hi", 47); Μ. Δικαιάκος 20

36 21 Παράδειγμα (συνέχεια) void print() { this(11); // Δεν επιτρέπεται η κλήση του this εκτός constructor System.out.println("petalCount = " + petalcount + " s = "+ s); public static void main(string[] args) { Flower x = new Flower(); x.print();

37 22 Στατικές Μέθοδοι και this

38 22 Στατικές Μέθοδοι και this Σε μια στατική μέθοδο δεν μπορεί να γίνει χρήση του this (γιατί;)

39 22 Στατικές Μέθοδοι και this Σε μια στατική μέθοδο δεν μπορεί να γίνει χρήση του this (γιατί;) Από μια μη στατική μέθοδο μπορούν να κληθούν στατικές μέθοδοι.

40 22 Στατικές Μέθοδοι και this Σε μια στατική μέθοδο δεν μπορεί να γίνει χρήση του this (γιατί;) Από μια μη στατική μέθοδο μπορούν να κληθούν στατικές μέθοδοι. Στατικές μέθοδοι μπορούν να καλέσουν μη-στατικές μεθόδους; Όχι, διότι σε ποιό αντικείμενο θα σταλεί το μήνυμα για κλήση της μη-στατικής μεθόδου; Εξαίρεση: η κλήση μη-στατικής μεθόδου μέσω χειριστηρίου που περνιέται σαν παράμετρος στην στατική μέθοδο.

41 23 public class Foo { static void test(foo g) { g.f1(0.9); void f1(double x) { System.out.println("double f1 -->" + x); void f1() { test(this); public static void main(string[] args) { Foo ff = new Foo(); ff.f1();

42 Ανασκόπηση Αρχικοποιήσεων

43 25 Σειρά Αρχικοποιήσεων Μέσα σε µια κλάση, η σειρά των αρχικοποιήσεων καθορίζεται από τη σειρά δήλωσης των πεδίων δεδομένων της κλάσης. Ακόμη κι αν οι αρχικοποιήσεις είναι διεσπαρμένες ανάμεσα σε δηλώσεις μεθόδων, τα πεδία θα αρχικοποιηθούν πριν την κλήση οποιασδήποτε μεθόδου, ακόµη και του constructor. Πότε γίνεται η αρχικοποίηση στατικών µεταβλητών; Μόνο όταν αυτό καταστεί αναγκαίο, είτε λόγω δημιουργίας του πρώτου σχετικού αντικειμένου, είτε λόγω κλήσης κάποιας στατικής μεθόδου της αντίστοιχης κλάσης.

44 Ανασκόπηση Δημιουργίας Αντικειμένων Μ. Δικαιάκος Έστω ότι έχουμε ορίσει μια κλάση Dog. Την πρώτη φορά που δημιουργείται ένα αντικείμενο Dog, ή την πρώτη φορά που καλείται μια στατική μέθοδος της Dog ή γίνεται πρόσβαση σε ένα στατικό πεδίο της κλάσης Dog, ο διερμηνέας της Java πρέπει να βρεί την κλάση Dog.class, την οποία αναζητεί με την βοήθεια του classpath. Καθώς η Dog.class φορτώνεται (οπότε και δημιουργείται ένα αντικείμενο Class), εκτελούνται όλοι οι στατικοί αρχικοποιητές (static initializers). Επομένως η στατική αρχικοποίηση συμβαίνει μόνο μια φορά, όταν το Class Object φορτώνεται για πρώτη φορά. Όταν δημιουργηθεί αντικείμενο Dog με την new Dog(), η διεργασία δημιουργίας κρατάει πρώτα αρκετό χώρο στον σωρό. Ο χώρος που κρατήθηκε αρχικοποιείται με μηδενικά. 26

45 Ανασκόπηση Δημιουργίας Αντικειμένων Οποιεσδήποτε αρχικοποιήσεις έχουν δηλωθεί εκτελούνται. Εκτελούνται οι constructors τού αντικειμένου. Στο σημείο αυτό μπορούμε να έχουμε αρκετή δραστηριότητα, ιδιαίτερα όταν η κλάση μας κληρονομεί χαρακτηριστικά άλλων κλάσεων. Μ. Δικαιάκος 27

46 Ρητή στατική αρχικοποίηση Μπορούμε να συγκεντρώσουμε τις στατικές αρχικοποιήσεις (static initializations) μέσα σε ένα ειδικό στατικό πλαίσιο (static block), στο εσωτερικό μιας κλάσης. Οι ρητές στατικές αρχικοποιήσεις εκτελούνται μαζί με τους στατικούς αρχικοποιητές. Μ. Δικαιάκος public class Spoon { static int i; static { i = 47; class Cups { static Cup cup1; static Cup cup2; static { cup1 = new Cup(1); cup2 = new Cup(2); 28

47 29 Aρχικοποίηση στιγμιοτύπου Non-static instance initialization: παρόμοια σύνταξη με τους ρητούς στατικούς αρχικοποιητές: Π.χ.: public class Mugs { Mug mug1; Mug mug2; { mug1 = new Mug(1); mug2 = new Mug(2); System.out.println( Instance Initialization );

48 Άλλα θέματα 30

49 31 Variable Argument Lists Στη JAVA 5.0, οι μέθοδοι μπορούν να δηλωθούν ώστε κατά την κλήση τους να μπορούν να λάβουν μεταβλητό αριθμό παραμέτρων (vararg methods) Π.χ. η System.out.printf() System.out.printf( %d %d 5d\nʼʼ,1,2,3); Οι μέθοδοι vararg τυγχάνουν διαχείρισης από τον μεταγλωττιστή, ο οποίος μετατρέπει μια vararg δήλωση σε κανονική δήλωση μεθόδου που αναμένει σαν παράμετρο ένα πίνακα παραμέτρων. Π.χ.: public static int max(int first, int... rest) {... public static int max(int first, int[] rest) {...

50 32 Enumerated types Στη JAVA 5.0, εκτός από τους τύπους αναφοράς (reference types) Class και Interface, έχει προστεθεί και ο τύπος Απαρίθμησης (Enumerated type ή enum). Ένας τύπος Απαρίθμησης προσδιορίζει ένα πεπερασμένο (απαριθμήσιμο) σύνολο τιμών και εξασφαλίζει ασφάλεια τύπου (type safety): μια μεταβλητή τύπου απαρίθμησης μπορεί να αποθηκεύσει μόνο τιμές αυτού του τύπου ή το null public enum Seasons {WINTER, SPRING, SUMMER, AUTUMN Οι τιμές του τύπου Απαρίθμησης (enumerated values or enum constants) είναι σαν στατικά και τελικά πεδία δεδομένων (static, final data fields) και χρησιμοποιούνται ως εξής: Seasons.WINTER

51 33 Boxing, Unboxing, Autoboxing Integer i = 0; // boxing Number n = 0.0f; // boxing Integer i = 1; int j = i; i++; Integer k = i+2; // i is unboxed and boxed up again i=null; j = i; // unboxing throws NullPointerException

52 Αποκοµιδή Σκυβάλων Garbage Collection

53 35 Αποκομιδή Σκυβάλων Πως δημιουργούνται τα «σκουπίδια» στην JAVA και που είναι αποθηκευμένα; Ποιός είναι ο ρόλος του αποκομιστή σκυβάλων (σκουπιδιάρη); Να απελευθερώνει μνήμη, η οποία έχει δεσμευθεί με τη new και να την επιστρέφει στο σωρό. Είναι αυτό αρκετό για την «εκκαθάριση» αχρείαστων αντικειμένων; Αρκετές φορές, η «εκκαθάριση» των αντικειμένων στη Java δεν είναι πολύ απλή υπόθεση, που μπορεί να αφεθεί στον σκουπιδιάρη. Υπάρχει η πιθανότητα, με τη δημιουργία του αντικειμένου αυτού να έχουν κληθεί βιβλιοθήκες οι οποίες δημιουργούν άλλα αντικείμενα, γραφικά, δεσμεύουν μνήμη χωρίς κλήση της new (με επίκληση ιθαγενών-native μεθόδων) κοκ.

54 36 Γενικές Αρχές για την Αποκομιδή Σκυβάλων Τα αντικείμενά σας μπορεί να μην συλλεχθούν ποτέ από τον αποκομιστή, ακόμη κι αν καταστούν σκουπίδια. Η αποκομιδή σκυβάλων δεν ισοδυναμεί με καταστροφή των αντικειμένων-σκουπιδιών. Η αποκομιδή σκυβάλων αφορά μόνο στην απελευθέρωση μνήμης.

55 Αποτελείωμα και Αποκομιδή Σκυβάλων Μ. Δικαιάκος Ο αποκομιστής σκυβάλων δεν επιλύει το πρόβλημα της εκκαθάρισης αντικειμένων στη Java, διότι: «Απορρίµατα» της Java µπορεί να µη συλλεχθούν από τον αποκοµιστή σκυβάλων. Ο λόγος είναι ότι συχνά τα προγράμματα δεν ξεμένουν από μνήμη, οπότε δεν καλείται ο GC στo χρόνο ζωής τους. Ο αποκομιστής σκυβάλων γνωρίζει πως να αποδεσμεύσει μνήμη που έχει κρατηθεί με την new, όχι όμως και τι θα κάνει με ιδιάζουσες περιπτώσεις μνήμης που έχουν κρατηθεί από κάποιο αντικείμενο. Στη Java, η αποκομιδή σκυβάλων δεν ισοδυναµεί µε καταστροφή των αντικειµένων (όπως στην C++). Αν υπάρχει κάποια δραστηριότητα που πρέπει να εκτελεσθεί πριν την ολοκλήρωση της χρήσης ενός αντικειμένου, τη δραστηριότητα αυτή πρέπει να την καθορίσει σαφώς ο προγραμματιστής. 37

56 38 Finalize Για κάθε κλάση της Java μπορούμε να ορίσουμε μια μέθοδο finalize(), με την οποία μπορούμε να κάνουμε αναγκαίες «εκκαθαρίσεις» που προηγούνται της αποδέσμευσης των αντικειμένων της κλάσης. Στην περίπτωση που έχει οριστεί η finalize, όταν κληθεί ο αποκομιστής σκυβάλων (GC) και επιχειρήσει να απελευθερώσει τη μνήμη αντικειμένου της αντίστοιχης κλάσης ο GC: θα καλέσει πρώτα την finalize στο επόμενο πέρασμά του θα απελευθερώσει τη μνήμη του αντικειμένου Ο GC στοχεύει στην απελευθέρωση µνήµης. Αυτή θα πρέπει να είναι και η δραστηριότητα της finalize, όποτε χρησιμοποιείται. Η χρησιμότητα της finalize περιορίζεται κυρίως σε ειδικές περιπτώσεις («ιθαγενείς» μέθοδοι native methods).

57 39 Ρητή Εκκαθάριση Αντικειμένων Στη Java τα αντικείμενα δημιουργούνται μόνο με χρήση της new. Δεν δημιουργούνται «τοπικά» αντικείμενα (στη στοίβα ) και δεν υπάρχει μέθοδος delete για καταστροφή αντικειμένων. Αν ωστόσο θέλουμε να «εξαναγκάσουμε» την απαλοιφή μη χρησιμοποιούμενων αντικειμένων, μπορούμε να καλέσουμε από το πρόγραμμά μας τον Αποκομιστή Σκυβάλων (GC), ακολουθούμενο από την μέθοδο runfinalization: System.gc(); System.runFinalization(); Πως λειτουργεί η System.runFinalization();

58 40 Παράδειγμα // Demonstration of the garbage // collector and finalization class Chair { static boolean gcrun = false; static boolean f = false; static int created = 0; static int finalized = 0; int i; Chair() { i = ++created; if (created == 47) System.out.println("Created 47");

59 41 Παράδειγμα (συνέχεια) public void finalize() { if (!gcrun) { // The first time finalize() is called: gcrun = true; System.out.println("Beginning to finalize after " + created +" Chairs have been created"); if (i == 47) { System.out.println("Finalizing Chair #47, " + "Setting flag to stop Chair creation"); f = true; finalized++; if (finalized >= created) System.out.println( All " + finalized + finalized");

60 42 Παράδειγμα (συνέχεια) public class Garbage { public static void main(string[] args){ while (!Chair.f) { new Chair(); new String("To take up space"); System.gc(); // forces execution of GC System.runFinalization(); // finalizes all unfinalized objects

61 43 Τεχνικές Αποκομιδής Σκυβάλων

62 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων;

63 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια.

64 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια.

65 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια. Προσέγγιση τού JVM: προσαρμοζόμενος ΑΣ (adaptive)

66 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια. Προσέγγιση τού JVM: προσαρμοζόμενος ΑΣ (adaptive) Stop-and-copy: μεταφορά των ζώντων αντικειμένων από έναν σωρό σε κάποιον άλλο, αφού πρώτα σταματήσει η εκτέλεση του προγράμματος.

67 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια. Προσέγγιση τού JVM: προσαρμοζόμενος ΑΣ (adaptive) Stop-and-copy: μεταφορά των ζώντων αντικειμένων από έναν σωρό σε κάποιον άλλο, αφού πρώτα σταματήσει η εκτέλεση του προγράμματος. Mark-and-sweep: εντοπισμός και υποσημείωση των ζώντων αντικειμένων, ξεκινώντας από την στοίβα και την στατική μνήμη. Μετά το πέρας της υποσημείωσης, σάρωση του σωρού και εκκαθάριση των σκυβάλων.

68 43 Τεχνικές Αποκομιδής Σκυβάλων Reference counting (μέτρηση αναφορών) τι γίνεται με αυτοαναφερόμενες κυκλικές δομές σκυβάλων; Tracing live objects back to references living on the stack or static memory: ιχνηλασία σε ζώντα χειριστήρια. Προσέγγιση τού JVM: προσαρμοζόμενος ΑΣ (adaptive) Stop-and-copy: μεταφορά των ζώντων αντικειμένων από έναν σωρό σε κάποιον άλλο, αφού πρώτα σταματήσει η εκτέλεση του προγράμματος. Mark-and-sweep: εντοπισμός και υποσημείωση των ζώντων αντικειμένων, ξεκινώντας από την στοίβα και την στατική μνήμη. Μετά το πέρας της υποσημείωσης, σάρωση του σωρού και εκκαθάριση των σκυβάλων. δουλεύει ικανοποιητικά όταν δεν υπάρχουν πολλά σκουπίδια

69 44 Αποκομιδή Σκυβάλων στη JAVA

70 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++

71 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό

72 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό Η αποδέσμευση ήταν εξίσου ακριβή:

73 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό Η αποδέσμευση ήταν εξίσου ακριβή: mark-sweep ολόκληρου του σωρού σε κάθε σκούπισμα από τον αποκομιστή σκυβάλων

74 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό Η αποδέσμευση ήταν εξίσου ακριβή: mark-sweep ολόκληρου του σωρού σε κάθε σκούπισμα από τον αποκομιστή σκυβάλων Σε μεταγενέστερες εκδόσεις της JAVA (HotSpot JVM), ο σωρός λειτουργεί σαν ιμάντας (conveyor belt).

75 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό Η αποδέσμευση ήταν εξίσου ακριβή: mark-sweep ολόκληρου του σωρού σε κάθε σκούπισμα από τον αποκομιστή σκυβάλων Σε μεταγενέστερες εκδόσεις της JAVA (HotSpot JVM), ο σωρός λειτουργεί σαν ιμάντας (conveyor belt). Η δημιουργία (μικρών) αντικειμένων γίνεται πάρα πολύ γρήγορα στη JAVA (10 εντολές μηχανής) και πιο φθηνά από την C/C++.

76 44 Αποκομιδή Σκυβάλων στη JAVA Στις αρχικές εκδόσεις της JAVA, η δέσμευση μνήμης για κατασκευή αντικειμένων ήταν εξίσου ακριβή με τη δυναμική δέσμευση μνήμης στη C και στη C++ first-fit ή best-fit αλγόριθμοι για τη διαχείριση του ελεύθερου χώρου στον σωρό Η αποδέσμευση ήταν εξίσου ακριβή: mark-sweep ολόκληρου του σωρού σε κάθε σκούπισμα από τον αποκομιστή σκυβάλων Σε μεταγενέστερες εκδόσεις της JAVA (HotSpot JVM), ο σωρός λειτουργεί σαν ιμάντας (conveyor belt). Η δημιουργία (μικρών) αντικειμένων γίνεται πάρα πολύ γρήγορα στη JAVA (10 εντολές μηχανής) και πιο φθηνά από την C/C++. Επίσης, η αποκομιδή των σκυβάλων είναι πολύ γρήγορη.

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων. Κατασκευαστές. Περίγραμμα. Initializers. Παράδειγμα

Αρχικοποιήσεις Μεταβλητών και Αντικειµένων. Κατασκευαστές. Περίγραμμα. Initializers. Παράδειγμα Περίγραμμα! Αρχικοποίηση και Κατασκευαστές! Υπερφόρτωση Αρχικοποιήσεις Μεταβλητών και Αντικειµένων! Η χρήση του this! Ανασκόπηση αρχικοποιήσεων! Αποκομιδή σκυβάλων Κατασκευαστές 1 2 Initializers! Στην

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

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

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

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

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

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

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

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

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

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

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

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

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

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

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

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

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

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA Βασικά στοιχεία προγραµµατισµού στη JAVA Διαχείριση Μνήµης 3 Δέσμευση Μνήμης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες

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

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks). Δέσμευση Μνήμης (memory allocatio) Τι σημαίνει; Διαχείριση Μνήµης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:

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

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

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

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

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

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

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

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

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1 Αντικείμενα στη Java Παύλος Εφραιμίδης Java Αντικείμενα στη Java 1 Αντικείμενα (Objects) στην Java Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας

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

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

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

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

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

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

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

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

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

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

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

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

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

! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες Δέσμευση Μνήμης! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Διαχείριση Μνήµης! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:! Για την αποδοτική δέσμευση

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 18/4/216 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

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

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

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

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

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

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

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

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

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

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

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi 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: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

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

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

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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

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

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

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

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Οιµέθοδοικαθορίζουντηνσυµπεριφοράενόςαντικειµένου. Τα βασικά µέρη από τα οποία αποτελείται µία µέθοδος είναι τα εξής: Το όνοµα της µεθόδου

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη 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.

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

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

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

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ Type Information 2 Δυναμική Πληροφορία Τύπου Runtime type information (RTTI): μας επιτρέπει να ανακαλύπτουμε και να χρησιμοποιούμε δυναμικά (at run time) πληροφορίες για τον τύπο

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

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

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

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

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

Δομημένος Προγραμματισμός

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

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

Wrapper Classes Τοποθέτηση Δεδομένων Κλήση Μεθόδων. Παναγιώτης Σφέτσος, PhD

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

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται

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

Βασικά στοιχεία προγραµµατισµού στη JAVA

Βασικά στοιχεία προγραµµατισµού στη JAVA Οι τελεστές της JAVA! Η Java χρησιμοποιεί τους ίδιους τελεστές με την C και την C++, και κατά τον ίδιο γενικά τρόπο. Βασικά στοιχεία προγραµµατισµού στη JAVA Τελεστές, Επαναλήψεις, Πίνακες και Παραδείγµατα!

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

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

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

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

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

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016 Πανεπιστήμιο Κύπρου Πολυτεχνική Σχολή Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 Ακαδημαϊκό Έτος 2016-17, Χειμερινό Εξάμηνο 1 η Ενδιάμεση

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 10: Constructors και Destructors Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες

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

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Εισαγωγή στους δείκτες Το μοντέλο της μνήμης, σωρός και στοίβα Αναφορές Δείκτες και πίνακες Δέσμευση και αποδέσμευση μνήμης

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

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

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

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

Διάλεξη 4: Προγραμματισμός σε JAVA IΙ. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 4: Προγραμματισμός σε JAVA IΙ. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 4: Προγραμματισμός σε JAVA IΙ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: -Μέθοδοι - Πίνακες, Πολυδιάστατοι Πίνακες - Boxing/Unboxing - Χρήσιμες βιβλιοθήκες

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