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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

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

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

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού

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

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

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

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

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

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

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 7 : ΣΥΝΘΕΤΕΣ ΚΛΑΣΕΙΣ ΚΑΙ ΜΕΘΟΔΟΙ

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

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

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

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

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

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

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

Transcript:

Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 8 ο Α. Ύλη εργαστηρίου 8.1 Αντικειμενοστραφής προγραμματισμός 8.2 Κλάσεις Αντικείμενα 8.3 Encapsulation (συγκέντρωση) - overloading (υπερφόρτωση) 8.4 Πολυμορφισμός 8.5 Χρήση του this Προετοιμασία εργαστηρίου: Στο φάκελο <Tα έγγραφα μου> ή <My Documents> δημιουργήστε φάκελο με τον αριθμό μητρώου σας π.χ ΤΧΧΧ και εκεί δημιουργήστε φάκελο Lab8. Όλες οι ασκήσεις που ακολουθούν για αυτό το εργαστήριο θα αποθηκευτούν εκεί και μόνον εκεί. Όταν τελειώσει το εργαστήριο αυτό μπορείτε να αντιγράψετε το φάκελο για να έχετε τις ασκήσεις και να συνεχίσετε να εργάζεστε εκτός εργαστηρίου. Ανοίξτε τον NetBeans και αφού διαγράψετε ότι παλαιά project βρείτε επιλέξτε File\New Project. Οδηγίες για την δημιουργία project για την επίλυση της Άσκησης 1. Στο NetBeans επιλέξτε File->new project> java Application επιλέξτε το φάκελο Lab8 και Name δώστε το όνομα της Άσκησης δηλαδή TestTime. Έτσι θα δημιουργηθεί το project TestTime που περιέχει το αρχείο TestTime.java όπου υπάρχει η μέθοδος main και αποτελεί την εκκίνηση του προγράμματος Java. Στη συνέχεια για να δημιουργήσετε την κλάση Time επιλέξτε File\New File <επιλέξτε java class> και Class Name δώστε το όνομα της κλάσης δηλ. Time. Β. Ασκήσεις λυμένες για το εργαστήριο 1. Δημιουργήστε μια κλάση με το όνομα Time με τα ακόλουθα χαρακτηριστικά: Ώρα hour Λεπτά minute Δευτερόλεπτα second Η κλάση Time να υποστηρίζει μια μέθοδο settime(), η οποία να θέτει όλα τα χαρακτηριστικά σε προκαθορισμένες τιμές. H κλάση θα έχει τους εξής κατασκευαστές: o Έναν με όλες τις παραμέτρους o Έναν χωρίς καθόλου παραμέτρους, ο οποίος να θέτει το ρολόι στα μεσάνυχτα. H κλάση Time να υποστηρίζει επίσης τις παρακάτω μεθόδους:

gethours(), getminutes(), getseconds(), touniversalstring(), tostandardstring() Στη συνέχεια δημιουργήστε Java εφαρμογή με το όνομα TestTime που να χρησιμοποιεί την κλάση Time. //Αρχείο Time.java package erg7ask1; public class Time { όχι private int hour; // 0-23 private int min; // 0-59 private int sec; // 0-59 // ελέγχει τις τιμές γιά καταλληλότητα και και θέτει // τελικές τιμές σε μορφή 24ώρου public void settime(int h, int m, int s) { hour = ((h >= 0 && h < 24)? h : 0); min = ((m >= 0 && m < 60)? m : 0); sec = ((s >= 0 && s < 60)? s : 0); // Κατασκευαστής με τρία ορίσματα: hour, miν and sec σαν ορίσματα public Time(int h, int m, int s) { settime(h, m, s); // invoke method settime to validate time // Κατασκευαστής με δύο ορίσματα: hour καί min ορίζονται, το sec public Time(int h, int m) { settime(h, m, 0); // invoke method settime to validate time // Κατασκευαστής με ένα όρισμα: μόνο το hour ορίζεται public Time(int h) { settime(h, 0, 0); // invoke method settime to validate time // Κατασκευαστής χωρίς ορίσματα: αρχικοποιεί όλες τις μεταβλητές με 0 public Time() { this(0, 0, 0); //καλεί τον κατασκευαστή με 3 ορίσματα //εναλλακτικά θα μπορούσαμ: // settime(0, 0, 0); // εκτύπωση σε 24-ωρη μορφή public String touniversalstring() { return String.format("%02d:%02d:%02d", hour, min, sec); // εκτύπωση σε 12-ωρη μορφή public String tostandardstring() { if (hour == 12 hour == 0) { hour = 12; else { hour = hour % 12;

