Πανεπιστήμιο Κύπρου Πολυτεχνική Σχολή Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 Ακαδημαϊκό Έτος 2016-17, Χειμερινό Εξάμηνο 1 η Ενδιάμεση Πρόοδος 9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016 Όνομα: Επίθετο: Αριθμός Ταυτότητας: E-mail: Τηλέφωνο: Πρόβλημα Μονάδες Βαθμός 1 5 2 12 3 9 4 8 5 18 6 18 Τελικός Βαθμός: 7 30 ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 1/12
Άσκηση 1: [5 μονάδες] Εξηγήστε τη διαδικασία δημιουργίας, μεταγλώττισης και εκτέλεσης ενός απλού προγράμματος Java, χρησιμοποιώντας ένα παράθυρο (γραμμή) εντολών (και όχι κάποιο IDE, όπως το NetBeans), αναφέροντας τα ονόματα των αρχείων που δημιουργούνται και τι ακριβώς περιέχουν. Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 2/12
Άσκηση 2: [12 μονάδες] ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 - Ενδιάμεση Εξέταση Α. Λαμβάνοντας υπόψη τους πιο κάτω ορισμούς, ποια/ες πρόταση/εις που ακολουθεί είναι ορθή/ές; char x4 = a ; int x3 = 33; float x2 = 2.2; double x1 = 0.111; (α) Η μικτή έκφραση: x1 x2 είναι τύπου float (β) (γ) (δ) Η μικτή έκφραση: 5.5 * x2 είναι τύπου float Η μικτή έκφραση: 3 * x1 * x3 είναι τύπου int Η μικτή έκφραση: 1.0 * x1 * x2 * x3 είναι τύπου double B. Λαμβάνοντας υπόψη τους πιο κάτω ορισμούς, ποια εντολή που ακολουθεί είναι λάθος; double x1 = 15; float x2 = 17; int x3 = 13/4; (α) x1 = x2 = x3 ; (β) x2 =0.5 * x1; (γ) x2 = x3 = 1; (δ) x1 = 5.5 * x2; Γ. Με τι ισούται η πιο κάτω αριθμητική έκφραση; 7 + 1+9 / 5 / 2 + 3 * 2/3 + 7/6 ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 3/12
Άσκηση 3: [9 μονάδες] ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 - Ενδιάμεση Εξέταση Α. Μετά την εκτέλεση των πιο κάτω εντολών με τι ισούται οι μεταβλητές x, y και z; int x = 2; int y = ++x ; int z ; z = x++ ; x += y++ ; y += z ; x -= 10 ; x y z Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 4/12
Άσκηση 4: [8 μονάδες] Ποιο είναι το αποτέλεσμα (output) από την εκτέλεση της μεθόδου main() της πιο κάτω τάξης; public class Midterm1_3 public static void main(string testabc[]) int x = 17; System.out.println(" " + x); changey(x); System.out.println(" " + x); changex(x); System.out.println(" " + x); changex(1.0*x); System.out.println(" " + x); static void changex(int x) x *= 2; static void changex(double x) x *= 2; static void changey(int y) y *= 3; ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 5/12
Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 6/12
Άσκηση 5: [18 μονάδες] ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 - Ενδιάμεση Εξέταση Έχοντας την τάξη ComplexNumber, η οποία έχει δύο μέλη δεδομένων την μεταβλητή real και την μεταβλητή imaginary, οι οποίες χρησιμοποιούνται αντίστοιχα για την αποθήκευση του πραγματικού και του φανταστικού μέρους ενός μιγαδικού αριθμού, ζητείται όπως: (α) Γράψετε τον ορισμό της τάξης ComplexNumber με τα πιο πάνω μέλη, real και imaginary, στα οποία πρόσβαση πρέπει να περιορίζεται μόνο εντός της τάξης. (β) Τι ακριβώς κάνει η πιο κάτω εντολή; ComplexNumber c ; (β) Τι ακριβώς κάνει η επόμενη εντολή; c = new ComplexNumber(); (γ) Τι ακριβώς κάνει η επόμενη εντολή; e = d = new ComplexNumber(); ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 7/12
Άσκηση 6: [18 μονάδες] ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 - Ενδιάμεση Εξέταση Ποιο είναι το αποτέλεσμα (output) από την εκτέλεση της μεθόδου main() της πιο κάτω τάξης; class Point double x=11; double y=22; public String tostring() return "x=" + x + " y=" + y ; class TestPoint public static void main(string a[]) Point x = new Point(); System.out.println("1. x: " + x); fun(x); static void fun(point y) int x = 77; System.out.println("2. x: " + x); System.out.println("3. y: " + y); System.out.println("4. y.x= " + y.x); System.out.println("5. y.y= " + y.y); Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 8/12
ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 9/12
Άσκηση 7: [30 μονάδες] ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 - Ενδιάμεση Εξέταση Δίνεται πιο κάτω ο ορισμός μίας τάξης που μπορεί να χρησιμοποιηθεί για μιγαδικούς αριθμούς (α + β * i), από τον οποίο λείπουν οι ορισμοί κάποιων μεθόδων και τις οποίες θα πρέπει να προμηθεύσετε. (α) Συγκεκριμένα, ζητείται να γράψετε τα σώματα των μεθόδων κατασκευής αντικειμένων (constructors) και να επαναορίσετε (override) τη μέθοδο tostring() που κληρονομείται από την κλάση Object ώστε να επιστρέφει το μιγαδικό αριθμό σαν String στη μορφή (α + β * i). (β) Επίσης, ζητείται να αναπτύξετε τη μέθοδο main(), σε μια άλλη τάξη, με την οποία θα δοκιμαστεί η αναπτυσσόμενη τάξη, όπου θα πρέπει να οριστεί ένας πίνακας αναφορών τύπου ComplexNumber με το όνομα cn και με 3 στοιχεία, ως εξής: (i) Το 1 ο στοιχείο να είναι ένα αντικείμενο με real ίσο με -2.5 και imaginary ίσο με 22.3. (ii) Tο 2 ο στοιχείο να δημιουργηθεί έτσι ώστε να έχει τιμές ίσες με αυτές του 1 ου στοιχείου του πίνακα. (iii) Το 3 ο στοιχείο να δημιουργηθεί με τον non-argument constructor. class ComplexNumber private double real; private double imaginary; private static numbercomplexnumbers=0; ComplexNumber() // Πρέπει να κληθεί ο επόμενος constructor για // να μηδενίσει τα δύο μέλη του αντικειμένου ComplexNumber(double real, double imaginary) // Πρέπει να δοθούν οι τιμές των παραμέτρων // στα αντίστοιχα μέλη του υπό δημιουργία // αντικειμένου και να τροποποιηθεί //κατάλληλα το στατικό μέλος numbercomplexnumbers Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 10/12
ComplexNumber(MyComplexNumber c) // Πρέπει να δοθούν οι τιμές των μελών του // c στα αντίστοιχα μέλη του υπό κατασκευή // καλώντας τον πιο πάνω constructor για να // ορίσει τα δύο μέλη του αντικειμένου public String tostring() // Πρέπει να επιστραφεί ένα String με τη // μορφή α + β * i που να αντιστοιχεί στο αντικείμενο. ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016, 11/12
/* Δημιουργήστε μια τάξη με τη μέθοδο main(), με την οποία θα δοκιμαστεί η τάξη ComplexNumber, όπου θα πρέπει να οριστεί ένας πίνακας αναφορών τύπου ComplexNumber με το όνομα cn και με 3 στοιχεία, ως εξής: (i) Το 1 ο στοιχείο να είναι ένα αντικείμενο με real ίσο με -2.5 και imaginary ίσο με 22.3. (ii) Tο 2 ο στοιχείο να δημιουργηθεί έτσι ώστε να έχει τιμές ίσες με αυτές του 1 ου στοιχείου του πίνακα. (iii) Το 3 ο στοιχείο να δημιουργηθεί με τον non-argument constructor. */ Πέτρος Κωμοδρόμος, 2016, Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος: 12/12