ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ»

Σχετικά έγγραφα
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ»

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

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

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

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

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

Βασικά της γλώσσας JAVA

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships)

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Wrapper Classes, Abstract Classes and Interfaces

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

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

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

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

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

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

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

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

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

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

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

Οι περιπτώσεις χρήσης

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ ΕΡΓΑΣΤΗΡΙΟ 2

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

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

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

Γενικά (για τις γραπτές εξετάσεις)

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

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

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

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

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

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

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

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

Περιεχόμενο του μαθήματος

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Απάντηση: (func endfunc)-([a-za-z])+

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

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

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

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

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

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

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

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

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

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

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

ΕΠΛ131 Αρχές Προγραμματισμού

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

Transcript:

ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ Σάββατο 5 Ιουνίου 2010 Οδηγίες: Η διάρκεια της εξέτασης είναι τρεις και µισή (3 ½) ώρες. Ισχύουν όσα αναφέρονται στους Κανονισµούς Εξετάσεων του ΕΑΠ γενικότερα και της Θ.Ε ειδικότερα. Τα κριτήρια αξιολόγησης και το βάρος κάθε κριτηρίου αναγράφονται στο τέλος του κειµένου των θεµάτων. Το σύνολο των µορίων που αντιστοιχεί στο άριστα (10) είναι 200. Επιτυχόντες θεωρούνται όσοι/ες φοιτητές/τριες συγκεντρώσουν τουλάχιστον 100 µόρια, τα οποία αντιστοιχούν στον ελάχιστο προβιβάσιµο βαθµό (5). Θέµα 1: Αντικειµενοστρεφής ανάλυση Σχεδιάζουµε την υλοποίηση ενός συστήµατος υποβολής και αξιολόγησης επιστηµονικών εργασιών για ένα συνέδριο. Οι εργασίες είναι δύο ειδών: κανονικές και posters. Το σύστηµα επιτρέπει στους συγγραφείς των εργασιών να υποβάλλουν εργασίες, στους κριτές των εργασιών να δουν και να αξιολογήσουν τις εργασίες που τους έχουν ανατεθεί και στο προεδρείο του συνεδρίου να αναθέσει εργασίες σε αξιολογητές. Επιπλέον, το προεδρείο µπορεί να βλέπει τις αξιολογήσεις ανά εργασία και αξιολογητή, αλλά και τις αξιολογήσεις που λείπουν. Το προεδρείο αποφασίζει για την αποδοχή ή απόρριψη µιας εργασίας και µε βάση την απόφαση αυτή, το σύστηµα εµφανίζει καταλόγους εγκεκριµένων και απορριφθέντων εργασιών. Ένας συγγραφέας µπορεί να υποβάλλει το πολύ τρεις εργασίες. Το σύστηµα δεν επιτρέπει την υποβολή υπεράριθµων εργασιών, εκτός και αν ο συγγραφέας αποσύρει κάποια. Ανά πάσα στιγµή ο συγγραφέας µπορεί να ελέγξει εάν έχουν υποβληθεί όλες οι αναµενόµενες αξιολογήσεις για κάθε εργασία του (και µόνο), ποια είναι τα σχόλια των αξιολογητών και εάν η εργασία έχει γίνει δεκτή ή όχι. Ο αξιολογητής µπορεί να δει µόνο τον κατάλογο εργασιών που του έχουν ανατεθεί και για κάθε τέτοια εργασία να γράψει την αξιολόγηση απευθείας στην ειδική σελίδα του συστήµατος, ή να επισυνάψει σχετικό αρχείο µε σχόλια, ή και τα δύο. Σε κάθε αξιολογητή ανατίθενται το πολύ τέσσερις εργασίες προς αξιολόγηση. Μια κανονική εργασία µέτριας ποιότητας µπορεί να γίνει αποδεκτή ως poster. Μια εργασία που έχει εγκριθεί πρέπει να διορθωθεί σύµφωνα µε τις υποδείξεις των αξιολογητών και να υποβληθεί ξανά, ώστε να συµπεριληφθεί στο πρόγραµµα του συνεδρίου, µετά την τελική έγκριση του προεδρείου. Όταν µια εργασία γίνει τελικά αποδεκτή, κατανέµεται σε µια από τις συνεδρίες του συνεδρίου. Το συνέδριο περιλαµβάνει το πολύ 12 συνεδρίες, καθεµία από τις οποίες φιλοξενεί κανονικές εργασίες και posters. Κάθε εργασία περιγράφεται από τον τίτλο, τους συγγραφείς και την επιστηµονική συνεδρία του συνεδρίου όπου υποβάλλεται. Για τις κανονικές εργασίες τίθεται µέγιστο όριο σελίδων ίσο µε 6, ενώ για τα posters, το όριο είναι 4 σελίδες. Επιπλέον, τα posters πρέπει να πληρούν καθορισµένες διαστάσεις πλάτους και µήκους. Ερώτηµα 1 Να σχεδιάσετε ένα διάγραµµα περιπτώσεων χρήσης (use case diagram) για το σύστηµα λογισµικού. Ερώτηµα 1 απάντηση Το ζητούµενο διάγραµµα περιπτώσεων χρήσης (use case diagram) είναι το ακόλουθο: 1

