Μάθημα 1 [3/11/2015].

Σχετικά έγγραφα
ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

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

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

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

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

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

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

ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance)

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

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

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

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

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

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

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

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

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

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

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

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

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

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

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

Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται και θέλουμε να τις βάλουμε μαζί.

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

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

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

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

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

Από τη UML στον Κώδικα. Μέρος Β

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

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

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

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

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

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

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

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

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

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

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

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

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

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

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

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

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

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

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

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

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

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

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

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

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

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

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

Transcript:

Μάθημα 1 [3/11/2015]. Στην πρώτη διάλεξη πραγματοποιήθηκε επανάληψη της γλώσσας Java και ως εξάσκηση επιλύθηκαν οι ασκήσεις της Εξεταστικής Περιόδου 2015 οι οποίες κοινοποιούνται μαζί με ενδεικτική λύση για τη μία ομάδα ασκήσεων. 1. Να κατασκευαστεί κλάση Car για την περιγραφή αυτοκινήτων, για καθένα εκ των οποίων θα καταχωρείται το μοντέλο (model, String), το έτος κατασκευής (year,int), τα κυβικά εκατοστά (cc,int) και τα χιλιόμετρα που έχουν διανυθεί (kilometers,int). Αυτή η κλάση θα περιλαμβάνει: a. Δομητή (constructor) δια της χρήσεως του οποίου θα αρχικοποιούνται αυτά τα πεδία. b. Συναρτήσεις Set και Get για καθένα από τα παραπάνω τέσσερα πεδία δια της χρήσεως των οποίων θα αρχικοποιούνται και θα ανακτώνται οι τιμές αυτών των πεδίων. c. Συνάρτηση TaxCalculation() η οποία θα υπολογίζει τον φόρο που θα καταβάλλεται από τον ιδιοκτήτη ενός αυτοκινήτου. Αυτός ο φόρος θα είναι συνάρτηση του αριθμού των χιλιομέτρων που έχουν διανυθεί από το αυτοκίνητο και του έτους κατασκευής του και θα υπολογίζεται ως εξής: i. 100 Ε για αριθμό χιλιομέτρων < 5000 ii. 200 Ε για αριθμό χιλιομέτρων από 5000-10000 iii. 300 Ε για αριθμό χιλιομέτρων > 10000 Όσα αυτοκίνητα έχουν κατασκευαστεί πριν το 1990 θα πληρώνουν ένα επιπλέον ποσό της τάξεως των 50 Ε. 2. Να κατασκευαστεί η κλάση Truck η οποία θα περιγράφει τα αυτοκίνητα φορτηγά. Η κλάση αυτή θα κατασκευαστεί ως παράγωγη κλάση της Car και εκτός από τα πεδία της κλάσης Car θα διαθέτει και άλλα τρία πεδία τύπου int εκ των οποίων τα width και length θα αναφέρονται στις διαστάσεις της καρότσας (σε μέτρα) ενώ το πεδίο weight θα αναφέρεται στο βάρος της καρότσας. Για την κλάση αυτή θα κατασκευάσετε όπως και πριν (α) τον δομητή της μέσω του οποίου θα αρχικοποιούνται τα πεδία της και (β) τις συναρτήσεις Set και Get. Όσον αφορά τη συνάρτηση TaxCalculation() αυτή θα υπολογίζει το φόρο όπως και πριν, αλλά τα φορτηγά θα πληρώνουν ένα επιπλέον ποσό της τάξεως των 50 E για βάρος καρότσας < 1000 κιλών και της τάξεως των 100 Ε για βάρος καρότσας > 1000 κιλών. 3. Να κατασκευάσετε συνάρτηση main στην οποία θα αρχικοποιείτε ένα αντικείμενο τύπου Car και ένα αντικείμενο τύπου Truck. Για το αντικείμενο τύπου Car θα ορίσετε μοντέλο FIAT του 1985 με 1200 κυβικά εκατοστά και 20000 χιλιόμετρα ενώ για το Truck θα ορίσετε μοντέλο VOLVO του 1989 με 1500 κυβικά εκατοστά και 15000 χιλιόμετρα με καρότσα διαστάσεων 1.5 μέτρα πλάτος και 2 μέτρα μήκος και βάρος 800 κιλών. Για κάθε όχημα θα εκτυπώνετε το όνομα του μοντέλου και τον καταβληθέντα φόρο.

