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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

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

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

public class ArrayStack implements Stack {

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

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


Transcript:

Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2 Στοίβα - Stack Η στοίβα είναι μια LIFO Last In First Out ουρά Οι βασικές πράξεις είναι push: Εισάγειένανέοστοιχείοστοτέλοςτης στοίβας pop: Αφαιρεί το τελευταίο στοιχείο της στοίβας Ηκλάση Stack Java Κλάσεις στη Java 3 Java Κλάσεις στη Java 4 ΗκλάσηVector της Java ΗκλάσηVector της Java υλοποιεί έναν δυναμικό πίνακα αντικειμένων Το μέγεθος του Vector αυξάνεται αυτόματα όταν προστεθούν νέα στοιχεία στο τέλος του Vector Θα χρησιμοποιήσουμε την κλάση Vector γιανααποθηκεύουμεταδεδομένατης στοίβας Δήλωση της κλάσης Δημιουργία Κλάσης: Για να δημιουργηθεί μιανέακλάσηπρέπειναδοθεί η δήλωση της κλάσης (declaration), και ηυλοποίηση(το σώμα) της κλάσης (body) Στην Java η υλοποίηση της κλάσης δίνεται μαζί με τη δήλωσή της, σε αντίθεση με τη C++ όπου κατά κανόνα δίνονται χωριστά Java Κλάσεις στη Java 5 Java Κλάσεις στη Java 6 1

Η υλοποίηση της κλάσης Η υλοποίηση της κλάσης ακολουθεί τη δήλωση της κλάσης, και δίνεται μέσα σε αγκύλες { και. Η υλοποίηση περιλαμβάνει δηλώσεις μεταβλητών των στιγμιοτύπων δηλώσεις μεταβλητών της κλάσης (στατικές μεταβλητές) δηλώσεις και υλοποιήσεις μεθόδων των στιγμιοτύπων δηλώσεις και υλοποιήσεις μεθόδων της κλάσης (στατικές μέθοδοι) 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 2

Δήλωση Κλάσης (1) Δήλωση Κλάσης (2) public: Είναι προσπελάσιμη από παντού abstract: Είναι αφηρημένη κλάση, δηλαδή δεν επιτρέπεται να δημιουργήσουμε στιγμιότυπα της κλάσης. Σε τι χρησιμεύει; final: Δεν επιτρέπεται να κληρονομήσουμε την κλάση, να δημιουργήσουμε απογόνους της κλάσης Java Κλάσεις στη Java 13 Java Κλάσεις στη Java 14 Δήλωση Κλάσης (3) class ΌνομαΚλάσης Με τη λέξη κλειδί class δηλώνουμε ότι ακολουθεί δήλωση κλάσης extends ΚλάσηΠρόγονος Η κλάση είναι απόγονος της κλάσης και κληρονομεί όλα τα χαρακτηριστικά κλάσης προγόνου implements Interfaces Δηλώνεται ότι η κλάση υλοποιεί ένα η περισσότερα interfaces Το σώμα της κλάσης Περιλαμβάνειόλαταμέλητηςκλάσης μεταβλητές μεθόδους μεθόδους constructors μέθοδο finalize Java Κλάσεις στη Java 15 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 3

super() Ο constructor μπορεί να περιλαμβάνει ότι περιλαμβάνουν και οι κανονικές μέθοδοι μιας κλάσης Επιπλέον υποστηρίζει και την εντολή super() Με την εντολή super() καλούμε τον constructor της κλάσης προγόνου Εάν υπάρχει η εντολή super() θα πρέπει υποχρεωτικά να είναι στην αρχή του κώδικα του constructor Δήλωση μεταβλητών κλάσης (1) Java Κλάσεις στη Java 19 Java Κλάσεις στη Java 20 Δήλωση μεταβλητών κλάσης (2) δικαιώματα πρόσβασης: public, protected, private, package static: στατική μεταβλητή final: δεν μπορεί να μεταβληθεί (σταθερά) πχ. final double AVOGADRO = 6.022e23; transient: Αφορά το serialization αντικειμένων της κλάσης και δηλώνει ότι η μεταβλητή δεν θα αποθηκευτεί volatile: Δηλώνειότιδενπρέπειναεφαρμόσειο compiler ορισμένες βελτιστοποιήσεις και αφορά εφαρμογές με πολλά threads (multithreading). <type> <name>: τύπος και όνομα της μεταβλητής Δήλωση Μεθόδων (1) Java Κλάσεις στη Java 21 Java Κλάσεις στη Java 22 Δήλωση Μεθόδων (2) Java Κλάσεις στη Java 23 Δήλωση Μεθόδων (3) δικαιώματα πρόσβασης: public, protected, private, package static: στατική μέθοδος abstract: δεν δίνεται υλοποίηση της μεθόδου αλλά μόνο η δήλωσή της final: δεν επιτρέπεται να ξανα-οριστεί η μέθοδος σε κλάση απόγονο native: η μέθοδος υλοποιείται σε άλλη γλώσσα προγραμματισμού (βλέπε JNI: Java Native Interface) Java Κλάσεις στη Java 24 4

Δήλωση Μεθόδων (4) synchronized: Χρησιμοποιείται στο συγχρονισμό/αμοιβαίο αποκλεισμό όταν εκτελούνται ταυτόχρονα περισσότερα του ενός threads <return-type>: τι επιστρέφει η μέθοδος <parameter-list>: παράμετροι της μεθόδου throws exception: δηλώνεται εάν η μέθοδος παράγει εξαιρέσεις Τι επιστρέφει μια μέθοδος Η μέθοδος μπορεί να επιστρέφει μια τιμή όταν τερματίσει Η τιμή που επιστρέφει η μέθοδος καθορίζεται με την εντολή return. Για παράδειγμα: public boolean isempty() { if (items.size() == 0) return true; else return false; Java Κλάσεις στη Java 25 Java Κλάσεις στη Java 26 Όνομα μιας Μεθόδου Η Java υποστηρίζει την υπερφόρτωση (overloading) των ονομάτων μεταβλητών Μπορεί δηλαδή να δίνονται πολλές μέθοδοι με το ίδιο όνομα (ή αλλιώς πολλές διαφορετικές υλοποιήσεις της ίδιας μεθόδου) που διαφέρουν μεταξύ τους ως προς το πλήθος ή/και τον τύπο των παραμέτρων τους Παράδειγμα: class DataRenderer { void draw(string s) {... void draw(int i) {... void draw(float f) {... Πέρασμα Παραμέτρων Στην Java οι παράμετροι των μεθόδων περνάνε ΠΑΝΤΟΤΕ ΜΕ ΤΙΜΗ! Οι παράμετροι μπορεί να είναι βασικοί τύποι δεδομένων (primitive) ή αντικείμενα κλάσεων Προσοχή: Όταν η παράμετρος είναι ένα αντικείμενο, περνάει με τιμή η αναφορά στο αντικείμενο Αυτό μοιάζει με το πέρασμα δείκτη (pointer) στη C/C++ Ερώτημα: Πως μπορούμε να περάσουμε primitive μεταβλητή ώστε να μπορεί να τροποποιηθεί μέσα στη μέθοδο Java Κλάσεις στη Java 27 Java Κλάσεις στη Java 28 Boxing/Unboxing Πρωτογενών Τύπων Γιαναπεράσουμεμιαprimitive μεταβλητή ως παράμετρο σε μέθοδο ώστε να μπορεί να τροποποιηθεί η μεταβλητή αυτή μπορούμε να κάνουμε wrap την primitive μεταβλητή σε ένα αντίστοιχο αντικείμενο (πχ. Integer για int, Double για double, κτλ.) να περάσουμε ως παράμετρο το αντικείμενο (ουσιαστικά την αναφορά στο αντικείμενο) Αυτή η διαδικασία ονομάζεται ονομάζεται Boxing: Μετατροπή από πρωτογενή τύπο σε αντικείμενο Unboxing: Μετατροπή από αντικείμενο σε πρωτογενή τύπο Παράδειγμα 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 29 Java Κλάσεις στη Java 30 5

Σώμα της Μεθόδου Μέσα στο σώμα (στην υλοποίηση) της μεθόδου μπορούμε να χρησιμοποιήσουμε: this: Ηλέξηκλειδίthis είναι μια αναφορά στο τρέχον αντικείμενο στο οποίο ανήκει η μέθοδος που εκτελείται super(): Ηεντολήsuper() καλεί τον constructor της κλάσης προγόνου H εντολή super καλεί μέλη της κλάσης προγόνου που μπορεί να έχουν καλυφθεί από μέλη της κλάσης απογόνου this class Point { int x; int y; public Point(int x, int y) { this.x = x; this.y = y; Java Κλάσεις στη Java 31 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 6