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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

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

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

Προγραμματισμός ΙI (Θ)

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός ΙI (Θ)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

Εισαγωγή στα Αντικείμενα

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

Κλάσεις και αντικείμενα #include <iostream.h<

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

Τελικό τεστ - απαντήσεις

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Γλώσσες Προγραμματισμού

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

Transcript:

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

ΚΑΤΑΝΟΜΗ Σ ΓΙΑ ΒΑΣΙΚΟΥΣ ΤΥΠΟΥΣ ΔΕΔΟΜΕΝΩΝ (PRIMITIVE TYPES, π.χ. int, flot, double κ.λ.π.)

Τιμές και Αναφορές Οι διαφορές μεταξύ πρωταρχικών τύπων και αντικειμένων Οι πρωταρχικοί τύποι κρατάνε τιμές Οι τύποι αντικειμένων κρατάνε αναφορές

ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ double = 1.; double = ; = 4.; Μεταβλητή τύπου double στην οποία καταχωρείται η τιμή 1. Κατανομή μνήμης, δηλ. διατίθεται χώρος μέσα στη μνήμη για να αποθηκευθούν οι μεταβλητές 1. 1. 4. Μεταβλητή τύπου double στην οποία καταχωρείται η τιμή της μεταβλητής Αλλαγή της τιμής της μεταβλητής. Η παλιά τιμή (το 1.) χάνεται

double = 1.; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ double = ; = 4.; Μεταβλητή τύπου double στην οποία καταχωρείται η τιμή 1. ΘΕΣΕΙΣ Σ 1. 4. 1. Κατανομή μνήμης, δηλ. διατίθεται χώρος μέσα στην μνήμη για να αποθηκευθούν οι μεταβλητές 1. 1. 4. Κατάσταση στη μνήμη (2 θέσεις μνήμης έχουν καταληφθεί) Μεταβλητή τύπου double στην οποία καταχωρείται η τιμή της μεταβλητής Αλλαγή της τιμής της μεταβλητής. Η παλιά τιμή (το 1.) χάνεται

ΔΗΜΙΟΥΡΓΙΑ ΑΝΤΙΚΕΙΜΕΝΩΝ ΚΑΤΑΝΟΜΗ Σ «ΣΥΝΔΕΣΗ ΑΠΟΣΥΝΔΕΣΗ» ΤΥΠΩΝ ΑΝΑΦΟΡΩΝ ΣΕ/ΑΠΟ ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΤΑΣΤΡΟΦΗ ΑΝΤΙΚΕΙΜΕΝΩΝ

public int ; public int ; 1η ενέργεια Κατανομή μνήμης για τα ttributes του αντικειμένου Μεταβλητή αναφοράς (reference tpe) που θα αναφέρεται σε αντικείμενο της κλάσης Point ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; = new Point(); Εντολή με new = ΔΗΜΙΟΥΡΓΙΑ ΑΝΤΙΚΕΙΜΕΝΟΥ 2η ενέργεια Αναζήτηση κατάλληλου constructor στη δήλωση της κλάσης κλήση του defult constructor (αφού δεν έχει δηλωθεί κάποιος) Αντικείμενο της κλάσης Point στο οποίο αναφέρεται η μεταβλητή αναφοράς (reference tpe) 3η ενέργεια Αρχικοποίηση των μεταβλητών με τις b defult τιμές για ακεραίους (μηδέν)

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; = new Point(); Point b = ; Ισοδύναμες με : Point = new Point(); Πώς αναφερόμαστε στα και ; b Μέσω της μεταβλητής αναφοράς π.χ..,. Δύο μεταβλητές αναφοράς στο ίδιο αντικείμενο (b.=. και b.=.)

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); Point b = ; b Δημιουργία νέου αντικειμένου στη μνήμη χωρίς καμία μεταβλητή να αναφέρεται σε αυτό (αδύνατον να το χειριστούμε, απροσπέλαστο)

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); = new Point(); Point b = ; b Δημιουργία νέου αντικειμένου στη μνήμη στο οποίο αναφέρεται η μεταβλητή. Τώρα στο 1 ο αντικείμενο αναφέρεται μόνο η μεταβλητή b (. b. κι. b.)

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); = new Point(); Point b = ; Τελική κατάσταση στη μνήμη (3 αντικείμενα τύπου Point και 2 μεταβλητές αναφοράς τύπου Point) b b ΘΕΣΕΙΣ Σ

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); = new Point(); Point b = ; b ΘΕΣΕΙΣ Σ Το αντικείμενο στη μνήμη που δεν έχει καμία μεταβλητή να αναφέρεται σε αυτό, θα καταστραφεί (grbge collection) και θα αποδεσμευτεί ο χώρος μνήμης που καταλαμβάνει. Το grbge collection συμβαίνει αυτόματα και κατά περιόδους.