ΛΥΣΗ ΘΕΜΑΤΩΝ ΟΜΑΔΑΣ Α class Car { // CLASS ATTRIBUTES private String model; private int year; private int cc; private int kilometers; // CLASS CAR CONSTRUCTOR public Car (String model, int year, int cc, int kilometers) { this.model = model; this.year = year; this.cc = cc; this.kilometers = kilometers; } // SETTERS - ASSIGN VALUES TO CLASS ATTRIBUTES public void setmodel (String model) { this.model = model; } public void setyear (int year) { this.year = year; } public void setcc (int cc) { this.cc = cc; } public void setkilometers (int kilometers) { this.kilometers = kilometers; } // GETTERS - RETURN THE VALUES OF CLASS ATTRIBUTES public String getmode l() { return model; } public int getyear () { return year; } public int getcc () { return cc; } public int getkilometers () { return kilometers; }

public int TaxCalculation () { int tax = 0; if (kilometers<5000) tax = 100; if (kilometers>=5000 && kilometers <10000) tax = 200; if (kilometers>=10000) tax = 300; if (year<1990) tax += 50; return tax; }} class Truck extends Car { // CLASS ATTRIBUTES private int width; private int length; private int weight; // CLASS TRUCK CONSTRUCTOR Ένα λάθος που έγινε από πολλούς ήταν πως στον δομητή Truck έβαλαν ΜΟΝΟ τις επιπλέον ιδιότητες που χαρακτηρίζουν αυτή την κλάση. Όπως όμως φαίνεται πιο κάτω, στον δομητή μπαίνουν ΟΛΕΣ ΟΙ ΙΔΙΟΤΗΤΕΣ (δηλαδή και αυτές του Car και αυτές του Track) με τις τέσσερις ιδιότητες του Car να αρχικοποιούνται δια μέσου της super που γράφεται ΠΑΝΤΟΤΕ πρώτη και τις υπόλοιπες τρεις ιδιότητες να αρχικοποιούνται με το συνήθη τρόπο. public Truck (String model, int year, int cc, int kilometers, int width, int length, int weight) { super (model, year, cc, kilometers); this.width = width; this.length = length; this.weight = weight; } // SETTERS - ASSIGN VALUES TO CLASS ATTRIBUTES public void setwidth (int width) { this.width = width; } public void setlength (int length) { this.length = length; } public void setweight (int weight) { this.weight = weight; } // GETTERS - RETURN THE VALUES OF CLASS ATTRIBUTES public int getwidth () { return width; }

public int getlength () { return length; } public int getweight () { return weight; } ΠΡΟΣΟΧΗ στην TaxCalculation του Truck!!. Επειδή στην γονική κλάση Car υπάρχει συνάρτηση ΜΕ ΤΟ ΙΔΙΟ ΟΝΟΜΑ θα πρέπει μπροστά από TaxCalculation του Truck να βάλουμε το keyword @override που υποδεικνύει στο περιβάλλον της Java να ΜΗΝ χρησιμοποιήσει την TaxCalculation του Car αλλά την TaxCalculation του Truck. Παρατηρείστε επίσης πως στην TaxCalculation του Truck ΔΕΝ ΞΑΝΑΓΡΑΦΟΥΜΕ τον κώδικα της TaxCalculation του Car όπως έκαναν οι περισσότεροι αλλά καλούμε ΑΠΛΑ αυτή τη συνάρτηση για να υπολογίσουμε τον φόρο και στη συνέχεια προσθέτουμε σε αυτόν, τον επιπλέον φόρο. @Override public int TaxCalculation () { int extra = 0, tax = super.taxcalculation(); if (weight<1000) extra = 50; if (weight>1000) extra = 100; return tax+extra; }} public class JavaExamsA { Εδώ βλέπετε πώς καλούμε τους δομητές για να αρχικοποιήσουμε τα αντικείμενα στις συγκεκριμένες τιμές. Παρατηρείστε πως οι ιδιότητες αρχικοποιούνται δια της καταχωρήσεως των κατάλληλων τιμών στις ιδιότητες των δομητών ΚΑΙ όχι χρησιμοποιώντας τις set και get (που βέβαια δεν είναι λάθος αλλά δεν ζητούσε αυτό η άσκηση. Ορισμένοι δημιούργησαν τα αντικείμενα καλώντας τον default δομητή χωρίς ορίσματα τον οποίο όμως δεν είχαν υλοποιήσει). public static void main (String [] args) { Car c = new Car ("FIAT", 1985, 1200, 20000); Truck t = new Truck ("VOLVO", 1989, 1500, 15000, 2, 2, 800); System.out.println ("Tax for model " + c.getmodel() + " is " + c.taxcalculation()); System.out.println ("Tax for model " + t.getmodel() + " is " + t.taxcalculation()); }}

