Θέματα εξετάσεων. Τύπος: B

Σχετικά έγγραφα
Θέµατα εξετάσεων µε απαντήσεις

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 4 ο Εργαστήριο -

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

Διαγράμματα Κλάσεων στη Σχεδίαση

Διάγραμμα Κλάσεων. Class Diagram

Τεχνολογία Λογισμικού Τύπος Α

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Η γλώσσα μοντελοποίησης UML. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Η γλώσσα μοντελοποίησης UML. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 7

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

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

Μοντελοποίηση Πεδίου

Βασικές Έννοιες Δοµών Δεδοµένων

Ανάλυση Περιπτώσεων Χρήσης

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

(Απλή) Κληρονομικότητα

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

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Δομές Δεδομένων & Αλγόριθμοι

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

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

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

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

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Μοντελοποίηση Συστημάτων

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

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

POINTERS, AGGREGATION, COMPOSITION

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

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

Συλλογές, Στοίβες και Ουρές

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Σύνθεση και Κληρονομικότητα

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

4η ιάλεξη. UML ιαγράμματα αλληλεπίδρασης

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

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

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

Προγραμματισμός Υπολογιστών με C++

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

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

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

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

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Μοντελοποίηση Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 7 ο Εργαστήριο -

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Σύνθεση και Κληρονομικότητα

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Διάθρωση. HΥ351 Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design

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

. Μεθοδολογία Προγραμματισμού. UML Διαγράμματα. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Transcript:

Θέματα εξετάσεων Τύπος: B Ονοματεπώνυμο: Α.Μ.: Σχολή: Τμήμα: Επιτηρητής: Οδηγίες: Γράψτε τα στοιχεία σας σε αυτήν τη σελίδα Στην κόλλα σας γράψτε τα στοιχεία σας και στην πρώτη γραμμή τον τύπο των θεμάτων στα οποία εξετάζεστε. Ο τύπος των θεμάτων στα οποία εξετάζεστε βρίσκετε στην κορυφή κάθε σελίδας Οι ερωτήσεις 1-8 είναι στη μορφή των πολλαπλών επιλογών. Στην κόλλα σας θα δώσετε τις απαντήσεις δίνοντας το νούμερο της ερώτησης στην οποία απαντάτε και το γράμμα που πιστεύετε ότι αντιστοιχεί στη σωστή απάντηση. Για παράδειγμα: 1 ε Η ερώτηση 9 και η ερώτηση 10 είναι στη μορφή σωστού λάθους Στην κόλλα σας θα γράψετε το νούμερο της ερώτησης και της υπο-ερώτησης και δίπλα τη λέξη ΣΩΣΤΟ ή ΛΑΘΟΣ. Για παράδειγμα 10 β ΛΑΘΟΣ Σε αυτήν την εξέταση υπάρχει αρνητική βαθμολόγηση. Ειδικότερα: o Για τις ερωτήσεις 1-8 Για κάθε λάθος απάντηση -0.15 o Για την ερώτηση 9 και την ερώτηση 10 Για κάθε λάθος απάντηση -0.05 Αυτό σημαίνει ότι αν δεν είστε σίγουροι για την απάντησή σας είναι προτιμότερο ΝΑ ΜΗΝ ΑΠΑΝΤΗΣΕΤΕ. Αν δε γνωρίζετε την απάντηση βάλτε μια ευδιάκριτη παύλα. Για παράδειγμα: 2 --- Ή 10 β --- Τα θέματα επιστρέφονται. Αν δε βρεθεί θέμα μαζί με την κόλλα σας αυτόματα μηδενίζεται το γραπτό σας. Μπορείτε να αποχωρήσετε από την εξέταση σε 30. 1