String sampm; //"AM ή PM if (hour < 12) { sampm = " AM"; else { sampm = " PM"; return String.format("%02d:%02d:%02d", hour, min, sec) + sampm; // end class Time // Αρχείο TestTime.java package erg7ask1; public class TestTime { public static void main(string args[]) { Time t1 = new Time(); // 00:00:00 Time t2 = new Time(7); // 07:00:00 Time t3 = new Time(19, 25); // 19:25:00 Time t4 = new Time(12, 15, 50); // 12:15:50 Time t5 = new Time(29, 85, 81); // 00:00:00 String output = "\nκατασκευαστής χωρίς ορίσματα" + "\nt1: όλες οι μεταβλητές παίρνουν προεπιλεγμένες τιμές" + "\n " + t1.touniversalstring() + "\n " + t1.tostandardstring(); output += "\nκατασκευαστής με ένα όρισμα" + "\nt2: το hour ορίζεται το min και το sec όχι" + "\n " + t2.touniversalstring() + "\n " + t2.tostandardstring(); output += "\nκατασκευαστής με δύο ορίσματα" + "\nt3: το hour και το min ορίζονται, το sec όχι" + "\n " + t3.touniversalstring() + "\n " + t3.tostandardstring(); output += "\nκατασκευαστής με τρία ορίσματα" + "\nt4: τα hour, minute και second ορίζονται" + "\n " + t4.touniversalstring() + "\n " + t4.tostandardstring(); output += "\nt5: Προσπάθεια δημιουργίας με ακατάλληλες τιμές" + "\n " + t5.touniversalstring() + "\n " + t5.tostandardstring(); System.out.println(output); System.exit(0); // end main

// end class TestTime Να δημιουργηθεί νέο project ακολουθώντας τις οδηγίες της Άσκησης 1. To όνομα του project θα είναι TestKlasmata. 2. Να οριστεί η κλάση Klasma η οποία θα περιγράφει κλάσματα. Η τάξη να περιέχει δύο private ακέραιες µμεταβλητές, τον αριθμητή και τον παρονομαστή. Ο κατασκευαστής της τάξης να αρχικοποιεί τον αριθμητή στο μηδέν και τον παρονομαστή στην μονάδα και να ορίσετε µία μέθοδο setklasma η οποία να αποδίδει τιμές στις private μεταβλητές της (ελέγχοντας εάν ο παρονομαστής είναι μηδέν και σ αυτή την περίπτωση να τον κάνει ένα). Επίσης η τάξη να υλοποιεί τις παρακάτω μεθόδους (public): o Πρόσθεση, Αφαίρεση, Πολλαπλασιασμό, διαίρεση δύο κλασμάτων, όπως και o Εκτύπωση κλάσματος στην μορφή α/β, και τέλος, o Εκτύπωση κλάσματος αλλά σε μορφή πραγματικού αριθμού. Τέλος να γράψετε ένα πρόγραμμα TestKlasmata το οποίο να χρησιμοποιεί και να ελέγχει την τάξη Klasma. // Αρχείο Klasma.java package testklasmata; import java.util.scanner; public class Klasma { private int arith; private int paro; public Klasma() { setklasma(0, 1); public void setklasma(int ari, int par) { if (par == 0) { paro = 1; else { paro = par; arith = ari; public Klasma prosthesi(klasma d2) { Klasma temp = new Klasma(); double x; temp.arith = (arith * d2.paro) + (paro * d2.arith); temp.paro = paro * d2.paro; x = (double) temp.arith / (double) temp.paro; System.out.println(temp.arith + "/" + temp.paro + " = " + x); return temp;