4. Να κατασκευαστεί κλάση Book για την περιγραφή βιβλίων για καθένα εκ των οποίων θα καταχωρείται το επώνυμο του συγγραφέα (name, String), ο αριθμός σελίδων (pages, int) και το έτος έκδοσης (year,int). Αυτή η κλάση θα περιλαμβάνει: a. Δομητή (constructor) δια της χρήσεως του οποίου θα αρχικοποιούνται αυτά τα πεδία. b. Συναρτήσεις Set και Get για καθένα από τα παραπάνω τρία πεδία δια της χρήσεως των οποίων θα αρχικοποιούνται και θα ανακτώνται οι τιμές αυτών των πεδίων. c. Συνάρτηση PriceCalculation() η οποία θα υπολογίζει την τιμή αγοράς του βιβλίου. Αυτή η τιμή θα είναι συνάρτηση του πλήθους των σελίδων και του έτους έκδοσης του βιβλίου και θα υπολογίζεται ως εξής: i. 10 Ε για πλήθος σελίδων < 300 ii. 20 Ε για πλήθος σελίδων από 300-600 iii. 30 Ε για πλήθος σελίδων > 600 Για όσα βιβλία έχουν εκδοθεί πριν το 1990 θα καταβάλλεται ένα επιπλέον ποσό της τάξεως των 10 Ε. 5. (3.5 μονάδες) Να κατασκευαστεί κλάση ebook η οποία θα περιγράφει τα βιβλία που διατίθενται σε ηλεκτρονική μορφή. Η κλάση αυτή θα κατασκευαστεί ως παράγωγη κλάση της Book και εκτός από τα πεδία της κλάσης Book θα διαθέτει και άλλα δύο πεδία, το μέγεθος του ebook σε Mbytes (size, int) και τον τύπο του αρχείου του βιβλίου (format, String) το οποίο θα μπορεί να είναι είτε MSWORD είτε PDF. Για την κλάση αυτή θα κατασκευάσετε όπως και πριν (α) τον δομητή της μέσω του οποίου θα αρχικοποιούνται τα πεδία της και (β) τις συναρτήσεις Set και Get. Όσον αφορά τη συνάρτηση PriceCalculation() αυτή θα υπολογίζει την τιμή όπως και πριν, αλλά θα χρεώνεται ένα επιπλέον ποσό της τάξεως των 10 E για ebooks σε μορφή PDF και της τάξεως των 20 Ε για ebooks τύπου MSWORD. 6. (3 μονάδες) Να κατασκευάσετε συνάρτηση main στην οποία θα αρχικοποιείτε ένα αντικείμενο τύπου Book και ένα αντικείμενο τύπου ebook. Για το αντικείμενο τύπου Book θα ορίσετε όνομα συγγραφέα Tolkin, πλήθος σελίδων 800 και έτος έκδοσης 1990 ενώ για το αντικείμενο ebook χρησιμοποιείστε τις ίδιες τιμές παραμέτρων με το Book και με τιμές 2 Mb για το μέγεθος και PDF για τον τύπο του αρχείου. Για κάθε αντικείμενο θα εκτυπώνετε το όνομα του συγγραφέα και την τιμή του βιβλίου. Η λύση των ασκήσεων της Ομάδας Β είναι ΑΚΡΙΒΩΣ η ίδια με την προηγούμενη (αλλάζουν μόνο τα ονόματα των κλάσεων και των ιδιοτήτων).