Σýστηìα ΥποβολÞò και Αξιολüγησηò Επιστηìονικþν Εργασιþν Äιüρθωση ΣυγγραφÝαò <<include>> <<include>> ΥποβολÞ Ελεγχοò Αξιολüγησηò <<include>> Ελεγχοò ΑποδοχÞò ΧρÞστηò Εßσοδοò (Login) στο Σýστηìα Απüσυρση Αξιολüγηση ΕìφÜνιση Καταλüγου Εργασιþν προò Αξιολüγηση ΚριτÞò/ ΑξιολογητÞò Επισýναψη Αρχεßου Αξιολüγησηò Ελεγχοò ΑξιολογÞσεων Ελεγχοò ΑξιολογÞσεων ανü Εργασßα ΑνÜθεση για Αξιολüγηση Ελεγχοò ΑξιολογÞσεων ανü ΑξιολογητÞ Προεδρεßο ΑποδοχÞ ΑποδοχÞ ωò Poster ΕìφÜνιση Καταλüγου Εργασιþν ΑποδοχÞ ÄιορθωìÝνηò Απüρριψη <<include>> ΚατανοìÞ σε Συνεδρßα <<include>> Ερώτηµα 2 Να σχεδιάσετε το διάγραµµα καταστάσεων (state diagram) του αντικειµένου «Κανονική Εργασία». Ερώτηµα 2 απάντηση Το ζητούµενο διάγραµµα καταστάσεων (state diagram) είναι το ακόλουθο: 2

Ερώτηµα 3 Να σχεδιάσετε ένα διάγραµµα κλάσεων (class diagram) για το σύστηµα λογισµικού. Ερώτηµα 3 απάντηση Για τη σχεδίαση του ζητούµενου διαγράµµατος κλάσεων πραγµατοποιείται ανάλυση κειµένου στο κείµενο της εκφώνησης του θέµατος. Με τον τρόπο αυτό εντοπίζονται οι κλάσεις που θα χρησιµοποιηθούν, τα πεδία και οι µέθοδοι που περιέχουν, οι σχέσεις µεταξύ των κλάσεων και οι πολλαπλότητες που χαρακτηρίζουν αυτές τις σχέσεις. Αναφορικά µε τον προσδιορισµό των σχέσεων ανάµεσα στις κλάσεις, επισηµαίνεται ότι στην εκφώνηση του θέµατος αναφέρεται ότι υπάρχουν δύο είδη εργασιών, δηλαδή οι κανονικές εργασίες και τα posters. Εποµένως, θα χρησιµοποιηθούν τρεις κλάσεις: Μία για τις εργασίες στη γενική τους µορφή ( Εργασία ), µία για τις κανονικές εργασίες ( Κανονική Εργασία ) και µία για τα posters ( Poster ). Οι δύο τελευταίες κλάσεις θα συνδέονται µε σχέση κληρονοµικότητας µε την κλάση Εργασία. Σε αυτή την ιεραρχία κληρονοµικότητας, η κλάση Εργασία είναι η υπερκλάση (για το λόγο αυτό το τριγωνικό βέλος που χρησιµοποιείται για την απεικόνιση της κληρονοµικότητας δείχνει προς αυτή), ενώ οι κλάσεις Κανονική Εργασία και Poster είναι υποκλάσεις. Επιπρόσθετα, στην εκφώνηση του θέµατος αναφέρεται ότι το συνέδριο περιλαµβάνει το πολύ 12 συνεδρίες, υποδηλώνοντας την ανάγκη χρήσης δύο κλάσεων ( Συνέδριο και Συνεδρία ) για την απεικόνιση του συνεδρίου και των συνεδριών αντίστοιχα. Από τη στιγµή που το συνέδριο αποτελείται από 12 (το πολύ) συνεδρίες, ανάµεσα στην κλάση Συνέδριο και στην κλάση Συνεδρία υπάρχει µια σχέση σύνθεσης (composition), στα πλαίσια της οποίας η κλάση Συνέδριο είναι µια σύνθετη κλάση (για το λόγο αυτό το σύµβολο του διαµαντιού πρέπει να είναι προσαρτηµένο στην κλάση αυτή), η οποία περικλείει την απλούστερη (συνιστώσα) κλάση Συνεδρία. Επισηµαίνεται ότι δεν χρησιµοποιείται σχέση συναρµολόγησης (aggregation) γιατί θεωρείται ότι η απλούστερη κλάση έχει διάρκεια ζωής που συµπίπτει µε αυτή της σύνθετης κλάσης (καθώς µιας συνεδρία πραγµατοποιείται πάντοτε στα πλαίσια ενός συνεδρίου). Το ζητούµενο διάγραµµα κλάσεων (class diagram) είναι το ακόλουθο: 3

