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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2007 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors)

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

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

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

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

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

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

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

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

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

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

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

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

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

Κλάσεις στην Python. Δημιουργία κλάσεων

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 8/4/2008. Πίνακες (Arrays)

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

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

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

ΚΛΑΣΕΙΣ ΜΕΘΟΔΟΙ - ΑΝΤΙΚΕΙΜΕΝΑ

Λογισµικό (Software SW) Γλώσσες

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Transcript:

Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού, 5.2 Κλάσεις, 5.3 Δεδομένα, 5.4 Μέθοδοι, 5.5 Κατασκευαστές Προετοιμασία: Στο φάκελο <Tα έγγραφα μου> ή <My Documents> δημιουργήστε φάκελο με τον αριθμό μητρώου σας π.χ ΤΧΧΧ και εκεί δημιουργήστε φάκελο Lab5. Όλες οι ασκήσεις που ακολουθούν για αυτό το εργαστήριο θα αποθηκευτούν εκεί και μόνον εκεί. Όταν τελειώσει το εργαστήριο αυτό μπορείτε να αντιγράψετε το φάκελο για να έχετε τις ασκήσεις και να συνεχίσετε να εργάζεστε εκτός εργαστηρίου. Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Ένα από τα βασικά χαρακτηριστικά της γλώσσας Java είναι ότι πρόκειται για αντικειμενοστραφή (object-oriented) γλώσσα προγραμματισμού Ο αντικειμενοστραφής προγραμματισμός, (OOP - Object Oriented Programming), είναι μια προγραμματιστική φιλοσοφία όπως και ο προστακτικός ή ο λογικός προγραμματισμός. Σύμφωνα με τον OOP ένα πρόγραμμα ΔΕΝ αποτελείται από τα δεδομένα και τον κώδικα που τα επεξεργάζεται αλλά από αντικείμενα (objects) τα οποία εμπεριέχουν τα δεδομένα και τα οποία (αντικείμενα) ανταλλάσσουν μεταξύ τους πληροφορίες και μηνύματα προκειμένου να επιτευχθεί ο στόχος του προγράμματος. (δείτε περισσότερες πληροφορίες για έννοιες του αντικειμενοστραφή προγραμματισμού στις Παρατηρήσεις στο τέλος του παρόντος εγγράφου) Β. Άσκηση λυμένη για το εργαστήριο 1. Να οριστεί η κλάση Circle η οποία θα περιγράφει κύκλους. Επίσης να γραφεί πρόγραμμα με το όνομα TestCircle (στο φάκελο Lab5) που να ελέγχει την κλάση Circle δημιουργώντας το αντικείμενο του κύκλου με το όνομα troxos1.

