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



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

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

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

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

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

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

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

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

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

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

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

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

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

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

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

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

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

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

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

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

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

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

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

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

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

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

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

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

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

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

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

API: Applications Programming Interface

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

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

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

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

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

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

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

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

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

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

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

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

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

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

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

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

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

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

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

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

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

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

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

Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται και θέλουμε να τις βάλουμε μαζί.

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

Προγραµµατισµός ΙΙ Java 2

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

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

Βασικά της γλώσσας JAVA

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

Βασικές Έννοιες Δοµών Δεδοµένων

ΕΠΛ 012. JavaScripts

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

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

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

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

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

Transcript:

Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο, ακολουθούµενοαπόπαρενθέσεις. Γιαπαράδειγµα: VolcanoRobot dante = new VolcanoRobot(); Οι παρενθέσεις µπαίνουν ακόµη και αν δεν έχω ορίσµατα όπως στο προηγούµενο παράδειγµα. Σε άλλες περιπτώσεις µπορώ να έχω ορίσµατα όπως στο παράδειγµα που ακολουθεί: Point pt = new Point(0,0); Οαριθµόςκαιοτύποςτωνορισµάτωνκαθορίζονταιµέσααπότηνίδιατην κλάση χρησιµοποιώντας µια ειδική µέθοδο που ονοµάζεται constructor. Οι constructors είναι µέθοδοι που αρχικοποιούν ένα αντικείµενο και τις µεταβλητές του. Μέσα σε µία κλάση µπορώ να έχω πολλαπλούς ορισµούς constructor και καθένας από αυτούς να έχει διαφορετικό πλήθος και τύπο ορισµάτων. Με τη χρήση του new η java δεσµεύει την απαραίτητη µνήµη που χρειάζεται για το αντικείµενο. Η απελευθέρωση αυτής της δεσµευµένης µνήµης γίνεται αυτόµατα και δεν χρειάζεται να το κάνει ο προγραµµατιστής. 1

Στοπαράδειγµαπουακολουθείβλέπουµεαντικείµενοµιαςκλάσηςµε 1 ή 2 ορίσµατα στην κλάση που αναφέρεται µετά το new. Η κλάση StringTokenizer Η κλάση αυτή υπάρχει στη βιβλιοθήκη κλάσεων της java και είναι µέρος του πακέτου java.util. Τα αντικείµενα αυτής της κλάσης παίρνουν ένα String και µια λίστα από stop χαρακτήρες και χωρίζουν το string αυτό σε SubStrings του αρχικού string που τελειώνουν µε τους stop χαρακτήρες. Αν δεν υπάρχει λίστα από stop χαρακτήρες θεωρεί το κενό ως stop χαρακτήρα. Κάθετέτοιο substring ονοµάζεται token. Γιαπαράδειγµατο string this is the first course θαδώσει 5 tokens (1 ο this, 2 ο is, 3 ο the, 4 ο first, 5 ο course). Αν δώσωσαν stop χαρακτήρατο @ στο string 11@02@23 θαπάρω 3 tokens (1 ο 11, 2 ο 02, 3 ο 23) Βασικές µέθοδοι της κλάσης nexttokenεξάγειτοεπόµενο String πουοριοθετείταιαπότους stop χαρακτήρες και µετακινεί τον δείκτη στο επόµενο String hasmoretoken επιστρέφει true αν υπάρχουν άλλα tokens. Το αποτέλεσµα του προηγούµενου παραδείγµατος είναι: Στοπαράδειγµαδηµιουργήθηκαν 2 αντικείµενα StringTokenizer χρησιµοποιώντας διαφορετικά ορίσµατα στην κλάση που αναφέρεται µετά τον new. Στην πρώτη περίπτωση το όρισµα είναι το string µε το όνοµα quote1 και στην δεύτερητο quote2 καιοχαρακτήρας @ που είναι ο νέος stop χαρακτήρας. 2