- Τßτλοò Συνεδρßα 0..12 1 ΣυνÝδριο 1 προεδρεýει συììετýχει * ΣυγγραφÝαò - Ονοìατεπþνυìο - ΦορÝαò - Email + ΥπÝβαλε Εργασßα + ΑπÝσυρε Εργασßα + Ελεγξε Αξιολüγηση + Ελεγξε ΑποδοχÞ + Äιüρθωσε Εργασßα συγγρüφει 1..* 1..3 - Τßτλοò 1 + ΕìφÜνισε Καταλüγουò Εργασιþν + ΚατÝνειìε Εργασßα σε Συνεδρßα 1 * Εργασßα φιλοξενεß - Τßτλοò - ΣυγγραφÝαò [] - Ονοìα Συνεδρßαò - ΜÝγιστο Οριο Σελßδων + Επισýναψε Αρχεßο Σχολßων 0..4 διαθýτει 1 * αξιολογεß 1 διαχειρßζεται * 1 ΚριτÞò/ΑξιολογητÞò - Ονοìατεπþνυìο - ΦορÝαò - Email + ÄιÜβασε Εργασßα + Αξιολüγησε Εργασßα + ΕìφÜνισε ΚατÜλογο Εργασιþν ορßζει 1 Προεδρεßο - Ονοìατεπþνυìο - ΦορÝαò - Email + ΑνÝθεσε Εργασßα + Ελεγξε ΑξιολογÞσειò + ΚÜνε ÄεκτÞ Εργασßα + ΑπÝρριψε Εργασßα + ΚÜνε ÄεκτÞ ÄιορθωìÝνη Εργασßα * 1 + Ελεγξε Οριο Σελßδων Poster - ΠλÜτοò - ΜÞκοò + Ελεγξε Οριο Σελßδων Θέµα 2: Αποδιφοροποίηση γραµµατικής ίνεται η ακόλουθη γραµµατική: S S op1 S S op2 S A A a b Ερώτηµα 1 είξτε ότι η δοθείσα γραµµατική είναι διφορούµενη. 4

