User Tools

Site Tools


java:objects

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:objects [2022/02/23 10:36]
gthanos [Ένα πιο εκτεταμένο παράδειγμα]
java:objects [2022/02/23 15:10]
gthanos [Επεξήγηση του παραπάνω κώδικα]
Line 142: Line 142:
 </code> </code>
  
 +<WRAP todo 80% center round>
 Δημιουργήστε ένα project με τα παραπάνω τρία αρχεία java στο IDE της επιλογής σας και εκτελέστε τον κώδικα. Τρέξτε τον κώδικα βήμα-βήμα βλέποντας πως αλλάζουν οι τιμές των μεταβλητών. Δημιουργήστε ένα project με τα παραπάνω τρία αρχεία java στο IDE της επιλογής σας και εκτελέστε τον κώδικα. Τρέξτε τον κώδικα βήμα-βήμα βλέποντας πως αλλάζουν οι τιμές των μεταβλητών.
 +</WRAP>
 ==== Επεξήγηση του παραπάνω κώδικα ===== ==== Επεξήγηση του παραπάνω κώδικα =====
  
Line 179: Line 181:
     rect2.setOrigin(origin1);     rect2.setOrigin(origin1);
     // display rect2 origin     // display rect2 origin
-    System.out.println("[rect2]  origin.x: " + rect2.origin.+ ", origin.y: " + rect2.origin.y);+    System.out.println("[rect2]  origin.x: " + rect2.getOrigin().getX() + ", origin.y: " + rect2.getOrigin().getX());
          
     // move rect2 origin and display its new position     // move rect2 origin and display its new position
Line 185: Line 187:
          
     // print origin of rect1 and rect2     // print origin of rect1 and rect2
-    System.out.println("[rect1]  origin.x: " + rect1.origin.+ ", origin.y: " + rect1.origin.y); +    System.out.println("[rect1]  origin.x: " + rect1.getOrigin().getX() + ", origin.y: " + rect1.getOrigin().getY()); 
-    System.out.println("[rect2]  origin.x: " + rect2.origin.+ ", origin.y: " + rect2.origin.y);+    System.out.println("[rect2]  origin.x: " + rect2.getOrigin().getX() + ", origin.y: " + rect2.getOrigin().getY());
 </code> </code>
  
 Στις γραμμές αυτές συμβαίνουν τα εξής: Στις γραμμές αυτές συμβαίνουν τα εξής:
-    - Το αντικείμενο ''rect2'' επιλέγει ως πεδίο origin to ''origin1''. Στη συνέχεια, μέσω του ''rect2'' μεταβάλλονται οι συντεταγμένες του αντικειμένου ''origin1''.+    - Το αντικείμενο ''rect2'' επιλέγει ως πεδίο origin to ''origin1'' 
 +    - Στη συνέχεια, μέσω του ''rect2'' μεταβάλλονται οι συντεταγμένες του αντικειμένου ''origin1''.
     - Εκτυπώνονται οι αλλαγές για το ''rect1'' στην κονσόλα.     - Εκτυπώνονται οι αλλαγές για το ''rect1'' στην κονσόλα.
     - Εκτυπώνονται οι αλλαγές για το ''rect2'' στην κονσόλα.      - Εκτυπώνονται οι αλλαγές για το ''rect2'' στην κονσόλα. 
  
-Παρατηρούμε ότι οι συντεταγμένες του πεδίου **origin** άλλαξαν και για το αντικείμενο ''rect2'' και παράλληλα και για το αντικείμενο ''rect1'', διότι τα πεδία ''origin'' των δύο αντικειμένων δείχνουν στο ίδιο αντικείμενο.+Παρατηρούμε ότι οι συντεταγμένες του πεδίου **origin** άλλαξαν για το αντικείμενο ''rect2'' και παράλληλα για το αντικείμενο ''rect1'', διότι τα πεδία ''origin'' των δύο αντικειμένων δείχνουν στο ίδιο αντικείμενο.
  
 Τα παρακάτω δύο σχήματα αποτυπώνουν α) την αλλαγή του πεδίου **origin** του ''rect2'', ώστε να δείχνει στο αντικείμενο ''rect1'' και β) την αλλαγή των περιεχομένων του ''origin1'' μέσω του αντικειμένου ''rect2'' Τα παρακάτω δύο σχήματα αποτυπώνουν α) την αλλαγή του πεδίου **origin** του ''rect2'', ώστε να δείχνει στο αντικείμενο ''rect1'' και β) την αλλαγή των περιεχομένων του ''origin1'' μέσω του αντικειμένου ''rect2''
Line 216: Line 219:
 Προκειμένου να δημιουργηθούν νέα αντικείμενα χρησιμοποιείται ο τελεστής **new**. O τελεστής **new** χρησιμοποιείται συνήθως με τον κατασκευαστή μίας κλάσης προκειμένου να κάνει τα εξής: Προκειμένου να δημιουργηθούν νέα αντικείμενα χρησιμοποιείται ο τελεστής **new**. O τελεστής **new** χρησιμοποιείται συνήθως με τον κατασκευαστή μίας κλάσης προκειμένου να κάνει τα εξής:
   - Δέσμευση της απαραίτητης μνήμης και δημιουργία του αντικειμένου. Η αρχικά ορισμένη μεταβλητή δείχνει πλέον στην περιοχή μνήμης που έχει δεσμευτεί.   - Δέσμευση της απαραίτητης μνήμης και δημιουργία του αντικειμένου. Η αρχικά ορισμένη μεταβλητή δείχνει πλέον στην περιοχή μνήμης που έχει δεσμευτεί.
-  - Αρχικοποίηση των εσωτερικών μεταβλητών (πεδίων) του αντικειμένου με κλήση του κατάλληλου κατασκευαστή της κλάσης. Εάν δεν έχει οριστεί κατασκευαστής τότε ο τελεστής **new** καλείται με χρήση του default κατασκευαστή (default constructor) που δεν έχει ορίσματα .χ. ''MyObject obj = new MyObject();'', όπου για την κλάση ''MyObject'' δεν έχει οριστεί κανένας κατασκευατής).+  - Αρχικοποίηση των εσωτερικών μεταβλητών (πεδίων) του αντικειμένου με κλήση του κατάλληλου κατασκευαστή της κλάσης. Εάν δεν έχει οριστεί κατασκευαστής τότε ο τελεστής **new** καλείται με χρήση του default κατασκευαστή (//default constructor//) που δεν έχει ορίσματα. Για παράδειγμα, για την ενδεικτική κλάση ''MyObject'' στην οποία δεν έχει οριστεί κανένας κατασκευατής  
 + 
 +<code java> MyObject obj = new MyObject();</code>
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
java/objects.txt · Last modified: 2022/02/23 15:25 by gthanos