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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

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

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

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

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

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

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

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

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

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

Διαδικασιακός Προγραμματισμός

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

Προγραμματιστικές τεχνικές

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

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

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

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

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

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

Προγραμματιστικές τεχνικές

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

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

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

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

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

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

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

Τι είναι κλάση Κλάση

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

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

Προγραμματισμός Υπολογιστών με C++

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

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

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Διαδικασιακός Προγραμματισμός

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Ενδεικτική περιγραφή μαθήματος

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Υπολογιστών με C++

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

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

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

Transcript:

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

4.1. Οριςμόσ φνθετων τφπων κλάςεων 2

Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα πάντα είναι αντικείμενα κάποιασ κλάςησ. Η κλάςη είναι ουςιαςτικά ένασ ςύνθετοσ τύποσ δεδομένων εφοδιαςμένοσ με τισ λειτουργίεσ χειριςμού των δεδομένων. 3

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

ΠΑΡΑΔΕΙΓΜΑ: Δίνουμε τον οριςμό ενόσ ςφνθετου τφπου δεδομζνων / κλάςησ Person για την αποθήκευςη των ςτοιχείων όλου το ζμψυχου δυναμικοφ ενόσ ςχολείου (μαθητζσ, καθηγητζσ, διοικητικό προςωπικό). Όλοι έχουν ςτη βάςη δεδομένων του ςχολείου: όνομα, επώνυμο και έναν μοναδικό αριθμό μητρώου (id). public class Person { public String firstname; public String lastname; public int id; } Κάθε κλάςη πρέπει να ορίζεται ςε ξεχωριςτό αρχείο με το ίδιο όνομα και κατάληξη.java, π.χ. Person.java. 5

6 4.2. Καταςκευαςτζσ και καταςτροφείσ

Κάθε κλάςη πρέπει να έχει: τουλάχιςτον μία μέθοδο η οποία εκτελείται όταν δημιουργείται ένα αντικείμενο τησ (ςτιγμιότυπό τησ). Αυτέσ οι μέθοδοι λέγονται καταςκευαςτέσ τησ κλάςησ. 7

Ο καταςκευαςτήσ έχει την ευθύνη δυο λειτουργιών: 1) να δεςμεύςει την απαραίτητη μνήμη για το αντικείμενο που δημιουργείται 2) να αρχικοποιήςει όλεσ τισ μεταβλητέσ ή τα αντικείμενα που είναι ενςωματωμένα. 8

Η δήλωςη του καταςκευαςτή μοιάζει αρκετά με τη δήλωςη τησ μεθόδου, αλλά έχει κάποιεσ διαφορέσ: Δεν έχει ποτέ τύπο επιςτροφήσ (π.χ. int, boolean, κ.α) ούτε όμωσ ςυντάςςεται με τη λέξη κλειδί void μετά τη λέξη public. Το όνομα του είναι πάντα το ίδιο με το όνομα τησ κλάςησ Ο καταςκευαςτήσ που δεν παίρνει κανένα όριςμα λέγεται προκαθοριςμένοσ καταςκευαςτήσ τησ κλάςησ και δημιουργείται αυτόματα αν εμείσ δεν ορίςουμε κανέναν καταςκευαςτή. 9

ΠΑΡΑΔΕΙΓΜΑ: Διάφορα είδη κατασκευαστών για την κλάση Person: public Person() { firstname = Γιάννησ ; lastname = Αγιάννησ ; id = 0; } Τα δεδομένα firstname, lastname, id λέγονται πεδία τησ κλάςησ Person. Κάθε αντικείμενο τησ κλάςησ Person εμπεριέχει τα τρία αυτά πεδία. 10

Person alan, alonzo; Η παραπάνω εντολή: δεν δημιουργεί κανένα αντικείμενο Δημιουργεί μόνο δυο θέςεισ ςτη μνήμη ςτην οποία θα καταχωρηθούν οι διευθύνςεισ ςτη μνήμη των αντικειμένων alan και alonzo όταν αυτά δημιουργηθούν. Στην Java αυτά ονομάζονται αναφορέσ ςτα αντικείμενα. 11

Για να δημιουργήςουμε τα αντικείμενα πρέπει να καλέςουμε τον καταςκευαςτή τησ κλάςησ χρηςιμοποιώντασ τη λέξη new. Η δήλωςη αρχίζει με τη λέξη new που ακολουθείται από τον καταςκευαςτή του αντικειμένου. alan = new Person(); alonzo = new Person(); 12

Αν θέλουμε να αλλάξουμε τα δεδομένα χρηςιμοποιούμε τον τελεςτή τελεία. για πρόςβαςη ςτα δεδομένα: alan.firstname = Alan ; alan.lastname = Turing ; alan.id = 1; 13

Μποροφμε να ορίςουμε ζναν άλλο καταςκευαςτή ο οποίοσ να δζχεται ςαν ορίςματα τισ τιμζσ των πεδίων: public Person(String firstname, String lastname, int id) { } this.firstname = firstname; this.lastname = lastname; this.id = id; Η δεςμευμένη λέξη this είναι μια αναφορά ςτο αντικείμενο που δημιουργείται. Για να δημιουργήςουμε τώρα το ίδιο ακριβώσ αντικείμενο με προηγουμένωσ δίνουμε την παρακάτω εντολή: Person alan = new Person( Alan, Turing, 1); 14

Σε οριςμένεσ γλώςςεσ προγραμματιςμού όπωσ η C++ και η Object PASCAL υπάρχουν οι καταςτροφείσ οι οποίοι: απελευθερώνουν μνήμη αν έχει δεςμευτεί, κλείνουν αρχεία που έχουν ανοίξει και γενικότερα αποδεςμεύουν ομαλά τουσ υπολογιςτικούσ πόρουσ που χρηςιμοποιεί το αντικείμενο αφού δεν χρειάζονται πλέον. 15

Στην Java δεν υπάρχουν καταςτροφείσ η ευθύνη τησ αποδέςμευςησ δεν βαρύνει τον προγραμματιςτή αλλά τη γλώςςα Το έργο αυτό το έχει αναλάβει ο ςυλλέκτησ απορριμμάτων ο οποίοσ: ελέγχει τη μνήμη για αντικείμενα που δεν χρηςιμοποιούνται πλέον και πρέπει να καταςτραφούν. είναι μέροσ τησ εικονικήσ μηχανήσ (Virtual Machine) τησ Java η οποία μόλισ διαπιςτώςει ότι ο ςωρόσ (heap) τησ μνήμησ κοντεύει να γεμίςει ενεργοποιεί το ςυλλέκτη απορριμμάτων. 16

Ωςτόςο υπάρχουν περιπτώςεισ που θα θέλαμε πριν αποδεςμευτεί ένα αντικείμενο να κάνουμε κάποιεσ ςημαντικέσ ενέργειεσ, όπωσ να κλείςουμε ομαλά κάποια αρχεία. Για αυτόν τον ςκοπό υπάρχει ςτην Java η μέθοδοσ finalize() η οποία υπάρχει ςε κάθε κλάςη και την οποία μπορούμε να υλοποιήςουμε μόνο αν το θεωρούμε απολύτωσ απαραίτητο. Η finalize καλείται από τον ςυλλέκτη απορριμμάτων λίγο πριν την καταςτροφή του αντικειμένου. 17