Θέµατα εξετάσεων µε απαντήσεις

Σχετικά έγγραφα
Θέματα εξετάσεων. Τύπος: B

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

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

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

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

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

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

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

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

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

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

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

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

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

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

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

οµές (structures) και Eνώσεις (unions)

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

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

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

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

Προγραμματισμός ΙI (Θ)

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Επανάληψη για τις Τελικές εξετάσεις

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

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

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

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

POINTERS, AGGREGATION, COMPOSITION

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

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

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

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

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Ιδιοκτησία Αντικειµένου

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

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

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

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

Γλώσσες Προγραμματισμού

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

ΗΥ-150. Προγραμματισμός

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

ΗΥ-150. Προγραμματισμός

Transcript:

Θέµατα εξετάσεων µε απαντήσεις 1. Τι αλλαγές θα κάνατε στον παρακάτω κώδικα αν θέλατε να εφαρµόσετε την αρχή του αµυντικού προγραµµατισµού (1 µονάδα); #define LENGTH 10 char *strings[length]; char *getstring(int position) { if (position >= LENGTH) { return NULL; return strings[position]; Οι αρχές του αµυντικού προγραµµατισµού ορίζουν ότι κάθε συνάρτηση θεωρεί ότι τα δεδοµένα που της δίνουν µπορεί να µην είναι σωστά και πρέπει να κάνει τους αντίστοιχους ελέγχους. Στη συγκεκριµένη περίπτωση τα µόνα δεδοµένα που περνάν είναι µέσω της παραµέτρου position. Άρα πρέπει να γίνεται έλεγχος σε αυτήν την παράµετρο αν έχει λανθασµένη τιµή. Βλέπουµε ότι ήδη γίνεται έλεγχος αν είναι πάνω από τα όρια του πίνακα (>=LENGTH) αλλά δε γίνεται έλεγχος αν είναι κάτω από τα όρια του πίνακα (<0). Άρα σύµφωνα µε τις αρχές του αµυντικού προγραµµατισµού πρέπει να την αλλάξουµε ώστε να ελέγχει και την περίπτωση που η µεταβλητή αυτή είναι µικρότερη του 0. 2. Πώς θα αλλάζατε την παρακάτω συνάρτηση ώστε να συµφωνεί µε το προγραµµατιστικό πρότυπο που είδαµε στο µάθηµα; (0.5 µονάδα) // Επέστρεψε TRUE αν είναι χαρακτήρας που αντιστοιχεί σε ψηφίο, // FALSE διαφορετικά bool checkcharacter(char c); Πρέπει το όνοµα της συνάρτησης, από τη στιγµή που επιστρέφει µια λογική τιµή, να δηλώνει πότε επιστρέφει TRUE ή FALSE. Το ακόλουθο όνοµα εποµένως θα ταίριαζε περισσότερο: bool isdigit(char c); 3. Σας δίνουν την ακόλουθη περιγραφή που αφορά ένα σύστηµα ηλεκτρονικής έκδοσης εισιτηρίων για ένα κινηµατογράφο: Κάθε εισιτήριο πρέπει να αναγράφει την τιµή του, τον αριθµό της θέσης, την αίθουσα, την παράσταση στην οποία αναφέρεται και την ηµεροµηνία. Κάθε αίθουσα έχει διαφορετικό αριθµό από καρέκλες. Ο κινηµατογράφος διαθέτει 4 απλές αίθουσες και δύο αίθουσες VIP οι οποίες έχουν επιπλέον και έναν αριθµό από τραπέζια. Μία παράσταση έχει κάποιο συγκεκριµένο τίτλο και έναν αριθµό από ηθοποιούς. Τα µόνα στοιχεία που χρησιµοποιούνται για τους ηθοποιούς είναι το όνοµά τους και το αν έχουν βραβευθεί µε Oscar ή όχι. a. Σχεδιάστε ένα διάγραµµα κλάσεων σε UML από την παραπάνω περιγραφή. (1 µονάδα) Το ακόλουθο είναι ένα πιθανό διάγραµµα κλάσεων που θα µπορούσε να προκύψει από την περιγραφή:

