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

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

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

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

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

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

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

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

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

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

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

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

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

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

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

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

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

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

Συλλογές, Στοίβες και Ουρές

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

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

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

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Δομές Δεδομένων (Data Structures)

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

Δομές Δεδομένων & Αλγόριθμοι

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

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

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

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

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

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

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

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

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

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

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

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

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Wrapper Classes, Abstract Classes and Interfaces

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

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

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

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

(Διαφάνειες Νίκου Βιδάκη)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

public class ArrayStack implements Stack {

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

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


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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

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

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

Transcript:

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

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

Στοίβα - Stack ΗστοίβαείναιμιαLIFO Last In First Out ουρά Οι βασικές πράξεις είναι push: Εισάγει ένα νέο στοιχείο στο τέλος της στοίβας pop: Αφαιρεί το τελευταίο στοιχείο της στοίβας Java Κλάσεις στη Java 3

Ηκλάση Stack Java Κλάσεις στη Java 4

ΗκλάσηVector της Java ΗκλάσηVector της Java υλοποιεί έναν δυναμικό πίνακα αντικειμένων Το μέγεθος του Vector αυξάνεται αυτόματα όταν προστεθούν νέα στοιχεία στο τέλος του Vector Θα χρησιμοποιήσουμε την κλάση Vector γιανααποθηκεύουμεταδεδομένατης στοίβας Java Κλάσεις στη Java 5

Δήλωση της κλάσης Δημιουργία Κλάσης: Γιαναδημιουργηθεί μια νέα κλάση πρέπει να δοθεί η δήλωση της κλάσης (declaration), και ηυλοποίηση(το σώμα) της κλάσης (body) Στην Java η υλοποίηση της κλάσης δίνεται μαζί με τη δήλωσή της, σε αντίθεση με τη C++ όπου κατά κανόνα δίνονται χωριστά Java Κλάσεις στη Java 6

Η υλοποίηση της κλάσης Η υλοποίηση της κλάσης ακολουθεί τη δήλωση της κλάσης, και δίνεται μέσα σε αγκύλες { και }. Η υλοποίηση περιλαμβάνει δηλώσεις μεταβλητών των στιγμιοτύπων δηλώσεις μεταβλητών της κλάσης (στατικές μεταβλητές) δηλώσεις και υλοποιήσεις μεθόδων των στιγμιοτύπων δηλώσεις και υλοποιήσεις μεθόδων της κλάσης (στατικές μέθοδοι) Java Κλάσεις στη Java 7

Συναρτήσεις Δόμησης (Constructors) Η κλάση περιλαμβάνει ένα σύνολο από constructors Constructor είναι μέθοδος που καλείται όταν δημιουργείται ένα νέο στιγμιότυπο (αντικείμενο) της κλάσης Εάν δεν υλοποιηθεί κανένας constructor, η Java παρέχει ένα default constructor που δεν εκτελεί καμία εντολή Επομένως όλες οι κλάσεις έχουν constructor Java Κλάσεις στη Java 8

Μεταβλητές Η κατάσταση ενός αντικειμένου περιγράφεται με τις τιμές των μεταβλητών του Οι μεταβλητές δηλώνονται μέσα στο σώμα της κλάσης, συνήθως πριν από τις μεθόδους Προσοχή: Οι μεταβλητές μέλη της κλάσης δηλώνονται έξω από τις μεθόδους της κλάσης, διαφορετικά είναι τοπικές μεταβλητές των μεθόδων και όχι της κλάσης Java Κλάσεις στη Java 9

Μέθοδοι Η συμπεριφορά και η λειτουργικότητα μιας κλάσης καθορίζεται από τις μεθόδους (συναρτήσεις) που έχει η κλάση Οι μέθοδοι δηλώνονται και υλοποιούνται μέσα στο σώμα της κλάσης Java Κλάσεις στη Java 10

Πρόσβαση στα μέλη μιας κλάσης Για κάθε μέλος μιας κλάσης καθορίζεται το επίπεδο πρόσβασης σε αυτό Η Java υποστηρίζει τα επίπεδα public, protected, package και private Java Κλάσεις στη Java 11

Στατικά Μέλη Τα μέλη μιας κλάσης μπορεί να ανήκουν: Στα στιγμιότυπα (αντικείμενα) της κλάσης. Στην περίπτωση αυτή κάθε στιγμιότυπο έχει τα δικά του τοπικά στιγμιότυπα αυτών των μελών Στην ίδια την κλάση (στατικά μέλη). Τα μέλη αυτά ανήκουν στην κλάση και όλα τα αντικείμενα της κλάσης χρησιμοποιούν το ίδιο στιγμιότυπο αυτού του μέλους Java Κλάσεις στη Java 12

Δήλωση Κλάσης (1) Java Κλάσεις στη Java 13

Δήλωση Κλάσης (2) public: Είναι προσπελάσιμη από παντού abstract: Είναι αφηρημένη κλάση, δηλαδή δεν επιτρέπεται να δημιουργήσουμε στιγμιότυπα της κλάσης. Σε τι χρησιμεύει; final: Δεν επιτρέπεται να κληρονομήσουμε την κλάση, να δημιουργήσουμε απογόνους της κλάσης Java Κλάσεις στη Java 14

Δήλωση Κλάσης (3) class ΌνομαΚλάσης Με τη λέξη κλειδί class δηλώνουμε ότι ακολουθεί δήλωση κλάσης extends ΚλάσηΠρόγονος Η κλάση είναι απόγονος της κλάσης και κληρονομεί όλα τα χαρακτηριστικά κλάσης προγόνου implements Interfaces Δηλώνεται ότι η κλάση υλοποιεί ένα η περισσότερα interfaces Java Κλάσεις στη Java 15

Το σώμα της κλάσης Περιλαμβάνει όλα τα μέλη της κλάσης μεταβλητές μεθόδους μεθόδους constructors μέθοδο finalize Java Κλάσεις στη Java 16

Constructors για Stack Μπορούμε να υλοποιήσουμε περισσότερους από έναν υπερφορτώνοντας (overloading) το όνομα του constructor για διαφορετικά σύνολα παραμέτρων Για παράδειγμα: public Stack() { items = new Vector(10); } public Stack(int size) { items = new Vector(size); } Java Κλάσεις στη Java 17

Δημιουργία αντικειμένου Stack Δημιουργία αντικειμένου Stack με τον πρώτο constructor: Stack s1= new Stack(); Δημιουργία αντικειμένου Stack με το δεύτερο constructor: Stack s2 = new Stack(30); O compiler αναγνωρίζει από τις παραμέτρους ποιον constructor πρέπει να καλέσει σε κάθε περίπτωση Java Κλάσεις στη Java 18

super() Ο constructor μπορεί να περιλαμβάνει ότι περιλαμβάνουν και οι κανονικές μέθοδοι μιας κλάσης Επιπλέον υποστηρίζει και την εντολή super() Με την εντολή super() καλούμε τον constructor της κλάσης προγόνου Εάν υπάρχει η εντολή super() θα πρέπει υποχρεωτικά να είναι στην αρχή του κώδικα του constructor Java Κλάσεις στη Java 19

Δήλωση μεταβλητών κλάσης (1) Java Κλάσεις στη Java 20

Δήλωση μεταβλητών κλάσης (2) δικαιώματα πρόσβασης: public, protected, private, package static: στατική μεταβλητή final: δεν μπορεί να μεταβληθεί (σταθερά) πχ. final double AVOGADRO = 6.022e23; transient: Αφορά το serialization αντικειμένων της κλάσης και δηλώνει ότι η μεταβλητή δεν θα αποθηκευτεί volatile: Δηλώνει ότι δεν πρέπει να εφαρμόσει ο compiler ορισμένες βελτιστοποιήσεις και αφορά εφαρμογές με πολλά threads (multithreading). <type> <name>: τύπος και όνομα της μεταβλητής Java Κλάσεις στη Java 21

Δήλωση Μεθόδων (1) Java Κλάσεις στη Java 22

Δήλωση Μεθόδων (2) Java Κλάσεις στη Java 23

Δήλωση Μεθόδων (3) δικαιώματα πρόσβασης: public, protected, private, package static: στατική μέθοδος abstract: δεν δίνεται υλοποίηση της μεθόδου αλλά μόνο η δήλωσή της final: δεν επιτρέπεται να ξανα-οριστεί η μέθοδος σε κλάση απόγονο native: η μέθοδος υλοποιείται σε άλλη γλώσσα προγραμματισμού (βλέπε JNI: Java Native Interface) Java Κλάσεις στη Java 24

Δήλωση Μεθόδων (4) synchronized: Χρησιμοποιείται στο συγχρονισμό/αμοιβαίο αποκλεισμό όταν εκτελούνται ταυτόχρονα περισσότερα του ενός threads <return-type>: τι επιστρέφει η μέθοδος <parameter-list>: παράμετροι της μεθόδου throws exception: δηλώνεται εάν η μέθοδος παράγει εξαιρέσεις Java Κλάσεις στη Java 25

Τι επιστρέφει μια μέθοδος Η μέθοδος μπορεί να επιστρέφει μια τιμή όταν τερματίσει Η τιμή που επιστρέφει η μέθοδος καθορίζεται με την εντολή return. Για παράδειγμα: public boolean isempty() { if (items.size() == 0) return true; else return false; } Java Κλάσεις στη Java 26

Όνομα μιας Μεθόδου Η Java υποστηρίζει την υπερφόρτωση (overloading) των ονομάτων μεταβλητών Μπορεί δηλαδή να δίνονται πολλές μέθοδοι με το ίδιο όνομα (ή αλλιώς πολλές διαφορετικές υλοποιήσεις της ίδιας μεθόδου) που διαφέρουν μεταξύ τους ως προς το πλήθος ή/και τον τύπο των παραμέτρων τους Παράδειγμα: class DataRenderer { void draw(string s) {... } void draw(int i) {... } void draw(float f) {... } } Java Κλάσεις στη Java 27

Πέρασμα Παραμέτρων Στην Java οι παράμετροι των μεθόδων περνάνε ΠΑΝΤΟΤΕ ΜΕ ΤΙΜΗ! Οι παράμετροι μπορεί να είναι βασικοί τύποι δεδομένων (primitive) ήαντικείμενακλάσεων Προσοχή: Όταν η παράμετρος είναι ένα αντικείμενο, περνάει με τιμή η αναφορά στο αντικείμενο Αυτό μοιάζει με το πέρασμα δείκτη (pointer) στη C/C++ Ερώτημα: Πως μπορούμε να περάσουμε primitive μεταβλητή ώστε να μπορεί να τροποποιηθεί μέσα στη μέθοδο Java Κλάσεις στη Java 28

Boxing/Unboxing Πρωτογενών Τύπων Γιαναπεράσουμεμιαprimitive μεταβλητή ως παράμετρο σε μέθοδο ώστε να μπορεί να τροποποιηθεί η μεταβλητή αυτή μπορούμε να κάνουμε wrap την primitive μεταβλητή σε ένα αντίστοιχο αντικείμενο (πχ. Integer για int, Double για double, κτλ.) να περάσουμε ως παράμετρο το αντικείμενο (ουσιαστικά την αναφορά στο αντικείμενο) Αυτή η διαδικασία ονομάζεται ονομάζεται Boxing: Μετατροπή από πρωτογενή τύπο σε αντικείμενο Unboxing: Μετατροπή από αντικείμενο σε πρωτογενή τύπο Java Κλάσεις στη Java 29

Παράδειγμα Boxing/Unboxing // ακέραια μεταβλητή (πρωτογενής τύπος δεδομένων) int i = 10; // αναφορά σε αντικείμενο της κλάσης Integer Integer iobj; // boxing: Από πρωτογενή τύπο δεδ. σε αντικ. iobj = new Integer(i); // unboxing: Από αντικ. σε πρωτογενή τύπο δεδ. int k = iobj.intvalue(); Σημείωση: Από την Java 5.0 (ή αλλιώς 1.5) και μετά ορισμένες λειτουργίες μετατροπής boxing/unboxing έχουν απλοποιηθεί Java Κλάσεις στη Java 30

Σώμα της Μεθόδου Μέσα στο σώμα (στην υλοποίηση) της μεθόδου μπορούμε να χρησιμοποιήσουμε: this: Η λέξηκλειδίthis είναι μια αναφορά στο τρέχον αντικείμενο στο οποίο ανήκει η μέθοδος που εκτελείται super(): Η εντολή super() καλεί τον constructor της κλάσης προγόνου H εντολή super καλεί μέλη της κλάσης προγόνου που μπορεί να έχουν καλυφθεί από μέλη της κλάσης απογόνου Java Κλάσεις στη Java 31

this class Point { int x; int y; public Point(int x, int y) { this.x = x; this.y = y; } } Java Κλάσεις στη Java 32

Ηβασικήκλάση: Παράδειγμα class ASillyClass { boolean avariable; void amethod() { χρήσης της avariable = true; } super } Η κλάση απόγονος κρύβει τη μεταβλητή avariable και ξαναορίζει τη μέθοδο amethod: class ASillierClass extends ASillyClass { boolean avariable; void amethod() { avariable = false; super.amethod(); System.out.println(aVariable); System.out.println(super.aVariable); } } Java Κλάσεις στη Java 33

Τοπικές Μεταβλητές Μέσα στο σώμα (υλοποίηση) μιας μεθόδου μπορούνναοριστούνμεταβλητές Οι μεταβλητές αυτές ονομάζονται τοπικές μεταβλητές και έχουν εμβέλεια τη μέθοδο αυτή Java Κλάσεις στη Java 34

Πηγές/Αναφορές The Java Tutorial, www.sun.com Java Κλάσεις στη Java 35