public Klasma aferesi(klasma d2) { //να συμπληρωθεί στο εργαστήριο public Klasma polapla(klasma d2) { //να συμπληρωθεί στο εργαστήρio public Klasma dieresi(klasma d2) { //να συμπληρωθεί στο εργαστήρio // Αρχείο TestKlasmata.java package testklasmata; import java.util.scanner; public class TestKlasmata { public static void main(string args[]) { Scanner sc = new Scanner(System.in); int a, b, c, d; int e = 0; Klasma k1, k2, k3, k4, k5, k6, k7; System.out.println("Δώσε το 1o κλάσμα"); System.out.println("Δώσε τον αριθμητή: "); a = sc.nextint(); System.out.println("Δώσε τον παρανομαστή: "); b = sc.nextint(); k1 = new Klasma(); k1.setklasma(a, b); System.out.println(" Δώσε το 2o κλάσμα"); System.out.println("Δώσε τον αριθμητή: "); c = sc.nextint(); System.out.println("Δώσε τον παρανομαστή: "); d = sc.nextint(); k2 = new Klasma(); k2.setklasma(c, d); while (true) { System.out.println("1. + \n2. - \n3. * \n4. exit"); e = sc.nextint(); switch (e) { case 1: k7 = k1.prosthesi(k2);

break; case 2: k6 = k1.aferesi(k2); break; case 3: k5 = k1.polapla(k2); break; case 4: System.exit(1); break; default: System.out.println("Λανθασμένη επιλογή"); Γ. Ασκήσεις άλυτες για το εργαστήριο 2. Να δημιουργηθεί ένα πρόγραμμα Java για τρίγωνα. Το όνομα του project θα είναι TestTrigono. α. Να δημιουργηθεί μια νέα κλάση (Trigono) που να περιγράφει το τρίγωνο. Το τρίγωνο θα δίνεται από τον ορισμό τριών σημείων (κορυφές του τριγώνου). Η νέα αυτή κλάση να χρησιμοποιεί την κλάση του σημείου που ακολουθεί. Στην κλάση να υπάρχουν δύο κατασκευαστές, ο πρώτος να μην κάνει τίποτε και ο δεύτερος να αρχικοποιεί όλες τις κορυφές σημεία. Επιπλέον να δημιουργηθεί μια μέθοδος για τον υπολογισμό του μήκους δύο κορυφών του τριγώνου και στη συνέχεια να δημιουργηθεί μια μέθοδος perimetros() που θα υπολογίζει το άθροισμα των πλευρών του τριγώνου. Ο τύπος υπολογισμού για το μήκος μεταξύ δύο κορυφών ενός τριγώνου είναι Math.sqrt(Math.pow((pStart.getX() pend.getx()),2) + Math.pow((pStart.getY() pend.gety()),2)) Τα pstart και pend είναι οι κορυφές, αντικείμενα τύπου Point. Στη συνέχεια στον ορισμό της main στην εφαρμογή TestTrigono θα δημιουργήσετε 2 αντικείμενα της κλάσης του τριγώνου, θα δώσετε τιμές στα σημεία των κορυφών του και θα τυπώσετε τις τιμές των ιδιοτήτων και την περίμετρο των τριγώνων. package testtrigono; // Point.java

// Point class declaration represents an x-y coordinate pair. public class Point { private int x; // x part of coordinate pair private int y; // y part of coordinate pair // no-argument constructor public Point() { // implicit call to Object constructor occurs here x=0; y=0; // constructor public Point(int xvalue, int yvalue) { // implicit call to Object constructor occurs here x = xvalue; // no need for validation y = yvalue; // no need for validation // set x in coordinate pair public void setx(int xvalue) { x = xvalue; // no need for validation // return x from coordinate pair public int getx() { return x; // set y in coordinate pair public void sety(int yvalue) { y = yvalue; // no need for validation // return y from coordinate pair public int gety() { return y; // return String representation of Point object public String tostring() { return "[" + x + ", " + y + "]"; // end class Point 3. Να δημιουργηθεί ένα πρόγραμμα Java (TestBank) για την παρακολούθηση των τραπεζικών λογαριασμών. Το πρόγραμμα θα είναι απλοποιημένο και θα αποτελείται από τρεις τάξεις:

o o o μία τάξη τραπεζικού λογαριασμού (Account) μία τάξη Ατόμου που θα υλοποιεί τους κατόχους των τραπεζικών λογαριασμών (Person) μία τάξη με το κυρίως πρόγραμμα (TestBank) Η τάξη Account θα αποτελείται από τα εξής: δύο ιδιότητες: τον κωδικό λογαριασμού code, το υπόλοιπο του λογαριασμού balance και τον ιδιοκτήτη του λογαριασμού ένα αντικείμενο τύπου Person ένα constructor (κατασκευαστή) που θα καλείται όταν δημιουργούνται αντικείμενα τύπου Account και θα θέτει την ιδιότητα balance ίσο µε 0. Αρχικά το υπόλοιπο κάθε λογαριασμού είναι μηδέν. Μία μέθοδο getbalance που θα επιστρέφει το τρέχον υπόλοιπο του λογαριασμού Μία μέθοδο setowner που θα ορίζει τον κάτοχο του λογ/μου και μια μέθοδο getowner που θα επιστρέφει τον κάτοχο του λογ/μου Μία μέθοδο setcode που θα ορίζει τον κωδικό του λογ/μου και μια μέθοδο getcode που θα επιστρέφει τον κωδικό του λογ/μου Μία μέθοδο withdraw (ανάληψη) για την ανάληψη μετρητών από τον λογαριασμό εφόσον αυτό είναι εφικτό Μία μέθοδο deposit (κατάθεση) για την κατάθεση μετρητών στο λογαριασμό Η τάξη Person θα αποτελείται από τα εξής: το όνομα (name), την ηλικία (age) και ένα πίνακα το πολύ 10 τραπεζικών λογαριασμών που αντιπροσωπεύουν τους τραπεζικούς λογαριασμούς του Person. Μέθοδο set και get για το όνομα, την ηλικία, και τους τραπεζικούς λογαριασμούς Στο κυρίως πρόγραμμα TestBank στη μέθοδο main να δημιουργηθούν δύο άτομα ο George και η Natalia και τρεις τραπεζικούς λογαριασμοί με κωδικούς 10001, 20001, 20002 αντίστοιχα. Στον λογαριασμό 10001 και 20001 είναι δικαιούχος ο George ενώ στο λογαριασμό 20002 δικαιούχος είναι η Natalia. Οι συνδέσεις μεταξύ αυτών των αντικειμένων θα δημιουργηθούν µε τη χρήση των μεθόδων setowner και setaccount των δυο τάξεων.

Στη συνέχεια ο George θα κάνει µία κατάθεση 10.000 στον λογ/μο 10001. Μετά θα κάνει µία ανάληψη 5.000 και τέλος θα προσπαθήσει να κάνει µία ανάληψη 6.000 που όμως δεν θα πετύχει γιατί το υπόλοιπο του λογαριασμού θα είναι 5.000. Αντίστοιχα κάνετε κάποιες συναλλαγές με τον άλλο λογ/μο του George και με τον λογ/μο της Natalia. Τέλος µε τη χρήση των μεθόδων getaccount() να εμφανίσετε το σύνολο των χρημάτων που έχει o George σε καταθέσεις στους λογαριασμούς του.