public int ; public int ; b ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ ΘΕΣΕΙΣ Σ Point ; = new Point(); Point b = ; new Point(); = new Point(); = null; Καταργείται η σύνδεση της μεταβλητής αναφοράς με το αντικείμενο που συνδεόταν. Η μεταβλητή τώρα δεν δείχνει κανένα αντικείμενο. Στη συνέχεια μπορεί να συνδεθεί με άλλο αντικείμενο που θα δημιουργηθεί

public int ; public int ; b ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ ΘΕΣΕΙΣ Σ Point ; = new Point(); Point b = ; new Point(); = new Point(); = null; Καταργείται η σύνδεση της μεταβλητής αναφοράς με το αντικείμενο που συνδεόταν. Η μεταβλητή τώρα δεν δείχνει κανένα αντικείμενο. Στη συνέχεια μπορεί να συνδεθεί με άλλο αντικείμενο που θα δημιουργηθεί grbge collection

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); = new Point(); Point b = ; = null; b c ΘΕΣΕΙΣ Σ 3 Βασικός τύπος δεδομένου όχι reference (μεταβλητή αναφοράς) int c =3; c =b.;

public int ; public int ; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point ; new Point(); = new Point(); = new Point(); Point b = ; = null; int c =3; b c ΘΕΣΕΙΣ Σ 3 c =b.;...συνεχεια ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΤΕΛΟΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Καταστροφή αντικειμένων Αποδέσμευση χώρου μνήμης

public int ; public int ; Point ; = new Point(); Poin t b = ; new Point(); = new Point(); = null; double c =3.; ΤΕΛΟΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ c =b.;..

ΚΛΗΣΗ ΤΗΣ ΜΕΘΟΔΟΥ ΤΟΥ ΚΑΤΑΣΚΕΥΑΣΤΗ, ΟΤΑΝ ΥΠΑΡΧΕΙ ΔΗΛΩΜΕΝΟΣ ΚΑΤΑΣΚΕΥΑΣΤΗΣ ΣΤΗΝ ΚΛΑΣΗ