Οδηγίες για την δημιουργία project για την επίλυση της Άσκησης 1: Δημιουργείστε ένα νέο Project και δώστε το όνομα της Άσκησης δηλαδή TestCircle. Έτσι θα δημιουργηθεί το project TestCircle που περιέχει το αρχείο TestCircle.java. Εκεί θα δημιουργηθεί αυτόματα η μέθοδος main που αποτελεί την εκκίνηση του προγράμματος Java. Για τον ορισμό της κλάσης Circle επιλέξτε File\new File\ και στο νέο παράθυρο «Choose File Type» επιλέξτε Java & Java Class. Στο επόμενο παράθυρο που προτείνει Class Name: δώστε το όνομα της κλάσης δηλ. Circle. (Να θυμίσω πως όνομα κλάσης και όνομα αρχείου πρέπει πάντα να συμφωνεί (τουλάχιστον με τις γνώσεις που έχουμε ως τώρα) με το όνομα της κλάσης. Να θυμάστε ότι το όνομα της τάξης ενδείκνυται να ξεκινά με κεφαλαίο χαρακτήρα. Σιγουρευτείτε ότι η κλάση Circle ανήκει στο ίδιο πακέτο με την TestCircle. //Αρχείο ΤestCircle.Java public class TestCircle { public static void main (String args[]){ //χρήση της static μεταβλητής που απαριθμεί τους //κύκλους που έχουν δημιουργηθεί System.out.println("Number of Objects= "+ Circle.count); // Δημιουργία 1 ου αντικειμένου Circle troxos1 = new Circle(10,5,5); //εκτύπωση της τιμής του χ, y και εμβαδού System.out.println("\ntroxos1: x=" + troxos1.getx() + "\t y= " + troxos1.gety() + "\t embadon= " + troxos1.area()); System.out.println("Number of Objects= "+ Circle.count); //Αρχείο Circle.Java public class Circle { private double radius; //ακτίνα private double x; //τετμημένη κέντρου private double y; //τεταγμένη κέντρου static double pi = 3.14; static int count = 0; Circle(double r1, double x1, double y1) { radius = r1; x = x1; y = y1; ++count; public void setx(int x1) { x = x1;

public double getx() { return x; Γ. Ασκήσεις άλυτες για το εργαστήριο Επέκταση της λυμένης άσκηση Ορισμός μεθόδων gety() και getradius() και για τις άλλες ιδιότητες του κύκλου. Ορισμός μεθόδων sety() και setradius()και για τις άλλες ιδιότητες του κύκλου ώστε να μπορώ να τροποποιήσω τα στοιχεία του κύκλου. Ορισμός μεθόδου area() για να υπολογίσω το εμβαδόν του κύκλου. Ορισμός δεύτερου κατασκευαστή χωρίς ορίσματα που να δίνει τιμές x=0, y=0. δημιουργία άλλων δύο κύκλων kyklos1, kyklos2 με τις εντολές Circle kyklos1, kyklos2; kyklos1 = new Circle(10,8,8); kyklos2 = kyklos1; Εκτύπωση των ιδιοτήτων των κύκλων kyklos1, kyklos2. Μετά την εκτύπωση των ιδιοτήτων των παραπάνω κύκλων προσθήκη της εντολής kyklos2.setradius(50); και στη συνέχεια επανεκτύπωση των ιδιοτήτων των παραπάνω κύκλων. Τι συμβαίνει με τα αντικείμενα kyklos1 και kyklos2; H επαν-εκτύπωση των ιδιοτήτων να γίνει με τη μέθοδο String tostring(); Να γίνει έλεγχος των αντικειμένων kyklos1, kyklos2 και kykloa1, troxos1 για ισότητα με τη μέθοδο boolean equals(circle c)). Άσκηση 2η Να δημιουργηθεί νέο project με όνομα TestParallilogramo. Nα οριστεί μια τάξη για το ορθογώνιο παραλληλόγραμμο OrthParal με private ιδιότητες platos, ipsos. Ορισμός κατασκευαστή με όρισμα τα platos, ipsos.

Ορισμός μεθόδων get () και set () για όλες τις ιδιότητες του παραλληλόγραμμου. Ορισμός μεθόδου area() για να υπολογίσω το εμβαδόν του παραλληλόγραμμου. Στην κλάση του κυρίως προγράμματος που περιέχει την main() (δηλαδή στο TestParalilogramo) δημιουργήστε δύο αντικείμενα paral1, paral2 δίνοντας τους αρχικές τιμές και στη συνέχεια εκτυπώστε τις ιδιότητες τους και το εμβαδόν τους με τη μέθοδο String tostring();. Να γίνει έλεγχος των αντικειμένων par1 και par2 για ισότητα με τη μέθοδο boolean equals(orthparal op)). Παρατηρήσεις Κλάσεις Ο κώδικας που ορίζει ένα αντικείμενο λέγεται κλάση (class) του αντικειμένου αυτού. Η κλάση χρησιμοποιείται σαν συνταγή για την κατασκευή πανομοιότυπων αντιγράφων - αντικειμένων. Τα αντικείμενα - αντίγραφα, λέγονται στιγμιότυπα (instances) της κλάσης αυτής και η κατασκευή και αρχικοποίηση ενός από αυτά λέγεται instanciation. Μία από όλες τις κλάσεις θα παίξει το ρόλο της αφετηρίας του προγράμματος, με άλλα λόγια θα περιέχει την main(). Αναλυτικότερα, θα αναλάβει να κατασκευάσει τα αντικείμενα που χρειάζεται το πρόγραμμα, με τη χρήση των κλάσεων που ορίσαμε ή φέραμε από τη βιβλιοθήκη. Φυσικά την αρχική κλάση θα την υποδείξουμε εμείς όταν θα ξεκινήσουμε τον interpreter της γλώσσας. ΣΗΜΕΙΩΣΗ: Η παραπάνω επεξήγηση δεν είναι απολύτως ακριβής ωστόσο διευκολύνει σημαντικά την κατανόηση της δομής ενός προγράμματος JAVA σε αυτή τη φάση. Μια κλάση αποτελείται από μεταβλητές- δεδομένα και μεθόδους. Αφού ορίσουμε μια κλάση, στη συνέχεια μπορούμε να χρησιμοποιήσουμε την ορισμό της για να δημιουργήσουμε αντικείμενα (Τα αντικείμενα λέγονται και στιγμιότυπα της κλάσης). Τα αντικείμενα που θα δημιουργηθούν θα περιέχουν δεδομένα μεταβλητές και θα παρέχουν μεθόδους για την επεξεργασία των δεδομένων αυτών καθώς και για την επικοινωνία με άλλα αντικείμενα. Πως ορίζουμε μια κλάση Μια κλάση της Java έχει την ακόλουθη δομή class <Class_Name>{ // μεταβλητές // κατασκευαστές // μέθοδοι Ορισμός μεταβλητών

Οι μεταβλητές της κλάσης ανήκουν σε δύο κατηγορίες, τις μεταβλητές κλάσης (class variables) και τις μεταβλητές στιγμιότυπου (instance variables). Η μεταβλητή κλάσης δηλώνεται με την δεσμευμένη λέξη static και υπάρχει δηλωμένη στη μνήμη ακόμη και εάν δεν έχει δημιουργηθεί κανένα αντικείμενο της κλάσης. Κάθε αντικείμενο της κλάσης όταν δημιουργηθεί περιέχει την τιμή της static μεταβλητής και εάν η τιμή αυτή αλλάξει για ένα αντικείμενο η νέα τιμή θα ισχύει για όλα τα αντικείμενα. Η κλήση των μεταβλητών αυτών γίνετε με class_name.variable_name ώστε να είναι διακριτή η ιδιότητα της μεταβλητής. Η μεταβλητή στιγμιότυπου δηλώνεται με το συνήθη τρόπο, με το είδος του τύπου της και το όνομα της. Υπάρχουν σε κάθε νέο αντικείμενο που δημιουργείται δεσμεύοντας ξεχωριστό χώρο στη μνήμη διότι έχουν διαφορετική τιμή από αντικείμενο σε αντικείμενο. Ορισμός μεθόδων Με τον όρο μέθοδο εννοούμε ένα σύνολο από δηλώσεις και εντολές, οι οποίες ομαδοποιούνται ώστε να αποτελέσουν ένα ανεξάρτητο πρόγραμμα. Στις μη αντικειμενοστραφής γλώσσες προγραμματισμού οι μέθοδοι ονομάζονται συναρτήσεις. Μια μέθοδος της Java έχει την ακόλουθη δομή <προσδιοριστής_πρόσβασης> <τύπος_επιστροφής> <όνομα_μεθόδου> (<λίστα_παραμέτρων>){ δηλώσεις και εντολές της μεθόδου Εάν η μέθοδος χρησιμοποιεί static μεταβλητές ονομάζεται class methods και δηλώνεται με την δεσμευμένη λέξη static. Καλείται με <Κλάση>.<μέθοδος>(<Λίστα παραμέτρων>) ώστε να είναι διακριτή η ιδιότητα της μεθόδου. Προσοχή : Η δήλωση της μεθόδου έξω από τις αγκύλες είναι λάθος. Ορισμός κατασκευαστών Κάθε κλάση διαθέτει τουλάχιστον μία μέθοδο η οποία εκτελείται κατά τη δημιουργία ενός στιγμιοτύπου της, (δηλ. κατά τη δημιουργία ενός αντικειμένου της κλάσης αυτής). Αυτές οι μέθοδοι λέγονται κατασκευαστές (constructors) της κλάσης. Σκοπός των constructors είναι η δέσμευση μνήμης για την κατασκευή του αντικειμένου καθώς και η διενέργεια κατάλληλων αρχικοποιήσεων. Οι κατασκευαστές είναι ειδικές μέθοδοι, που πρέπει να υπάρχουν στον ορισμό μιας κλάσης. Ο κατασκευαστής έχει το ίδιο όνομα με εκείνο της κλάσης και δεν επιστρέφει ποτέ τιμή, δεν βάζουμε μπροστά του τύπο επιστροφής, αλλά ούτε και τη λέξη void. Μπορούμε να έχουμε περισσότερους από έναν κατασκευαστές για την ίδια κλάση. Οι διαφορετικοί κατασκευαστές έχουν απαραίτητα το ίδιο όνομα αλλά οπωσδήποτε διαφορετική λίστα ορισμάτων. Πως θα χρησιμοποιήσουμε μια κλάση που δημιουργήσαμε Η δήλωση και δημιουργία ενός αντικειμένου από μια κλάση που έχουμε ορίσει γίνετε με τους παρακάτω δύο διαφορετικούς τρόπους: α) // δήλωση αντικειμένου, δεν δεσμεύεται χώρος στη μνήμη Όνομα_κλάσης όνομα_αντικειμένου ; // δημιουργία αντικειμένου και αρχικοποίηση, δεσμεύεται χώρος στη μνήμη όνομα_αντικειμένου = new Όνομα_κλάσης(όρισμα_κατασκευαστή); π.χ. Car mycar ;

β) mycar = new Car ( FORD, Modeo, 1800); // δήλωση και δημιουργία αντικειμένου, αρχικοποίηση και δέσμευση χώρου στη μνήμη Όνομα_κλάσης όνομα_αντικειμένου = new Όνομα_κλάσης(όρισμα_κατασκευαστή); π.χ. Car mycar = new Car ( FORD, Modeo, 1800); Αναφορά στα αντικείμενα και μεθόδους αυτών Όπως ειπώθηκε και παραπάνω μία κλάση (ή ένα αντικείμενο) περιέχει και μεθόδους για την επικοινωνία του με τον έξω κόσμο, δηλαδή τα άλλα αντικείμενα. Οι μέθοδοι αυτοί υλοποιούνται όταν κάποιος θέλει να ζητήσει κάτι από ένα αντικείμενο, (ή εναλλακτικά να στείλει ένα μήνυμα - αίτημα), δεν έχει παρά να καλέσει - εκτελέσει την αντίστοιχη μέθοδο του αντικειμένου. Αυτό γίνεται πολύ απλά ως εξής : <Αντικείμενο>.<μέθοδος>(<Λίστα παραμέτρων>); Π.χ. mycar.startengine();