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



Σχετικά έγγραφα
Μάθημα 1 [3/11/2015].

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Διαδικτύου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό με C++

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)

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

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

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

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

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Transcript:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩN ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟΔΟΣ: ΙΟΥΝΙΟΣ 2015 (10/7/2015) ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α 1. (3.5 μονάδες) Να κατασκευαστεί κλάση 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. (3.5 μονάδες) Να κατασκευαστεί η κλάση Truck η οποία θα περιγράφει τα αυτοκίνητα φορτηγά. Η κλάση αυτή θα κατασκευαστεί ως παράγωγη κλάση της Car και εκτός από τα πεδία της κλάσης Car θα διαθέτει και άλλα τρία πεδία τύπου int εκ των οποίων τα width και length θα αναφέρονται στις διαστάσεις της καρότσας (σε μέτρα) ενώ το πεδίο weight θα αναφέρεται στο βάρος της καρότσας. Για την κλάση αυτή θα κατασκευάσετε όπως και πριν (α) τον δομητή της μέσω του οποίου θα αρχικοποιούνται τα πεδία της και (β) τις συναρτήσεις Set και Get. Όσον αφορά τη συνάρτηση TaxCalculation() αυτή θα υπολογίζει το φόρο όπως και πριν, αλλά τα φορτηγά θα πληρώνουν ένα επιπλέον ποσό της τάξεως των 50 E για βάρος καρότσας < 1000 κιλών και της τάξεως των 100 Ε για βάρος καρότσας > 1000 κιλών. 3. (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()); }}

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩN ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟΔΟΣ: ΙΟΥΝΙΟΣ 2015 (10/7/2015) ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Β 4. (3.5 μονάδες) Να κατασκευαστεί κλάση 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 για τον τύπο του αρχείου. Για κάθε αντικείμενο θα εκτυπώνετε το όνομα του συγγραφέα και την τιμή του βιβλίου. Καλή επιτυχία, Ο διδάσκων Αθανάσιος Ι. Μάργαρης Η λύση των ασκήσεων της Ομάδας Β είναι ΑΚΡΙΒΩΣ η ίδια με την προηγούμενη (αλλάζουν μόνο τα ονόματα των κλάσεων και των ιδιοτήτων) και για το λόγο αυτό δεν δίνεται. Όσοι θα ξαναδώσουν το μάθημα το Σεπτέμβριο θα είναι καλό να μελετήσουν προσεκτικά και να κατανοήσουν τη λύση της ομάδας Α και στη συνέχεια να επιλύσουν την άσκηση της Ομάδας Β. Το Σεπτέμβριο τα θέματα θα ναι παρόμοιας φιλοσοφίας και όποιος καταλάβει τις παραπάνω λύσεις μέχρι και 10 μπορεί να γράψει).