public clss Circle { privte double,,r; ΚΩΔΙΚΑΣ ΚΛΑΣΗΣ public Circle (double 1, double 1, double r1) { = 1 ; = 1 ; r = r1 ; // methods public double re() { public double circumference() { public String tostring() { ΠΡΟΓΡΑΜΜΑ ΧΡΗΣΗΣ ΤΗΣ ΚΛΑΣΗΣ clss usecircle { public sttic void min(string [] rgs[]) { Circle c1 = new Circle(1.,1.,5.); c1 1. 1. 5. 1. 1. r 5. ΜΕΤΑΦΟΡΑ ΡΟΗΣ ΠΕΡΑΣΜΑ ΤΙΜΩΝ ΣΤΙΣ ΠΑΡΑΜΕΤΡΟΥΣ ΕΠΙΣΤΡΟΦΗ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ c1 r ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΗΣ ΔΗΜΙΟΥΡΓΙΑΣ ΑΝΤΙΚΕΙΜΕΝΟΥ ΘΕΣΕΙΣ Σ 1. 1. 5. Π Ρ Ο Γ Ρ / Τ Ο Σ

ΘΕΜΑΤΑ ΚΑΤΑΝΟΜΗΣ Σ ΚΑΙ ΚΑΤΑΣΤΡΟΦΗΣ ΑΝΤΙΚΕΙΜΕΝΩΝ (GARBAGE COLLECTION) ΣΕ COMPOSED ΚΛΑΣΕΙΣ δηλ. κλάσεις που διαθέτουν ιδιοχαρακτηριστικά του τύπου κάποιας άλλης κλάσης (δηλ. ο τύπος τους δεν είναι κάποιος από τους βασικούς τύπους δεδομένων (primitive tpes, π.χ. int, flot, double κ.λ.π.) ούτε String)

public int ; public int ; clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); c center rdius 4 Αντικείμενο της κλάσης Point στο οποίο αναφέρεται η μεταβλητή αναφοράς και η μεταβλητή αναφοράς center του αντικειμένου Ccle Αντικείμενο της κλάσης Ccle στο οποίο αναφέρεται η μεταβλητή αναφοράς c

public int ; public int ; Καταργείται η σύνδεση της reference με το αντικείμενο Point. clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; ΘΕΣΕΙΣ Σ ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c center Αντικείμενο της κλάσης Point. Αναφέρεται σε αυτό η reference και η reference center του αντικειμένου Ccle rdius 4 Αντικείμενο της κλάσης Ccle. Αναφέρεται σε αυτό η reference c

public int ; public int ; clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; ΘΕΣΕΙΣ Σ c center Αντικείμενο της κλάσης Point. Αναφέρεται σε αυτό η reference και η reference center του αντικειμένου Ccle rdius 4 Αντικείμενο της κλάσης Ccle. Αναφέρεται σε αυτό η reference c

public int ; public int ; Κανένα αντικείμενο δεν καταστρέφεται γιατί έχουν references που συνδέονται με αυτά Αντικείμενο της κλάσης Point. Αναφέρεται σε αυτό η reference και η reference center του αντικειμένου Ccle clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; c center rdius ΘΕΣΕΙΣ Σ 4 ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c = null; Καταργείται η σύνδεση της reference c με το αντικείμενο Ccle. Αντικείμενο της κλάσης Ccle. Αναφέρεται σε αυτό η reference c

public int ; public int ; clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c = null; ΘΕΣΕΙΣ Σ c center Αντικείμενο της κλάσης Point. Αναφέρεται σε αυτό η reference και η reference center του αντικειμένου Ccle rdius 4 Αντικείμενο της κλάσης Ccle. Αναφέρεται σε αυτό η reference c

public int ; public int ; Και τα 2 αντικείμενα θα καταστραφούν γιατί με τη reference center δεν συνδέεται πλέον καμία reference, άρα είναι απροσπέλαστη Αντικείμενο της κλάσης Point. Αναφέρεται σε αυτό η reference και η reference center του αντικειμένου Ccle clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; c center rdius ΘΕΣΕΙΣ Σ 4 ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c = null; Άρα ο σύνδεσμος της με το αντικείμενο Point είναι άχρηστος Αντικείμενο της κλάσης Ccle. Αναφέρεται σε αυτό η reference c

public int ; public int ; Καταστροφή αντικειμένων, αποδέσμευση χώρου μνήμης clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; c ΘΕΣΕΙΣ Σ ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c = null;...συνεχεια ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΤΕΛΟΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ

public int ; public int ; clss Ccle { privte int rdius; privte Point center; public Ccle(Point p, int r) { center = p; rdius = r; ΕΚΤΕΛΕΣΗ ΜΕΜΟΝΩΜΕΝΩΝ ΕΝΤΟΛΩΝ ΠΡΟΓΡΑΜΜΑΤΟΣ Point = new Point(); Ccle c = new Ccle(,4); = null; c = null; ΤΕΛΟΣ ΕΚΤΕΛΕΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ

Equlit vs Identit

Πηγές/Acknowledgements Σ. Γεωργαντάκη, Μία τεχνολογικά υποστηριζόμενη διδακτική προσέγγιση για τον αντικειμενοστρεφή προγραμματισμό, Πανεπιστήμιο Πειραιώς