b. Γράψτε τις δηλώσεις των κλάσεων σε C++. Γράψτε µόνο τα χαρακτηριστικά (attributes) των κλάσεων χωρίς τις µεθόδους (συναρτήσεις) τους. (1 µονάδα) class Ticket { float price; int seatnumber; Room myroom; Film myfilm; class Film { string title; vector<actors> myactors; class Cinema { Room myroom[4]; VipRoom myviproom[2]; class Actors { string name; boolean hasoscar; class Room { int chairs; Cinema mycinema; class VipRoom:public Room { int tables; Cinema mycinema; 4. Έχετε αναλάβει την υλοποίηση ενός παιχνιδιού. Στο παιχνίδι αυτό θα πρέπει να εµφανίζονται δράκοι και τέρατα. Και οι δράκοι και τα τέρατα έχουν τις ίδιες δυνατότητες (ρίχνουν φωτιά και πετούνε) αλλά το κάνουν µε διαφορετικό τρόπο. Για αυτό το λόγο θα θέλατε να µπορέσετε να γράψετε τον κώδικά σας ούτως ώστε να µη χρειάζεται αλλαγές αν σε κάποιο σηµείο χρειαστεί να δηµιουργήσετε και να επεξεργαστείτε δράκους ή τέρατα. a. Ποιο µοτίβο θα χρησιµοποιούσατε (0,5 µονάδα); Θα χρησιµοποιούσα το Factory Pattern b. Αναπαραστήστε το µοτίβο σε ένα διάγραµµα κλάσεων σε UML (1,0 µονάδα)

c. Αν στο παιχνίδι σας µπορεί να υπάρχει µόνο ένας δράκος ή τέρας πως θα τροποποιούσατε το µοτίβο σας (1,0 µονάδα); Eξαρτάται αν µπορεί να υπάρχει ένα τέρας και ένας δράκος ή αν πρέπει να υπάρχει µόνο ένας δράκος ή τέρας. Στην πρώτη περίπτωση θα εφάρµοζα το singleton µοτίβο στις κλάσεις Monster και Dragon στη δεύτερη στην κλάση CreatureFactory (Για την απάντηση αυτή δε χρειαζόταν να απαντήσετε και για τις δύο περιπτώσεις, Οποιαδήποτε από τις δύο ήταν σωστή). d. ώστε αναπαράσταση της τροποποίησης σε UML (1,0 µονάδα) ίνεται η λύση για την πρώτη περίπτωση.

5. Έχετε τον παρακάτω κώδικα typedef struct Person { char name[30]; char surname[30]; Person; void setname(person person, char *name) { strcpy(person.name, name); Είναι καλά σχεδιασµένος ή όχι; Γιατί; (1.0 µονάδα) Όχι υπάρχει σύζευξη αντιγράφου. ε χρειάζεται να περαστεί όλη η δοµή Person στη συνάρτηση γιατί δε χρησιµοποιείται όλη. Έτσι δίνεται χωρίς λόγο πρόσβαση και στα άλλα πεδία του struct. Θα ήταν πιο σωστό η συνάρτηση να οριστεί ως εξής: void setname(char *dest, char *name); [Σηµείωση. Ούτως ή άλλως η συνάρτηση αυτή δεν εκπληρώνει το σκοπό της. Γιατί;] 6. Στο παρακάτω διάγραµµα UML Η κλάση Window είναι αφηρηµένη. Ποιος ο ρόλος της; Γιατί χρειαζόµαστε τις αφηρηµένες κλάσεις; (2.0 µονάδες) Ο ρόλος των αφηρηµένων κλάσεων είναι να ορίσουν τη διεπαφή (interface) µε την οποία µπορούν να χρησιµοποιηθούν όσες κλάσεις τις κληρονοµούν. Μας επιτρέπουν να σκεφθούµε τι λειτουργικότητα πρέπει να προσφέρει µια κλάση χωρίς να µπερδευόµαστε µε λεπτοµέρειες υλοποίησης.