Ερώτηµα 1 απάντηση Για να δειχθεί ότι η δοθείσα γραµµατική είναι διφορούµενη αρκεί να διατυπώσουµε µια συµβολοσειρά για την οποία υπάρχουν δύο διαφορετικές αριστερές (ή εναλλακτικά δεξιές) παραγωγές. Αυτό είναι ισοδύναµο µε την απόδειξη ότι υπάρχουν περισσότερα από ένα δένδρα ανίχνευσης για τη συγκεκριµένη συµβολοσειρά. Θεωρούµε τη συµβολοσειρά: b op1 a op2 a και έχουµε τις εξής δύο αριστερές παραγωγές: S S op1 S ( κανόνας S S op1 S ) Α op1 S ( κανόνας S A ) b op1 S ( κανόνας A b ) b op1 S op2 S ( κανόνας S S op2 S ) b op1 A op2 S ( κανόνας S A ) b op1 a op2 S ( κανόνας A a ) b op1 a op2 A ( κανόνας S A ) b op1 a op2 a ( κανόνας A a ) S S op2 S ( κανόνας S S op2 S ) S op1 S op2 S ( κανόνας S S op1 S ) Α op1 S op2 S ( κανόνας S A ) b op1 S op2 S ( κανόνας A b ) b op1 A op2 S ( κανόνας S A ) b op1 a op2 S ( κανόνας A a ) b op1 a op2 A ( κανόνας S A ) b op1 a op2 a ( κανόνας A a ) Ερώτηµα 2 Μετασχηµατίστε τη δοθείσα γραµµατική σε µια ισοδύναµη, στην οποία ο τελεστής op1 θα έχει υψηλότερη προτεραιότητα από τον τελεστή op2. είξτε ότι η νέα γραµµατική δεν είναι διφορούµενη. Ερώτηµα 2 απάντηση Μια γραµµατική είναι ισοδύναµη µε τη δοθείσα γραµµατική αν παράγει τις ίδιες συµβολοσειρές µε αυτή. Θα πρέπει λοιπόν από τη ρίζα να παράγονται συµβολοσειρές που περιέχουν op1 και συµβολοσειρές που περιέχουν op2 µε µία ουσιώδη διαφορά µεταξύ των δύο αυτών περιπτώσεων. Ο τελεστής op1 θα πρέπει να έχει υψηλότερη προτεραιότητα και αυτό σηµαίνει ότι σε µία πρόταση όπως αυτή του παραδείγµατος η σωστή παραγωγή θα πρέπει να είναι η δεύτερη και όχι η πρώτη. Θα πρέπει δηλαδή το b op1 a να είναι το αποτέλεσµα που θα αποτελέσει τον αριστερό τελεστέο του op2 a. Με άλλα λόγια θα πρέπει το op2 να εµφανίζεται πιο κοντά στη ρίζα (αρχή της γραµµατικής) και το op1 να παράγεται έµµεσα (µέσω νέου µη τερµατικού συµβόλου) από αυτή. Η νέα γραµµατική που εκπληρώνει τις προαναφερόµενες προϋποθέσεις είναι η εξής: S T op2 S T Τ A op1 T A A a b Η µοναδική παραγωγή της συµβολοσειράς b op1 a op2 a είναι πλέον η εξής: S T op2 S A op1 T op2 S b op1 T op2 S b op1 A op2 S b op1 a op2 S b op1 a op2 T b op1 a op2 A b op1 a op2 a 5