1. Δείτε το παρακάτω διάγραμμα κλάσεων: «interface» Queue +enqueue(in number : int) : void +dequeue() : int +isempty() : bool Vector AClient 1..* MyQueue +enqueue(in number : int) : void +dequeue() : int +isempty() : bool -numbers[1..*] : int +addfirst(in number : int) : void +addlast(in number : int) : void +delfirst() : int +dellast() : int +isempty() : bool Ποιος κώδικας από τους παρακάτω θα μπορούσε να αντιστοιχηθεί σε κομμάτια από το παραπάνω διάγραμμα; α.class Vector: public MyQueue { virtual void addfirst(int number); virtual void addlast(int number); virtual int delfirst(); virtual int dellast(); int numbers[n]; //N is a large constant γ.class AClient { std::vector< MyQueue > mymyqueue; class MyQueue : public Queue, public Vector { virtual void enqueue(int number); virtual int dequeue(); ε.class AClient { std::vector<string> mymyqueue; class MyQueue : public Queue, public Vector { virtual void enqueue(int number); virtual int dequeue(); β.class Vector: public MyQueue { virtual void addfirst(int number); virtual void addlast(int number); virtual int delfirst(); virtual int dellast(); std::vector<int> numbers; class AClient { std::vector< MyQueue > mymyqueue; δ.class Queue: public MyQueue { virtual void enqueue(int number) = 0; virtual int dequeue() = 0; virtual boolean isempty() = 0; class Vector: public MyQueue { virtual void addfirst(int number); virtual void addlast(int number); virtual int delfirst(); virtual int dellast(); std::vector<int> numbers; στ.class AClient { std::vector< MyQueue > mymyqueue; class MyQueue { virtual void enqueue(int number); virtual int dequeue(); 2

2.Παρακάτω βλέπετε μια προσπάθεια για τη σχεδίαση μιας κλάσης. (Φαίνονται ενδεικτικά κάποιες συναρτήσεις) class Company { void addmanager(string name, float salary, float bonus); void addemployee(string name, float salary); string getmanagername(int i); string getemployeename(int i); private: vector<string> managernames; vector<string> employeenames; vector<string> managersalaries... Ποια από τις παρακάτω απαντήσεις πιστεύετε ότι προσφέρει την καλύτερη σχεδίαση για αυτήν την κλάση; Προσοχή: η καλύτερη σχεδίαση μπορεί να ή να μην αντιστοιχεί στον κώδικα της παραπάνω κλάσης α. β. Company +addmanager(in manager : Manager) +addemployee(in employee : Employee) Manager Employee Company +addmanager(in manager : Manager) +addemployee(in employee : Employee) 1 * Manager Employee * γ. δ. Company +addmanager(in manager : Manager) +addemployee(in employee : Employee) Manager Employee Company -managernames[0..*] : string -employeenames[0..*] : string -managersalaries[0..*] : float +addmanager(in manager : Manager) +addemployee(in employee : Employee) Operations +getmanagername(in index : int) : string +getemployeename(in index : int) : string ε. Η προτεινόμενη κλάση είναι σωστή ως έχει στ. Είτε η δ είτε η γ 3

3. Σχεδιάζετε ένα σύστημα παραγγελειοληψίας από σερβιτόρους. Ο σερβιτόρος στο palmtop παίρνει την παραγγελία από τον πελάτη, και σημειώνει με τη σειρά τα ορεκτικά, το κυρίως πιάτο και το επιδόρπιο. Στο τέλος πατά αποστολή και στέλνει την παραγγελία στο σεφ. Όταν η παραγγελία είναι έτοιμη ο σεφ στέλνει ειδοποίηση στο palmtop του σερβιτόρου. Τέλος όταν ο πελάτης θέλει να πληρώσει, ο σερβιτόρος σημειώνει την πληρωμή στον palmtop και κλείνει έτσι την εξυπηρέτηση του πελάτη. Ποιο είναι το πιο κατάλληλο μοντέλο περιπτώσεων χρήσης για το σύστημα αυτό; α. β γ δ. ε. στ. Είτε όπως το α είτε όπως το β 4

4. Σας δίνεται η ακόλουθη περιγραφή μιας περίπτωσης χρήσης.(1 μονάδα) 1. Τίτλος περίπτωσης χρήσης : Αποστολή μηνύνματος CHAT από ένα Client 2. Ροή γεγονότων. 1. Ο χρήστης πληκτρολογεί το μήνυμά του στην οθόνη και πατά ένα κουμπί αποστολή 2. Το πρόγραμμα ελέγχει ότι το μήκος του μηνύματος είναι επιτρεπτό και το στέλνει μέσω του πρωτοκόλλου CHAT στο server 3. O Server επιβεβαιώνει ότι έλαβε το μήνυμα 4. Το πρόγραμμα εμφανίζει στην οθόνη λήψης μηνυμάτων το μήνυμα που μόλις απεστάλη Το διάγραμμα που ακολουθεί: α. Είναι λάθος γιατί το ChatProtocol θα έπρεπε να είναι κλάση ελέγχου β. Είναι λάθος γιατί το Message θα έπρεπε να είναι κλάση ελέγχου γ. Είναι σωστό δ. Είναι λάθος γιατί το Message θα έπρεπε να είναι κλάση οντότητας ε. Είναι λάθος γιατί το Message και το ChatProtocol θα έπρεπε να είναι κλάσεις οντότητας στ. Είναι λάθος γιατί το Chatter θα έπρεπε να είναι κλάση Οντότητας 5

5. Δείτε τα παρακάτω κομμάτια κώδικα: class A { virtual int getsomething() = 0; private: int something; class C : public A { virtual int getsomething(); class B : public A { virtual int getsomething(); private: C *myc=0; int B::getSomething() { if (0==myC) { myc = new C(); } myc->getsomething(); } Ποιά patterns πιστεύετε ότι θα μπορούσε να υλοποιεί; α. Κανένα β. To Proxy Pattern γ. To Αdapter Pattern δ. To Factory με το Singleton ε. To Factory Pattern στ. To Αdapter με το Singleton 6

6. Έχετε την παρακάτω συσχέτιση μεταξύ δύο κλάσεων: Address Person -street : string -name : string 1 * -city : string Τα στοιχεία για τα αντικείμενα αυτών των κλάσεων θα αποθηκεύονται σε μία σχεσιακή βάση δεδομένων. Αποφασίζετε να χρησιμοποιήσετε το μοτίβο DAO. Ποιά πιστεύετε ότι είναι η καλύτερη προσέγγιση αν θέλατε να διαβάσετε τα στοιχεία ενός Person ξέροντας το κλειδί του index στον πίνακα; (Από τα διαγράμματα παραλείπονται αντικείμενα/μηνύματα μη σημαντικά για την ερώτηση) SomeClass persondb person:=getperson(index) new() addressdb address:=getaddressforperson(index) α. SomeClass persondb person:=getperson(index) new() addressdb address:=getaddressforperson(index) β. γ. SomeClass addressdb address:=getaddressforperson(index) new() person:=getperson(index) persondb δ. Καμία ε. Το (α) ή το (β) στ. Το (α) ή το (γ) 7

7. Θέλετε ένα έξυπνο τρόπο για να δημιουργείτε αντικείμενα από διαφορετικές κλάσεις που έχουν το ίδιο interface αλλά διαφορετική υλοποίηση. Ποιο από τα παρακάτω μοτίβα σχεδίασης θα μπορούσατε να χρησιμοποιήσετε; α.mediator Pattern β. Proxy Pattern γ. Factory Pattern δ. Singleton Pattern ε. Adapter Pattern στ. DAO Pattern 8

8. Έχετε τον παρακάτω κώδικα C (1 μονάδα) void mystrcpy(char *src, char *dst, int dstsize) { int size; if (strlen(src)< dstsize-1) size = strlen(src); else size = dstsize-1; strncpy( dst,src, size); dst[size]='\0'; } α. Δεν έχει κανένα πρόβλημα β. Είναι άσχημα σχεδιασμένος γιατί υπάρχει μικρή συνοχή γ. Είναι άσχημα σχεδιασμένος γιατί υπάρχει σύζευξη αντιγράφου και παραβιάζει τις αρχές του αμυντικού προγραμματισμού δ. Είναι άσχημα σχεδιασμένος γιατί υπάρχει σύζευξη δεδομένων ε. Είναι άσχημα σχεδιασμένος γιατί υπάρχει σύζευξη αντιγράφου στ. Είναι άσχημα σχεδιασμένος γιατί παραβιάζει τις αρχές του αμυντικού προγραμματισμού 9

9. Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (1 μονάδα) a. Οι κλάσεις ελέγχου συνήθως έχουν μόνο απλά χαρακτηριστικά, όπως μετρητές κτλ. Σωστό ή λάθος; b. Οι κλάσεις ορίου περιγράφουν το πως επιτυγχάνεται η διασύνδεση με τους χρήστες και όχι το τι επιτυγχάνεται από αυτή. Σωστό ή λάθος; c. Οι κλάσεις ορίου δεν επικοινωνούν με μηχανήματα. Σωστό ή λάθος; d. Πολλές φορές κριτήριο για την ποιότητα ενός προγράμματος είναι η ταχύτητα υλοποίησής του. Σωστό ή λάθος; e. Χαμηλή συνεκτικότητα σημαίνει υψηλή σύζευξη. Σωστό ή λάθος; f. Το Adapter Pattern θεωρείται δημιουργικό μοτίβο (creational pattern). Σωστό ή λάθος; g. Αφηρημένη είναι μια κλάση στην οποία απλά δηλώνεται το interface της (διεπαφή) χωρίς υλοποίηση. Σωστό ή λάθος; h. Μια περίπτωση χρήσης δεν περιγράφει μια ολοκληρωμένη λειτουργία ενός συστήματος. Σωστό ή λάθος i. Οι περιπτώσεις χρήσης καλό είναι να περιγράφουν και κάποιες λεπτομέρειες υλοποίησης. Σωστό ή λάθος; j. Η αντιστοίχηση κλάσεων σε σχεσιακούς πίνακες είναι πάντα 1-1. Σωστό ή λάθος; 10

10. Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις. (1 μονάδα) a. Μια σχέση γενίκευσης στη UML ανάμεσα σε δύο κλάσεις μπορεί να αντιστοιχηθεί με δύο σχεσιακούς πίνακες έναν για την υπερκλάση και έναν για την υποκλάση, με το δεύτερο πίνακα να περιέχει ένα ξένο κλειδί που αναφέρεται στον πρώτο. Σωστό ή λάθος; b. Ο αμυντικός προγραμματισμός ορίζει ότι ελέγχουμε πάντα αν οι τιμές που μας περνάν άλλα συστατικά είναι οι αναμενόμενες. Σωστό ή λάθος; c. Οι περιπτώσεις χρήσεις είναι μια τεχνική για την καταγραφή των απαιτήσεων του χρήστη. Σωστό ή λάθος; d. Ένα διάγραμμα ακολουθίας δίνει έμφαση στη χρονική σειρά των μηνυμάτων μεταξύ διαφορετικών αντικειμένων. Σωστό ή λάθος; e. Οι χάρτες κατάστασεις μπορούν να χρησιμοποιηθούν για την αναπαράσταση των αλληλεπιδράσεων μεταξύ αντικειμένων διαφορετικών κλάσεων. Σωστό ή λάθος; f. Οδηγίες όπως «Είναι υποχρεωτική η χρήση των '{','}' ακόμα και όταν αυτά είναι προαιρετικά» είναι συνηθισμένες στα προγραμματιστικά πρότυπα. Σωστό ή λάθος; g. Μπορεί να υπάρχουν πολλά διαφορετικά μοντέλα ανάλυσης για μια υλοποίηση. Σωστό ή λάθος; h. Οι χάρτες καταστάσεων είναι ισοδύναμοι με τα διαγράμματα συνεργασίας. Απλά αναπαριστούν την πληροφορία με διαφορετικό τρόπο. Σωστό ή λάθος; i. Στη σχεδίαση μιας κλάσης δεν είναι σημαντικό να ορίζονται οι λειτουργίες της προτού οριστεί η υλοποίησή της. Σωστό ή λάθος j. Η Τεχνολογία Λογισμικού αφορά τη σχεδίαση κυρίως τη συγγραφή λογισμικού με σχεδιαστικά μοτίβα. Σωστό ή λάθος; 11