Στο παρακάτω παράδειγµα ορίζω 3 αντικείµενα της κλάσης Date καθένα εκ των οποίων παίρνει διαφορετικά ορίσµατα. Το πρώτο δεν παίρνει κανένα όρισµα, το δεύτερο παίρνει 5 ακεραίους σαν ορίσµατα και το τρίτο µία συµβολοσειρά. Το πρώτο επιστρέφει την τρέχουσα ηµεροµηνία, το δεύτερο επιστρέφει την ηµεροµηνία που του δίνω στους 5 ακεραίους και το τρίτο την ηµεροµηνία που του δίνω στη συµβολοσειρά. import java.util.date; public class ReturnDate { public static void main(string args[]){ Date d1, d2, d3; d1= new Date(); System.out.println("Date 1: "+d1); d2= new Date(71,07,1,3,30); System.out.println("Date 2: "+d2); d3= new Date("April 3 1973 21:24"); System.out.println("Date 3: "+d3); Date 1: Thu Mar 05 12:53:46 EET 2009 Date 2: Sun Aug 01 03:30:00 EET 1971 Date 3: Tue Apr 03 21:24:00 EET 1973 Οτελεστήςτελεία "." Ο τελεστής "." χρησιµοποιείται για να αναφερθώ στις µεταβλητές και στις µεθόδους ενός αντικειµένου. Στα αριστερά της τελείας είναι το αντικείµενο και στα δεξιά η µεταβλητή. Θυµηθείτε το αντικείµενο dante της κλάσης VolcanoRobot και τον τρόπο που αναφερόµαστε σεµεταβλητέςκαιµεθόδουςτουαντικειµένουπ.χ. dante.status, dante.speed, dante.showattributes(), dante.checktemperature(). Η εκχώρηση τιµής σε µία µεταβλητή αντικειµένου γίνεται όπως στις απλές µεταβλητές. dante.speed=15; Και η αλλαγή τιµών γίνεται εξίσου απλά. Στο παράδειγµα που ακολουθεί φαίνεται πως γίνεται η αλλαγή τιµών στις µεταβλητές του αντικειµένου της κλάσης Point. Η κλάση Point είναι µέρος του πακέτου java.awt και αναφέρεται σε σηµείο µε συντεταγµένες x και y. 3

import java.awt.point; public class SetPoints { public static void main(string args[]){ Point location = new Point(4,13); System.out.println("Starting location: "); System.out.println("X equals " + location.x); System.out.println("Y equals " + location.y); System.out.println("\nChange values of x and y"); location.x=7; location.y=6; System.out.println("\nNew location: "); System.out.println("X equals " + location.x); System.out.println("Y equals " + location.y); Starting location: X equals 4 Y equals 13 Change values of x and y New location: X equals 7 Y equals 6 Μεταβλητές κλάσης Οιµεταβλητέςκλάσηςορίζονταιµέσαστηνίδιατηνκλάσηκαιέχουντηνίδιατιµήγια όλα τα αντικείµενα της κλάσης. ηλώνονταιχρησιµοποιώνταςτηνλέξηκλειδί staticπριντοόνοµατηςµεταβλητής. Για παράδειγµα class citizens { static String city = Athens ; int age; String name; Αν ορίσω κάποιο αντικείµενο της κλάσης αυτής και αλλάξω την τιµή της µεταβλητής city τότε η τιµή θα αλλάξει για όλα τα αντικείµενα της κλάσης. Για να αποφευχθούν τέτοιες κατά λάθος αλλαγές καλόν θα ήταν να αλλάζουµε την τιµή της µεταβλητής κλάσης µέσα στον κώδικα και όχι αντικειµένου της κλάσης. οκιµάστε να τυπώσετε την τιµή της µεταβλητής city της κλάσης του προηγούµενου παραδείγµατος. Στη συνέχεια ορίστε 2 αντικείµενα της κλάσης και προσπαθήστε να αλλάξετε την τιµή της µεταβλητής city είτε σαν µεταβλητής αντικειµένου είτε σαν µεταβλητής κλάσης. Τυπώστε τα αποτελέσµατα. 4

Παράδειγµα χρήσης της κλάσης String και των µεθόδων της. Ηκλήσηµιαςµεθόδουσεένααντικείµενογίνεταιµετηχρήσητουτελεστή τελεία όπως και στις µεταβλητές αντικειµένου. Το όνοµα του αντικειµένου είναι στα αριστερά της τελείας και το όνοµα της µεθόδου στα δεξιά. Παράδειγµα χρήσηςτωνµεθόδων length(), charat(), substring(), indexof(), touppercase(). class klhsh_methodvn { public static void main(string args[]) { String str = "Java is an object oriented programming language"; System.out.println("The string is: " + str); System.out.println("Length of this string: "+ str.length()); System.out.println("The character at position 5: "+ str.charat(5)); System.out.println("The substring from 11 to 17: "+ str.substring(11, 17)); System.out.println("The index of the character d: "+ str.indexof('d')); System.out.print("The index of the beginning of the "); System.out.println("substring \"Java\":"+ str.indexof("java")); System.out.println("The string in upper case: "+ str.touppercase()); Επιστρέφει το µήκος του string Επιστρέφειτον 5 ο χαρακτήρα The string is: Java is an object oriented programming language Length of this string: 47 The character at position 5: i (η µέτρηση αρχίζει από το 0. Στη θέση 0 έχουµε το J στη θέση 1 το a κ.λπ.) The substring from 11 to 17: object The index of the character d: 25 The index of the beginning of the substring "Java":0 The string in upper case: JAVA IS AN OBJECT ORIENTED PROGRAMMING LANGUAGE Επιστρέφει τους χαρακτήρες στο διάστηµα 11-17 Επιστρέφουν την θέση του χαρακτήρα ή substring Μετατρέπει σε κεφαλαία Αναφορά σε αντικείµενα import java.awt.point; public class references_test { public static void main (String args[]) { Point pt1, pt2; pt1 = new Point(3, 14); pt2 = pt1; System.out.println("Point1: " + pt1.x + ", " + pt1.y); System.out.println("Point2: " + pt2.x + ", " + pt2.y); pt1.x = 6; pt1.y = 7; System.out.println("Point1: " + pt1.x + ", " + pt1.y); System.out.println("Point2: " + pt2.x + ", " + pt2.y); Το αντικείµενο pt2 δεν έχει δηµιουργηθεί. Αυτό που κάνω µε την µεταβλητή pt2 είναι να δηµιουργήσωµίααναφοράστοαντικείµενο pt1 και όχι να δηµιουργήσω ένα νέο αντικείµενο. Τι θαγίνειανδηµιουργήσωένανέοαντικείµενο; Point1: 3, 14 Point2: 3, 14 Point1: 6, 7 Point2: 6, 7 5

Οι τελεστές == και!= µε αντικείµενα Οι τελεστές σύγκρισης ισχύουν για πρωταρχικούς τύπους δεδοµένων. ύο από αυτούς οι == και!= εφαρµόζονται και στην περίπτωση που έχω να κάνω µε αντικείµενα. Στην περίπτωση των αντικειµένων δεν συγκρίνω τις τιµές τους αλλά αν τα δύο αντικείµενα αναφέρονται στο ίδιο αντικείµενο. Γιαπαράδειγµατααντικείµενατηςκλάσης String.Είναιδυνατόνναέχω 2 τέτοια αντικείµενα µε τις ίδιες τιµές. Αν όµως εφάρµοζα µεταξύ τους τον τελεστή == θα έπαιρνα false και αυτό διότι αναφέροµαι σε διαφορετικά αντικείµενα. Για να συγκρίνω τις τιµές δύο αντικειµένων της κλάσης String χρησιµοποιώ ως τελεστή την µέθοδο equals() η οποία συγκρίνει τις τιµές δύο διαφορετικώναντικειµένωνκαιεπιστρέφει true ανέχουντιςίδιεςτιµές. Στο παράδειγµα που ακολουθεί δηλώνω δύο µεταβλητές τύπου String και δηµιουργώένανέοαντικείµενοµετοντελεστή new γιατηνµίαµεταβλητή. Στη συνέχεια θέτω την δεύτερη µεταβλητή ίση µε την πρώτη. Ο έλεγχος ισότητας που ακολουθεί δίνει true. Στη συνέχεια δηµιουργώ ένα νέο αντικείµενο µε την ίδια τιµή για τη δεύτερη µεταβλητή. Ο έλεγχος ισότητας δίνει false γιατί αναφέροµαι σε 2 διαφορετικά αντικείµενα που έχουν ίδιες τιµές. Ο έλεγχος ισότητας τιµών που ακολουθεί δίνει false. true false true 6

Εύρεση της κλάσης ενός αντικειµένου και έλεγχος αν ένα αντικείµενο ανήκει σε κάποια κλάση Για να µάθω την κλάση ενός αντικειµένου που έχει εκχωρηθεί στην µεταβλητή x γράφω το εξής: String class_name = x.getclass().getname(); Στην µεταβλητή class_name παίρνω το όνοµα της κλάσης. Για να διαπιστώσω αν ένα αντικείµενο το οποίο έχει εκχωρηθεί στην µεταβλητή x είναι αντικείµενο της κλάσης Y γράφω το εξής: boolean answer = x instanceof Y; Η µεταβλητή answer παίρνει την τιµή true αν το X είναι αντικείµενο της κλάσης Y. Στα παραδείγµατα που ακολουθούν χρησιµοποιώ την µέθοδο εντοπισµού µιας κλάσης ενός αντικειµένου καθώς και την επαλήθευση ή µη του αν ένα αντικείµενο είναι αντικείµενο κάποιας κλάσης. import java.awt.point; public class SetPoints { public static void main(string args[]){ Point location = new Point(4,13); System.out.println("Starting location: "); System.out.println("X equals " + location.x); System.out.println("Y equals " + location.y); System.out.println("\nChange values of x and y"); location.x=7; location.y=6; System.out.println("\nNew location: "); System.out.println("X equals " + location.x); System.out.println("Y equals " + location.y); boolean k= location instanceof Point; System.out.println(k); String class_name = location.getclass().getname(); System.out.println(class_name); Starting location: X equals 4 Y equals 13 Change values of x and y New location: X equals 7 Y equals 6 true java.awt.point 7

public class Motorcycle { String make; String color; boolean enginestate; void startengine() { if (enginestate == true) System.out.println("The engine is already on."); else { enginestate = true; System.out.println("The engine is now on."); void showatts() { System.out.println("This motorcycle is a " + color + " " + make); if (enginestate == true) System.out.println("The engine is on."); else System.out.println("The engine is off."); public class motorcycles { public static void main (String args[]) { Motorcycle m = new Motorcycle(); m.make = "Yamaha RZ350"; m.color = "yellow"; System.out.println("Calling showatts..."); m.showatts(); System.out.println(" "); System.out.println("Starting engine..."); m.startengine(); System.out.println(" "); System.out.println("Calling showatts..."); m.showatts(); System.out.println(" "); System.out.println("Starting engine..."); m.startengine(); String class_name = m.getclass().getname(); This motorcycle is a yellow Yamaha RZ350 The engine is off. Starting engine... The engine is now on. Calling showatts... This motorcycle is a yellow Yamaha RZ350 The engine is on. Starting engine... The engine is already on. Η κλάση είναι η Motorcycle System.out.println("The class is the class with name " +class_name); 8