Θέµα 3: Υλοποίηση εφαρµογής σε Java Το παρακάτω διάγραµµα κλάσεων αναπαριστά ένα εργοστάσιο (Factory) που διαθέτει διάσπαρτους αισθητήρες (Sensors) µετρήσεων των καιρικών συνθηκών. Υπάρχουν αισθητήρες θερµοκρασίας (Temperature) και υγρασίας (Humidity). Το εργοστάσιο διαθέτει κοινή δοµή δεδοµένων για τις µετρήσεις. Κάθε µέτρηση (SensedValue) χαρακτηρίζεται από τη χρονική στιγµή που πραγµατοποιήθηκε, τον αισθητήρα που την παρήγαγε και ένα πραγµατικό αριθµό που αντιστοιχεί στην µετρούµενη τιµή. Για τις ανάγκες της άσκησης, θεωρούµε ότι οι αισθητήρες διαθέτουν µέθοδο που να παράγει µία τυχαία τιµή µέτρησης στα αποδεκτά όρια τιµών τους. Τα διαστήµατα τιµών για την θερµοκρασία είναι [-10.0,40.0] και για την υγρασία [0.0,100.0]. Ερώτηµα 1 Να γραφεί ο κώδικας Java που υλοποιεί το σύστηµα. Η κάθε κλάση να διαθέτει όλα τα απαιτούµενα χαρακτηριστικά και µεθόδους, όπως περιγράφονται στο διάγραµµα κλάσεων. Ερώτηµα 1 απάντηση public class Factory{ private Sensor[] sensors; private Vector<SensedValue> data; private int simtime; public Factory(Sensor[] sensors) { this.sensors = sensors; data = new Vector<SensedValue>(); 6

public class SensedValue{ Date date; Sensor sensor; double value; public SensedValue(Date date, Sensor sensor, double value) { this.date = date; this.sensor = sensor; this.value = value; public Sensor getsensor() { return sensor; public double getvalue() { return value; public abstract class Sensor { public abstract SensedValue getsensedvalue(); public class HumiditySensor extends Sensor{ public SensedValue getsensedvalue() { double value = Math.random()*100.0; return new SensedValue(new Date(), this, value); public class TemperatureSensor extends Sensor{ public SensedValue getsensedvalue() { double value = -10.0 + Math.random()*50.0; return new SensedValue(new Date(), this, value); Ερώτηµα 2 Να γράψετε µέθοδο main(), η οποία θα υλοποιεί ένα εργοστάσιο µε ένα αισθητήρα υγρασίας και δύο αισθητήρες θερµοκρασίας και στη συνέχεια θα τυπώνει τις τιµές τους ανά λεπτό για µία ώρα. Ερώτηµα 2 απάντηση public class Main { public static void main(string[] args) { Sensor[] s = new Sensor[3]; s[0] = new HumiditySensor(); s[1] = new TemperatureSensor(); s[2] = new TemperatureSensor(); Factory f = new Factory(s); 7

for(int i=0;i<60;i++){ // 60 φορές System.out.println(("Sensor values at min "+i); for (Sensor s1: s) System.out.println(s1.getSensedValue()); Thread.sleep(60000); //60 * 1000 msec = 1 min Ερώτηµα 3 Αλλάξτε τον κώδικα της κλάσης Factory ώστε να λειτουργεί ως νήµα. Προσθέστε και τις µεθόδους: simulate(int simtimeinsec), η οποία παίρνει ως παράµετρο τον αριθµό των δευτερολέπτων που επιθυµούµε να πραγµατοποιηθεί εξοµοίωση λειτουργίας του εργοστασίου, εκκινεί το εργοστάσιο, πραγµατοποιεί την εξοµοίωση και στο τέλος της εξοµοίωσης τυπώνει τη µέση τιµή των καταγεγραµµένων θερµοκρασιών. Στα πλαίσια την εξοµοίωσης το εργοστάσιο ανά 10 δευτερόλεπτα ζητά από τους διαθέσιµους αισθητήρες (και καταγράφει στην κοινή δοµή δεδοµένων) τις µετρήσεις. printtemperratureavg(), η οποία υπολογίζει και τυπώνει τη µέση τιµή των καταγεγραµµένων θερµοκρασιών. Ερώτηµα 3 απάντηση Με πράσινο σηµειώνονται οι αλλαγές. Ακολουθεί ο κώδικας των δύο νέων µεθόδων και της µεθόδου run(): import java.util.date; import java.util.vector; //public class Factory implements Runnable{ //Εναλλακτική προσέγγιση public class Factory extends Thread{ public void simulate(int simtimeinsec){ simtime = simtimeinsec ; data.clear(); this.start(); @Override public void run(){ long stoptime = new Date().getTime()+simTime*1000; try{ while (stoptime > new Date().getTime()) { for (Sensor s : sensors) { data.add(s.getsensedvalue()); //10 sec Thread.sleep(10000); catch(interruptedexception x){ finally{printtemperatureavg(); 8

private void printtemperatureavg(){ double sum=0.0; int count=0; for(sensedvalue v:data){ if(v.getsensor().getclass().getname(). equals(temperaturesensor.class.getname())){ sum+=v.getvalue(); count++; System.out.println("Average temperature is" +(sum/count)); Ερώτηµα 4 Προσθέστε τον απαιτούµενο κώδικα στη µέθοδο main() ώστε να πραγµατοποιηθεί µια εξοµοίωση διάρκειας 5 λεπτών. Ερώτηµα 4 απάντηση Πρέπει να αφαιρεθούν οι εντολές που κάνουν την εκτύπωση των τιµών των αισθητήρων ανά λεπτό. Με πράσινο σηµειώνεται η εντολή που προστίθεται: public class Main { public static void main(string[] args) { Sensor[] s = new Sensor[3]; s[0] = new HumiditySensor(); s[1] = new TemperatureSensor(); s[2] = new TemperatureSensor(); Factory f = new Factory(s); f.simulate(5*60); Θέµα 4: Εκτίµηση κόστους έργου Θεωρήστε το ακόλουθο σύστηµα µηχανοργάνωσης πανεπιστηµιακής βιβλιοθήκης: Μια πανεπιστηµιακή βιβλιοθήκη αποθηκεύει βιβλία (Books) και AudioBooks (σε DVD), τα οποία είναι δυνατό να δανεισθούν, τόσο στο προσωπικό του πανεπιστηµίου (Personnel), όσο στους φοιτητές (Student). Κάθε χρήστης (User) της βιβλιοθήκης διαθέτει µοναδικό κωδικό και µπορεί να δανεισθεί ένα αντικείµενο για 10 ηµέρες το πολύ. Οι φοιτητές µπορούν να δανεισθούν έως 5 βιβλία και έως 2 DVD, ενώ οι υπάλληλοι µπορούν να δανεισθούν έως 8 βιβλία και έως 4 DVD. Κάθε χρήστης µπορεί να δεσµεύσει έως 3 βιβλία (δεν είναι δυνατή η δέσµευση DVD). Ο δανεισµός ή η δέσµευση µπορεί να γίνει είτε από ένα χρήστη, είτε µε τη βοήθεια του βιβλιοθηκάριου. Σε κάθε περίπτωση, όταν ένας χρήστης της βιβλιοθήκης δανείζεται ένα αντικείµενο, οι λεπτοµέρειες δανεισµού του ελέγχονται για να διασφαλιστεί, τόσο ότι δεν έχει δανεισθεί εκπρόθεσµα άλλα αντικείµενα, όσο και ότι δεν έχει ήδη δανεισθεί το µέγιστο επιτρεπόµενο αριθµό αντικειµένων. Αν για ένα συγκεκριµένο βιβλίο έχουν ήδη γίνει τρεις δεσµεύσεις, τότε σε περίπτωση που γίνει ακόµη µία δέσµευση, ο βιβλιοθηκάριος θα παραγγείλει ένα νέο αντίτυπο του συγκεκριµένου βιβλίου. Οι χρήστες της βιβλιοθήκης είναι δυνατό να ελέγξουν οι ίδιοι τις λεπτοµέρειες δανεισµού που τους αφορούν οποιαδήποτε 9

χρονική στιγµή. Οι βιβλιοθηκάριοι επιτρέπεται να ελέγχουν τις λεπτοµέρειες δανεισµού οποιουδήποτε χρήστη της βιβλιοθήκης. Το σύστηµα παράγει ηµερήσιες και µηνιαίες αναφορές για τους βιβλιοθηκάριους. Στις µηνιαίες αναφορές υπολογίζεται και το κόστος από τις καθυστερηµένες επιστροφές ή απώλειες. Παρακάτω δίνεται το µοντέλο των περιπτώσεων χρήσης. Ερώτηµα 1 Χρησιµοποιώντας τη µέθοδο Use Case Points να εκτιµήσετε τη συνολική προσπάθεια που απαιτείται για την κατασκευή αυτού του συστήµατος λογισµικού. Να χρησιµοποιήσετε αποκλειστικά τις περιπτώσεις χρήσης του σχήµατος. Επίσης να κάνετε όσες παραδοχές χρειάζονται, χωρίς όµως να παραβιάσετε καµία βασική αρχή καλής ανάπτυξης λογισµικού. Ερώτηµα 1 απάντηση Χρησιµοποιώντας το µοντέλο περιπτώσεων χρήσης του σχήµατος εκτελούµε τα εξής βήµατα για την εφαρµογή της µεθόδου Use Case Points: 1. Χαρακτηρισµός χειριστών. Χειριστές: User, Librarian Βάρος χειριστών UAW1, UAW2 = 3 (Υποθέτουµε ότι σε ένα σύστηµα αυτού του είδους οι Χειριστές επικοινωνούν µε το σύστηµα µέσω ενός GUI). 10

2. Χαρακτηρισµός περιπτώσεων χρήσης. Ο κύριος παράγοντας για τον καθορισµό του βάρους µίας Περίπτωσης Χρήσης (Π.Χ.) είναι ο αριθµός των βηµάτων της βασικής ροής της (βλ. άρθρο Clemmons). Η εκφώνηση αναφέρει περιορισµούς και ελέγχους, πράγµα που σηµαίνει ότι µία λογική επιλογή είναι να θεωρήσουµε µέση πολυπλοκότητα για όλες τις Π.Χ.: BorrowLibraryItem, UUCW1 = 10 BorrowJournal, UUCW2 = 10 BorrowBook, UUCW3 = 10 ReserveBook, UUCW4 = 10 CheckBorrowDetails, UUCW5 = 10 CheckUserDetails, UUCW6 = 10 OrderBookCopy, UUCW7 = 10 3. Υπολογισµός συνολικού αριθµού αστάθµητων σηµείων περιπτώσεων χρήσης. Με βάση τα βήµατα 1 και 2 έχουµε ότι: UUCP = UAW1 + UAW2 + 7*UUCWi = 2*3 + 7*10 = 76. 4. Απόδοση τιµών σε παράγοντες τεχνικής πολυπλοκότητας και σε παράγοντες περιβάλλοντος. Τεχνικοί παράγοντες: Παράγοντας Βάρος Τιµή Τελική Τιµή Κατανεµηµένο σύστηµα 2 0 0 Απαιτήσεις απόδοσης 1 0 0 Αποδοτικότητα τελικών χρηστών Σύνθετη εσωτερική επεξεργασία 1 2 2 1 2 2 Επαναχρησιµοποιήσιµος 1 0 0 κώδικας Ευκολία εγκατάστασης 0,5 0 0 Ευχρηστία 0,5 1 0,5 Ευκολία αλλαγής 1 2 2 Ταυτόχρονη λειτουργία 1 0 0 Ασφάλεια 1 2 2 Πρόσβαση σε τρίτους 1 0 0 Εκπαίδευση χρηστών 1 0 0 Σύνολο 8,5 Σχόλιο Υποθέτουµε ότι το σύστηµα είναι προσπελάσιµο από το Internet και υπάρχουν κάποιες σχετικές απαιτήσεις Έλεγχοι, ικανοποίηση κάποιων περιορισµών, στοιχειώδεις υπολογισµοί Υποτίθεται ότι θα πρέπει να υπάρχει µία στοιχειώδης ευχρηστία της εφαρµογής, π.χ. στην τοποθέτηση των επιλογών στις διάφορες φόρµες Υποτίθεται ότι ο κώδικάς µας πρέπει ούτως ή άλλως να διευκολύνει µελλοντικές αλλαγές Πρέπει να υπάρχει διασφάλιση της χρήσης και προστασία των δεδοµένων 11

Παράγοντες περιβάλλοντος: Υποθέτουµε µέσες τιµές για όλους τους παράγοντες, εκτός των σταθερών απαιτήσεων. Παράγοντας Βάρος Τιµή Τελική Τιµή Οικειότητα µε τη UML 2 2,5 5 Εργασία part time -1 2,5-2,5 Ικανότητα ανάλυσης 0,5 2,5 1,25 Εµπειρία εφαρµογής 0,5 2,5 1,25 Εµπειρία στην αντικειµενοστρέφεια 1 2,5 2,5 Κίνητρο 1 2,5 2,5 υσκολία γλώσσας προγραµµατισµού -1 2,5-2,5 Σταθερές απαιτήσεις 2 3,5 7 Σύνολο 14,5 Σχόλιο Σχετικά καλά ορισµένες απαιτήσεις (έχουν δοθεί λεπτοµερώς οι διάφοροι περιορισµοί) µε µικρή πιθανότητα να αλλάξουν, καθώς είναι γνωστή η διαδικασία λειτουργίας µίας δανειστικής βιβλιοθήκης 5. Υπολογισµός αθροίσµατος παραγόντων τεχνικής πολυπλοκότητας. Συνολικά Tfactor = 8,5 6. Υπολογισµός παράγοντα τεχνικής πολυπλοκότητας. TCF = 0,6 + 0,01 * 8,5 = 0,685 7. Υπολογισµός αθροίσµατος παραγόντων περιβάλλοντος. Συνολικά Efactor = 14,5 8. Υπολογισµός παράγοντα περιβάλλοντος. ΕCF = 1,4 (0,03 * 14,5) = 0,965 9. Υπολογισµός σταθµισµένων στοιχείων περιπτώσεων χρήσης. ΑUCP = UUCP * TCF * EF = 76 * 0,685 * 0,965 = 50,24 ~ 50 UCP 10. Υπολογισµός συνολικής απαιτούµενης προσπάθειας. Θεωρούµε ότι απαιτούνται 20 ώρες εργασίας ανά AUCP. Εποµένως, η συνολική απαιτούµενη προσπάθεια είναι: Effort = 20 * 50 = 1000 ώρες εργασίας 12

Θέµα 5: Αναδροµική κατάβαση ίνεται η ακόλουθη γραµµατική (S, L, K µη τερµατικά σύµβολα και (, ), ;, a, b, c τερµατικά σύµβολα): S S(L) a L L K;S SK K bl bcs Ερώτηµα 1 Είναι κατάλληλη για υλοποίηση µεταγλωττιστή µε αναδροµική κατάβαση; Αν όχι, ποια προβλήµατα εντοπίζετε; Ερώτηµα 1 απάντηση Η δοθείσα γραµµατική δεν είναι κατάλληλη για υλοποίηση µεταγλωττιστή µε αναδροµική κατάβαση. Τα προβλήµατα που υπάρχουν είναι τα ακόλουθα: Αριστερή αναδροµή στον S Έµµεση αριστερή αναδροµή στον S (µετά από αντικατάσταση L σε S) Κοινό πρόθεµα στον Κ Πρόβληµα Ν-1 στον L Ερώτηµα 2 Να κάνετε τους κατάλληλους µετασχηµατισµούς ώστε να γίνει κατάλληλη για υλοποίηση µεταγλωττιστή µε αναδροµική κατάβαση. Σε κάθε βήµα επεξεργασίας, να αναγράφετε τον αντίστοιχο µετασχηµατισµό. Ερώτηµα 2 απάντηση Αρχική γραµµατική: S S(L) a L L K;S SK K bl bcs Έµµεση αριστερή αναδροµή (αντικατάσταση L σε S): S S(K;S) S(SK) a K;S SK L K;S SK K bl bcs Απαλοιφή αριστερής αναδροµής σε S: S as K;SS S (K;S)S (SK)S KS e L K;S SK K bl bcs Κοινό πρόθεµα σε Κ παραγοντοποίηση: S as K;SS S (K;S)S (SK)S KS e L K;S SK K bk K L cs Πρόβληµα Ν-1 σε S και L αντικατάσταση Κ: S as K;SS S (bk ;S)S (SbK )S bk S e 13

L bk ;S SK K bk K L cs Κοινό πρόθεµα σε S παραγοντοποίηση: S as K;SS S (S bk S e S bk ;S)S SbK )S L bk ;S SK K bk K L cs (Προαιρετικά) Αντικατάσταση σε όλους τους κανόνες των Κ και L και απαλοιφή των δύο κανόνων: S as bk ;SS S (S bk S e S bk ;S)S SbK )S K bk ;S SbK cs Κριτήρια αξιολόγησης ΘΕΜΑ 1 (ΣΥΝΟΛΟ) 50 Ερώτηση 1 20 Ερώτηση 2 10 Ερώτηση 3 20 ΘΕΜΑ 2 (ΣΥΝΟΛΟ) 20 Ερώτηση 1 5 Ερώτηση 2 15 ΘΕΜΑ 3 (ΣΥΝΟΛΟ) 90 Ερώτηση 1 50 Ερώτηση 2 20 Ερώτηση 3 15 Ερώτηση 4 5 ΘΕΜΑ 4 20 ΘΕΜΑ 5 (ΣΥΝΟΛΟ) 20 Ερώτηση 1 5 Ερώτηση 2 15 ΣΥΝΟΛΟ 200 Καλή Επιτυχία! 14