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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Θ.Ε. ΠΛΗ24 ΑΚΑΔ. ΕΤΟΣ ΤΡΙΤΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΕΙΣΑΓΩΓΗ Σας ζητείται να αναπτύξετε λογισμικό ελέγχου για τον Πίνακα Αναχωρήσεων ενός αεροδρομίου ακολουθώντας τη διεργασία ανάπτυξης λογισμικού ICONIX. Η πληροφορία ενημέρωσης των επιβατών που θα διαθέτει ο Πίνακας Αναχωρήσεων αποτυπώνεται ενδεικτικά στην παρακάτω εικόνα. Νο Α1 Α2 Περιγραφή μη λειτουργικής απαίτησης Αποθήκευση προγραμματισμένων αναχωρήσεων Οι προγραμματισμένες αναχωρήσεις (δηλαδή αυτές που ανακοινώνονται στο πρόγραμμα πτήσεων ενός αερομεταφορέα) αποθηκεύονται σε βάση δεδομένων (ΒΔ). Για κάθε πτήση αποθηκεύονται εκείνα τα πεδία που είναι απαραίτητα ώστε να είναι δυνατή η ορθή διαχείριση του Πίνακα Αναχωρήσεων και η λειτουργία του προγράμματος. Περιορισμοί πτήσεων Κάθε πτήση μπορεί να βρίσκεται σε μια από τις ακόλουθες καταστάσεις: OnTime (δηλαδή πρόκειται να αναχωρήσει σύμφωνα με τον προγραμματισμό συνήθως εμφανίζεται με πράσινο χρώμα), Delayed (σημειώνει καθυστέρηση ή αναβολή συνήθως εμφανίζεται με πορτοκαλί χρώμα και αναγράφεται η νέα ώρα αναχώρησης), Cancelled (ακυρώθηκε, δε θα πραγματοποιηθεί οριστικά συνήθως εμφανίζεται με κόκκινο χρώμα), Boarding (οι επιβάτες επιβιβάζονται συνήθως η λέξη αναβοσβήνει), Departed (έχει αναχωρήσει συνήθως εμφανίζεται με λευκό χρώμα). Μισή ώρα πριν την προγραμματισμένη αναχώρηση, μια πτήση μεταβαίνει στην κατάσταση Boarding. Για τις καθυστερημένες πτήσεις, ως χρόνος προγραμματισμένης αναχώρησης θεωρείται ο νέος χρόνος μετά τον υπολογισμό της καθυστέρησης (ο οποίος μπορεί να αλλάξει περισσότερες από μια φορές) και όχι ο αρχικός. Από τη στιγμή που θα βρεθεί σε κατάσταση επιβίβασης, η πτήση επιτρέπεται μόνο να αναχωρήσει ή να ακυρωθεί. Μια καθυστερημένη πτήση δεν 1

2 Α3 Α4 επιστρέφει σε κατάσταση OnTime, αλλά μπορεί να πραγματοποιηθεί (αφού περάσει από κατάσταση επιβίβασης, σύμφωνα με τα ανωτέρω αναφερόμενα) ή να ακυρωθεί (είτε περνώντας από κατάσταση επιβίβασης είτε όχι). Μακροσκοπικά, η πιθανότητα μια πτήση να αναχωρήσει στην ώρα της έχει συγκεκριμένη τιμή (ενδεικτική τιμή 85%), η πιθανότητα καθυστέρησης είναι μικρότερη από 5% (ενδεικτική τιμή 4%) και η πιθανότητα ακύρωσης της πτήσης είναι 1% αν δεν έχει αλλάξει η ώρα αναχώρησης και 3% αν σημειώθηκε καθυστέρηση. Το διάστημα κατά το οποίο αναβάλλεται μια πτήση δε μπορεί να είναι μικρότερο των 30 λεπτών και μεγαλύτερο των 110 λεπτών (εάν στο διάστημα αυτό υπάρχει και άλλη προγραμματισμένη πτήση του ίδιου αερομεταφορέα προς τον ίδιο προορισμό, η πρώτη πτήση ακυρώνεται). Η ακριβής καθυστέρηση θα υπολογίζεται με τυχαίο τρόπο. Το αεροδρόμιο λειτουργεί κατά τις ώρες 05:00 01:00. Θεωρούμε ότι ποτέ δεν είναι δυνατό να αναχωρούν περισσότερες από δύο πτήσεις την ίδια ακριβώς χρονική στιγμή (το αεροδρόμιο διαθέτει μόνο δύο αεροδιαδρόμους). Επίσης, θεωρούμε ότι ανάμεσα σε δύο διαδοχικές αναχωρήσεις πρέπει να παρεμβάλλεται χρόνος τουλάχιστον τριών λεπτών. Συνεπώς από την έναρξη λειτουργίας του αεροδρομίου το πρωί (ώρα 5.00), όλες οι πτήσεις προγραμματίζονται σε χρονικές θυρίδες (time slots) που είναι πολλαπλάσια των 3 λεπτών (π.χ. 5:03, 8:09 κλπ). Δεν είναι φυσιολογικό να καλύπτονται όλες οι διαθέσιμες θυρίδες, καθώς το αεροδρόμιο (αλλά όχι η ζητούμενη εφαρμογή) θα πρέπει να δίνει θυρίδες και στις αφικνούμενες πτήσεις. Κάθε αερομεταφορέας είναι υπεύθυνος για τη διαχείριση των πτήσεών του. Ο Πίνακας Αναχωρήσεων είναι κοινός. Περιορισμοί Πίνακα Αναχωρήσεων Ο Πίνακας Αναχωρήσεων διαθέτει μόνο δέκα γραμμές, στις οποίες προβάλλονται οι λεπτομέρειες των άμεσα προγραμματισμένων πτήσεων σε σχέση με την τρέχουσα χρονική στιγμή, αλλά και οι πτήσεις που έχουν αναχωρήσει κατά την τελευταία ώρα ή ακυρωθεί κατά τις τελευταίες έξι ώρες. Εάν ο αριθμός των πτήσεων που έχουν αναχωρήσει είναι μεγάλος, προβάλλονται το πολύ οι δύο πιο πρόσφατες. Εάν ο αριθμός των ακυρωμένων πτήσεων είναι μεγάλος, προβάλλονται το πολύ οι τρεις πιο πρόσφατα ακυρωμένες, με βάση την τελευταία προγραμματισμένη ώρα αναχώρησης (δηλαδή, μια πτήση μπορεί αρχικά να εμφανίσει καθυστέρηση, οπότε προγραμματίζεται σε μια νέα χρονοθυρίδα, και μετά να ακυρωθεί). Σε κάθε γραμμή του Πίνακα Αναχωρήσεων προβάλλονται πληροφορίες για μια μόνο πτήση και μάλιστα μόνο όσες είναι απαραίτητες (άρα κάποια πεδία μπορεί να είναι κενά). Η κατάσταση μιας πτήσης εμφανίζεται με αντίστοιχη ένδειξη. Στη στήλη Via εμφανίζεται ο ενδιάμεσος σταθμός (αν υπάρχει) και στη στήλη Expected Departure εμφανίζεται η αναμενόμενη ώρα αναχώρησης, αν αυτή έχει αλλάξει. Τέλος, στη στήλη Scheduled Departure εμφανίζεται η αρχικά προγραμματισμένη ώρα αναχώρησης για όλες τις πτήσεις του πίνακα. Καταγραφή αρχείου κατάστασης πτήσεων Για κάθε ημέρα λειτουργίας, δημιουργείται ένα αρχείο, στο οποίο καταγράφεται το ιστορικό κάθε πτήσης, ως εξής: Αρχικά για κάθε πτήση καταγράφεται ο αριθμός της, ο αερομεταφορέας, ο τελικός προορισμός (και ο ενδιάμεσος, αν υπάρχει με τη λέξη via) και η αρχικά προγραμματισμένη ώρα αναχώρησης. Στη συνέχεια, για κάθε μεταβολή, αναγράφεται η λέξη status: και ακολουθεί 2

3 περιγραφή και χρόνος της μεταβολής (δεν καταγράφονται οι καταστάσεις OnTime και Boarding). Παραδείγματα καταγραφών στο αρχείο είναι: status: Departed 13:30, status: Delayed 09:03, status: Cancelled 17:21, Σε μια πτήση μπορεί να καταγραφούν περισσότερες από μια μεταβολές (π.χ. αν αναβληθεί περισσότερες από μία φορές ή αν αρχικά αναβληθεί και μετά ακυρωθεί). Υποδείξεις: 1. Όταν ξεκινά η εφαρμογή θα πρέπει να διαβάζονται αυτόματα όλες οι πληροφορίες των προγραμματισμένων αναχωρήσεων από τη ΒΔ και, για όσες είναι απαραίτητο, να δημιουργούνται τα κατάλληλα αντικείμενα 2. Τα στοιχεία όλων των πτήσεων διατηρούνται σε κατάλληλη δομή δεδομένων, όπου οι πτήσεις είναι ταξινομημένες με σειρά αναχώρησης. Η δομή αυτή είναι κοινή για όλους τους αερομεταφορείς. 3. Η διαχείριση των πτήσεων γίνεται από τους αερομεταφορείς, συνεπώς θα πρέπει να δηιουργήσετε παράλληλα νήματα ελέγχου (threads) ανά αερομεταφορέα. Αν και υπάρχουν περισσότερες από μία λύσεις διαχείρισης των πτήσεων, που πληρούν τις απαιτήσεις του προβλήματος, στη συνέχεια υποδεικνύεται μία τέτοια δυνατότητα. Κάθε thread θα πέφτει σε ύπνωση για 0,5 sec (Thread.sleep(500)), προσομοιώνοντας έτσι μία χρονική θυρίδα τριών λεπτών. Έτσι, σε κάθε thread προσομοιώνεται η παρέλευση του χρόνου από τις 05:00 το πρωί και κάθε φορά που ένα thread γίνεται εκτελέσιμο αποφασίζονται οι νέες κατάστασεις για όλες τις πτήσεις του αερομεταφορέα, που έχουν προγραμματισμένη μεταβολή μέσα στην αντίστοιχη χρονική θυρίδα. Για κάθε αλλαγή που αποφασίζεται, θα ενημερώνονται τα στοιχεία της πτήσης στη δομή δεδομένων με τις πτήσεις σε σειρά αναχώρησης. Ο Πίνακας Αναχωρήσεων θα ενημερώνεται από ένα επιπλέον thread, που επίσης πέφτει σε ύπνωση για 0,5 sec, αλλά όταν επανέρχεται θα γίνονται οι απαραίτητες αλλαγές στα στοιχεία των πτήσεων, που εμφανίζονται σε αυτόν. 4. Προσέξτε τους περιορισμούς στον χρονοπρογραμματισμό των πτήσεων που αναβάλλονται. Χρησιμοποιήστε γεννήτρια τυχαίων αριθμών για την αρχική κατανομή των χρόνων και την κατανομή των καθυστερήσεων. Περίπτωση Χρήσης: Ενημέρωση του Πίνακα Αναχωρήσεων (GUI) Κύριος Χειριστής: Αερομεταφορέας (thread) Σύντομη περιγραφή: Η ΠΧ αφορά την ενημέρωση του Πίνακα Αναχωρήσεων για μία μεταβολή στην κατάσταση πτήσης του Αερομεταφορέα Κύριο Σενάριο (ή Βασική Ροή): 1. Για κάθε αλλαγή κατάστασης σε πτήση, εντοπίζεται η γραμμή του Πίνακα για την πτήση που μεταβάλλεται η κατάστασή της. 2. Αν η κατάσταση μεταβάλλεται σε Boarding, τότε ενημερώνεται η ένδειξη στη στήλη Remarks της γραμμής. Αν η κατάσταση γίνεται Delayed, τότε εκετελείται η Εναλλακτική Ροή 1. Αν η κατάσταση γίνεται Cancelled, τότε εκτελείται η Εναλλακτική Ροή Όταν η κατάσταση μεταβάλλεται σε Departed, εντοπίζονται όλες οι πτήσεις που εμφανίζονται στον Πίνακα με ένδειξη Departed. 3

4 4. Αλλάζει η ένδειξη Remarks της πτήσης σε Departed και σβήνει η ένδειξη Expected Departure (αν υπάρχει). 5. Η ενημερωμένη γραμμή συμπεριλαμβάνεται στο ανανεωμένο σύνολο των πτήσεων του Πίνακα με ένδειξη Departed. 6. Αν υπάρχουν μεταβολές κατάστασης για τις οποίες δεν έχει ενημερωθεί ο πίνακας ο έλεγχος μεταφέρεται στο βήμα Οι προγραμματισμένες πτήσεις του Πίνακα, μαζί με το σύνολο των πτήσεων Departed και το σύνολο των πτήσεων Cancelled επανεμφανίζονται στον Πίνακα, ταξινομημένες ως προς την (προγραμματισμένη) ώρα αναχώρησης. 8. Τέλος Π.Χ. Εναλλακτικές Ροές: 1η Εναλλακτική ροή: Καθυστέρηση πτήσης 1. Η κατάσταση της πτήσης έχει μεταβληθεί σε Delayed. 2. Αλλάζει η ένδειξη Expected Departure της πτήσης, ώστε να απεικονίζει την προγραμματισμένη ώρα αναχώρησης που συμπεριλαμβάνει την καθυστέρηση. 3. Αλλάζει η ένδειξη Remarks της πτήσης σε Delayed. 4. Ο έλεγχος επιστρέφει στο βήμα 6 της βασικής ροής. η 2 Εναλλακτική ροή: Ακύρωση πτήσης 1. Η κατάσταση της πτήσης έχει μεταβληθεί σε Canceled. 2. Eντοπίζονται όλες οι πτήσεις που εμφανίζονται στον Πίνακα με ένδειξη Canceled. 3. Αλλάζει η ένδειξη Remarks της πτήσης σε Canceled. 4. Η ενημερωμένη γραμμή συμπεριλαμβάνεται στο ανανεωμένο σύνολο των πτήσεων του Πίνακα με ένδειξη Canceled. 5. Ο έλεγχος επιστρέφει στο βήμα 6 της βασικής ροής. Προϋποθέσεις: Οι πτήσεις όλων των αερομεταφορέων εμφανίζονται στον Πίνακα Αναχωρήσεων με χρονική σειρά ως προς την ώρα αναχώρησης. Υπάρχει τουλάχιστο μία πτήση με μεταβολή κατάστασης που δεν έχει εμφανιστεί στον Πίνακα Αναχωρήσεων. Κατάσταση εξόδου: Οι πτήσεις όλων των αερομεταφορέων εμφανίζονται στον Πίνακα Αναχωρήσεων με χρονική σειρά ως προς την ώρα αναχώρησης. Όλες οι πτήσεις βρίσκονται στην κατάσταση που τις εμφανίζει ο Πίνακας. Ειδικές απαιτήσεις: Όχι 4

5 Περίπτωση Χρήσης: Αλλαγή Κατάστασης Πτήσης Κύριος Χειριστής: Αερομεταφορέας (thread) Σύντομη περιγραφή: Η ΠΧ αφορά στις μεταβολές κατάστασης μιας πτήσης Κύριο Σενάριο (ή Βασική Ροή): 1. Το σύστημα ανακαλεί την πτήση 2. Γίνεται καταγραφή των στοιχείων της στο αρχείο κατάστασης πτήσεων 3. Ενημερώνεται ο Πίνακας Αναχωρήσεων 4. Αν δεν υπάρχει πρόβλημα, η κατάσταση της πτήσης αλλάζει σε Boarding. Αλλιώς, εάν υπάρχει καθυστέρηση, εκτελείται η Εναλλακτική Ροή 1. Αλλιώς, εάν η πτήση αναβάλλεται, εκτελείται η Εναλλακτική Ροή Αν δεν εμφανιστεί πρόβλημα, η κατάσταση της πτήσης αλλάζει από Boarding σε Departed. Αλλιώς, εάν η πτήση αναβληθεί, τότε εκτελείται η Εναλλακτική Ροή Γίνεται καταγραφή της μεταβολής στο αρχείο κατάστασης πτήσεων. Εναλλακτικές Ροές: 1η Εναλλακτική ροή: Καθυστέρηση πτήσης 1. Η κατάσταση της πτήσης αλλάζει σε Delayed. 2. Το σύστημα επιλέγει το χρονικό διάστημα της καθυστέρησης και η πτήση προγραμματίζεται ξανά 3. Γίνεται καταγραφή της μεταβολής στο αρχείο κατάστασης πτήσεων. 4. Ο έλεγχος επιστρέφει στο βήμα 4 της βασικής ροής 2η Εναλλακτική ροή: Ακύρωση πτήσης 1. Η κατάσταση της πτήσης αλλάζει σε Cancelled. 2. Ο έλεγχος επιστρέφει στο βήμα 7 της βασικής ροής Προϋποθέσεις: Η πτήση βρίσκεται αρχικά σε κατάσταση OnTime. Κατάσταση εξόδου: Οι μεταβολές καταγράφηκαν στο αρχείο κατάστασης πτήσεων. Ειδικές απαιτήσεις: Όχι ΕΡΩΤΗΣΗ 1 5

6 Με βάση τις μη λειτουργικές απαιτήσεις και την περιγραφή των ΠΧ, να σχεδιάσετε το διάγραμμα περιπτώσεων χρήσης του συστήματος, να καταγράψετε τους χειριστές και να συσχετίσετε βήματα των περιγραφών των ΠΧ με την οθόνη διεπαφής (τον Πίνακα Αναχωρήσεων). Προσέξτε να μην υπερβείτε τα όσα αναφέρονται στις απαιτήσεις και τις ΠΧ. ΑΠΑΝΤΗΣΗ 1 1α. To διάγραμμα περιπτώσεων χρήσης του συστήματος Οι αναφερόμενες Π.Χ. και οι μη λειτουργικές απαιτήσεις εισάγουν δύο Π.Χ., δηλαδή αυτή της Αλλαγής Κατάστασης και της Ενημέρωσης του Πίνακα Αναχωρήσεων. Η πρώτη σχετίζεται με τη δεύτερη με τη σχέση «include», αφού κάθε αλλαγή κατάστασης περιλαμβάνει και την ενημέρωση της αντίστοιχης ένδειξης του Πίνακα Αναχωρήσεων. Ως μοναδικός χειριστής αναγνωρίζεται το FlightCompany (Αερομεταφορέας), που ρητά αναφέρεται ότι είναι υπεύθυνος για κάθε αλλαγή κατάστασης σε πτήση του Πίνακα Αναχωρήσεων. 1β. Συσχέτιση των Π.Χ. με την οθόνη διεπαφής Ο χειριστής FlightCompany αλληλεπιδρά με το σύστημα μέσω διεπαφής χρήστη, που του επιτρέπει να αλλάζει κατάσταση στις πτήσεις που αυτός διαχειρίζεται. Παρόλα αυτά, η εκφώνηση της άσκησης δε ζητά την κατασκευή αυτής της διεπαφής και άρα η ζητούμενη συσχέτιση μπορεί να περιοριστεί στη δοθείσα οθόνη διεπαφής, που δείχνει τη μορφή του Πίνακα Αναχωρήσεων και τις πληροφορίες που αυτός απεικονίζει. Στον παρακάτω πίνακα αναφέρονται τα βήματα της Π.Χ. Ενημέρωση του Πίνακα Αναχωρήσεων (βασική ροή) και συσχετίζονται με τις αλλαγές στην οθόνη διεπαφής. Οι συγκεκριμένες αλλαγές είναι μία ενδεικτική προσέγγιση υλοποίησης της Π.Χ. 1. Για κάθε αλλαγή κατάστασης σε πτήση, εντοπίζεται η πτήση που μεταβάλλεται. 2. Εξετάζεται η ενημερωμένη ένδειξη Remarks στα στοιχεία της πτήσης. 3. Καταμετρώνται οι πτήσεις που εμφανίζονται με την ένδειξη Departed (και αυτές με την ένδειξη Cancelled για τη 2η εναλλακτική ροή). 4. Καθαρίζεται ο Πίνακας για να εμφανιστούν οι νέες ενδείξεις. 5. Αν η πτήση έχει μεταβληθεί σε Departed τότε εμφανίζεται στον Πίνακα ενημερωμένη γραμμή με Δεν υπάρχει αλλαγή στην οθόνη διεπαφής. Δεν υπάρχει αλλαγή στην οθόνη διεπαφής. Δεν υπάρχει αλλαγή στην οθόνη διεπαφής. Σβήνουν όλες οι ενδείξεις και ο πίνακας προετοιμάζεται για την εμφάνιση των ενημερωμένων ενδείξεων ταξινομημένων σύμφωνα με τα κριτήρια των μη λειτουργικών απαιτήσεων. Κατά την επανεμφάνιση γραμμής για πτήση, που η κατάστασή της έχει μεταβληθεί, εμφανίζεται γραμμή 6

7 6. τα στοιχεία της. Αν υπάρχουν και άλλες πτήσεις για τις οποίες δεν έχει ενημερωθεί ο Πίνακας η διαδικασία επαναλαμβάνεται. με ενημερωμένα τα στοιχεία της πτήσης. Για κάθε πτήση, αν δεν έχει συμβεί σε αυτή αλλαγή κατάστασης, τότε η γραμμή επανεμφανίζεται στη σωστή σειρά, ενώ αν έχει συμβεί αλλαγή τότε εμφανίζεται νέα γραμμή με ενημερωμένα τα στοιχεία της πτήσης. Η εναλλακτική ροή 1 (καθυστέρηση πτήσης) διαφοροποιείται ως προς τα πεδία της πτήσης που πρέπει να ενημερωθούν (αλλάζει και η ένδειξη Expected Departure). Η εναλλακτική ροή 2 (ακύρωση πτήσης) διαφοροποιείται ως προς το ότι κάποιες άλλες γραμμές πτήσεων που έχουν ακυρωθεί ανάλογα με τη νέα σειρά ταξινόμησης δεν πρόκειται να επανεμφανιστούν. ΕΡΩΤΗΣΗ 2 Με βάση την περιγραφή του συστήματος, να σχεδιάσετε το αρχικό διάγραμμα κλάσεων, το οποίο θα αποτελέσει το μοντέλο του πεδίου εφαρμογής (domain model). Για το σκοπό αυτό, θα χρειαστεί να εντοπίσετε τα αντικείμενα που συνιστούν τις βασικές αφαιρέσεις του πεδίου εφαρμογής. Προσέξτε, το μοντέλο πεδίου εφαρμογής δεν είναι το μοντέλο του υπό ανάπτυξη συστήματος (συνήθως είναι ευρύτερο). ΑΠΑΝΤΗΣΗ 2 Το μοντέλο του πεδίου εφαρμογής προκύπτει από το κείμενο των Π.Χ. και των μη λειτουργικών απαιτήσεων μέσα από μια διαδικασία καταγραφής και επεξεργασίας των ουσιαστικών και των ρημάτων: Τα ουσιαστικά που εντοπίζονται μπορεί να αντιστοιχούν σε κλάσεις ή πεδία κλάσεων. Τα ρήματα ή οι φράσεις που δηλώνουν ενέργεια μπορεί να αντιστοιχούν σε μεθόδους ή συσχετίσεις των οντοτήτων. Οι κτητικές φράσεις συνήθως περιγράφουν ιδιότητες/πεδία των κλάσεων και συσχετίσεις. Εφαρμόζοντας τους προαναφερόμενους κανόνες στην περιγραφή των Π.Χ. και των μη λειτουργικών απαιτήσεων καταλήγουμε στο διάγραμμα κλάσεων του σχήματος, που αποτελεί το μοντέλο του πεδίου εφαρμογής. Χρησιμοποιήθηκαν αγγλικά ονόματα για τις κλάσεις που εντοπίστηκαν στο κείμενο για να διατηρηθεί η συνέπεια ως προς την ονοματολογία τόσο στην αναλυτική σχεδίαση του συστήματος, όσο και στην τελική του υλοποίηση. Για τις συσχετίσεις, που τα ονόματά τους δεν επηρεάζουν την υλοποίηση του συστήματος χρησιμοποιήθηκαν ρήματα στα ελληνικά. 7

8 ΕΡΩΤΗΣΗ 3 Με βάση τις μη λειτουργικές απαιτήσεις να σχεδιάσετε το διάγραμμα καταστάσεων της κλάσης ΠΤΗΣΗ που με ακρίβεια θα περιγράφει όλες τις πιθανές μεταβολές κατάστασης που μπορεί να συμβούν από τη στιγμή που η πτήση εισάγεται στο σύστημα από τη ΒΔ με αρχική κατάσταση OnTime (να αποτυπώσετε με ακρίβεια πάνω στο διάγραμμα καταστάσεων τις συνθήκες που προκαλούν κάθε μεταβολή). ΑΠΑΝΤΗΣΗ 3 Στο διάγραμμα καταστάσεων του σχήματος αποτυπώνονται η αρχική και οι τελικές καταστάσεις που μπορεί να βρεθεί ένα αντικείμενο της κλάσης Flight. Κάθε μεταβολή μπορεί να προκαλείται είτε από ένα γεγονός (π.χ. ανάκληση πτήσης, καθυστέρηση), είτε όταν εκπληρώνεται κάποια συνθήκη (σημειώνεται στο διάγραμμα ανάμεσα σε [ και ]). Το curtime εκφράζει την τρέχουσα ώρα, το fl_scheduled_time εκφράζει την προγραμματισμένη ώρα αναχώρησης και το fl_expected_time εκφράζει την αναμενόμενη ώρα αναχώρησης της πτήσης μετά από μία ή περισσότερες καθυστερήσεις. 8

9 ΕΡΩΤΗΣΗ 4 Με βάση την περιγραφή των περιπτώσεων χρήσης «Ενημέρωση του Πίνακα Αναχωρήσεων» και «Αλλαγή Χρονοδιαγράμματος Πτήσης» να κάνετε ανάλυση ευρωστίας με σκοπό τον εντοπισμό κενών στο μοντέλο του πεδίο εφαρμογής. Το ζητούμενο είναι ένα διάγραμμα ευρωστίας, που με εύληπτο τρόπο θα αναπαριστά τον τρόπο με τον οποίο η στατική δομή (διάγραμμα κλάσεων) υλοποιεί τη δοθείσα περίπτωση χρήσης του συστήματος. Θα χρειαστεί να κατασκευάσετε ένα διάγραμμα ευρωστίας για κάθε βασική και εναλλακτική ροή. ΑΠΑΝΤΗΣΗ 4 Κάθε διάγραμμα ευρωστίας αναπαριστά τα αντικείμενα του συστήματος, που συμμετέχουν στη βασική ή σε μία εναλλακτική ροή της Π.Χ. και τον τρόπο με τον οποίο αυτά αλληλεπιδρούν. Διαπερνούμε το κείμενο που περιγράφει τις Π.Χ., μία ροή τη φορά και σχεδιάζουμε του χειριστές, τις κλάσεις και τις συνδέσεις ανάμεσα στα στοιχεία του διαγράμματος. Οι κλάσεις που επιλέγουμε μπορεί να ανήκουν σε ένα από τα παρακάτω είδη: κλάσεις οντοτήτων συνοριακές κλάσεις, οι οποίες είναι οι φόρμες που αναφέρονται ή υπονοούνται και σε κάποιες περιπτώσεις το αποτέλεσμα της λειτουργίας τους υποκαθίσταται από τα threads, που αναφέρονται στις απαιτήσεις αλλά και στην εκφώνηση των Π.Χ. κλάσεις ελέγχου, οι οποίες υλοποιούν σημεία των περιπτώσεων χρήσης που εκτιμούμε ότι απαιτούν κάποια λογική, επεξεργασία, λήψη απόφασης κλπ. Οι χειριστές μπορεί να επικοινωνούν μόνο με αντικείμενα συνοριακών κλάσεων. Τα συνοριακά αντικείμενα επικοινωνούν μόνο με χειριστές και αντικείμενα ελέγχου. Τα αντικείμενα των κλάσεων οντοτήτων επικοινωνούν μόνο με αντικείμενα ελέγχου, ενώ τα αντικείμενα ελέγχου επικοινωνούν με συνοριακά αντικείμενα, αντικείμενα οντοτήτων και άλλα αντικείμενα ελέγχου, αλλά σε καμία περίπτωση δεν μπορεί να επικοινωνούν με χειριστές. Ελέγχουμε την ορθότητα και πληρότητα ενός διαγράμματος ευρωστίας ως εξής: για κάθε ακολουθία ενεργειών της Π.Χ. πρέπει να μπορούμε διατρέχοντας το διάγραμμα να εντοπίσουμε πάνω στις ακμές του μια διατεταγμένη σειρά από αριθμημένα βέλη, η οποία αντιστοιχίζεται στα βήματα της ακολουθίας. Διάγραμμα ευρωστίας για την Π.Χ.: Ενημέρωση του Πίνακα Αναχωρήσεων (βασική ροή) Ο χειριστής FlightCompany αλληλεπιδρά με το σύστημα μέσω διεπαφής χρήστη (UIFlightCompany), που όμως δε ζητείται από την εκφώνηση η κατασκευή της, αλλά η προσομοίωση της λειτουργίας της από ένα κατάλληλο thread (ThreadFC), που εκφράζεται από ένα αντικείμενο ελέγχου επειδή εμπεριέχει επεξεργασία και λήψη αποφάσεων. Κάθε πτήση ελέγχεται αν αυτή είναι πτήση του Αερομεταφορέα (GetAirline) και αν αυτή πράγματι είναι, τότε μπορεί να γίνει σε αυτή αλλαγή κατάστασης (Make Changes), που έχει ως συνέπεια την ενημέρωση του σχετικού πεδίου της κλάσης οντότητας Flight (SetRemarks). Τα βήματα αυτά εκφράζουν την αλλαγή κατάστασης μιας πτήσης, ενώ η βασική ροή της Π.Χ. αναφέρεται σε κάθε αλλαγή κατάστασης. 9

10 σημείωση α. το getglightinfo δεν αντιστοιχεί σε ένα αλλά σε πολλά μηνύματα που αποστέλλονται σε αντικείμενο της κλάσης Flight για να αντληθούν πληροφορίες για την πτήση β. το setvalueat επαναλαμβάνεται όσες φορές χρειάζεται για την εκτύπωση των στοιχείων της πτήσης στον Πίνακα Ένα άλλο thread (ThreadAT) θα είναι υπεύθυνο για την ενημέρωση του πίνακα (Draw), που καταρχήν περιλαμβάνει την ταξινόμηση των καταχωρήσεων στο αντικείμενο οντότητας AnnounceTable (sort). Στη συνέχεια, για κάθε πτήση ανακτώνται από το αντίστοιχο αντικείμενο οντότητας όλες οι πληροφορίες που χρειάζονται για την απεικόνιση των ενημερωμένων στοιχείων της πτήσης στον Πίνακα Αναχωρήσεων (JTable). Διάγραμμα ευρωστίας για την Π.Χ.: Ενημέρωση του Πίνακα Αναχωρήσεων (εναλλακτική ροή 1) Το διάγραμμα ευρωστίας δε διαφέρει από αυτό της βασικής ροής. Διαφοροποιείται η λογική της λειτουργίας ελέγχου Draw και αυτή εφαρμόζεται για τις περιπτώσεις που η GetRemarks επιστρέφει την τιμή Delayed. Διάγραμμα ευρωστίας για την Π.Χ.: Ενημέρωση του Πίνακα Αναχωρήσεων (εναλλακτική ροή 2) Το διάγραμμα ευρωστίας δε διαφέρει από αυτό της βασικής ροής. Διαφοροποιείται η λογική της λειτουργίας ελέγχου Draw, καθώς αυτή θα πρέπει να αντικατοπτρίζει τις μη λειτουργικές 10

11 απαιτήσεις ως προς την εμφάνιση ή μη εμφάνιση μιας πτήσης Cancelled στον Πίνακα Αναχωρήσεων. Επίσης, η λογική αυτή θα εφαρμόζεται για τις περιπτώσεις που η GetRemarks επιστρέφει την τιμή Cancelled. Διάγραμμα ευρωστίας για την Π.Χ.: Αλλαγή Κατάστασης Πτήσης (βασική ροή) Η πτήση ανακαλείται από τη Β.Δ. μέσω του αντικειμένου ελέγχου DBConnector. Γίνεται καταγραφή των στοιχείων της πτήσης (LogLine) στο αρχείο κατάστασης πτήσεων (LogWriter) και ενημερώνεται ο Πίνακας Αναχωρήσεων (βήματα 4-7). Κάθε αλλαγή κατάστασης είναι συνέπεια της αλληλεπίδρασης του χειριστή FlightCompany με τη διεπαφή UIFlightCompany, που δε ζητείται η υλοποίησή της, αλλά οι συνέπειες της λειτουργίας της προσομοιώνονται από ένα thread (ThreadFC). Το διάγραμμα ευρωστίας για την εναλλακτική ροή 1 (καθυστέρηση πτήσης) δεν περιλαμβάνει καταγραφή της μεταβολής στο αρχείο, όπως στην περίπτωση της βασική ροής, δηλαδή υπάρχει μια διαφορά στο βήμα 17 (γίνεται μεταβολή σε Delayed), ενώ δεν υπάρχουν τα βήματα 18 και 19. Τέλος, το διάγραμμα ευρωστίας για την εναλλακτική ροή 2 (ακύρωση πτήσης) μοιάζει με αυτό του σχήματος με μια διαφορά στο βήμα 17, όπου γίνεται μεταβολή σε Cancelled. Και σε αυτή την περίπτωση έχουμε καταγραφή της μεταβολής στο αρχείο. 11

12 ΕΡΩΤΗΣΗ 5 Να συσχετίσετε με λεπτομέρεια τη δυναμική συμπεριφορά με τη στατική δομή του συστήματος αναπτύσσοντας ένα διάγραμμα ακολουθίας για κάθε ΠΧ. Προσέξτε, κάθε διάγραμμα ακολουθίας πρέπει να είναι συνεπές ως προς την περιγραφή της ΠΧ και των σχετικών με αυτή διαγραμμάτων ευρωστίας. ΑΠΑΝΤΗΣΗ 5 Το επόμενο βήμα σύμφωνα με την ICONIX είναι η επεξεργασία των διαγραμμάτων ακολουθίας. Ακολουθούμε μια επαναληπτική διαδικασία, επανεξετάζοντας λεπτομερώς τον αρχικό σχεδιασμό μέσα από τα σενάρια χρήσης και προσπαθώντας τώρα να περιγράψουμε επακριβώς πώς συνεργάζονται τα αντικείμενα που εντοπίσαμε. Ο στόχος είναι να πραχθεί το πλήρες μοντέλο της στατικής δομής (που ζητείται στο επόμενο ερώτημα) και της δυναμικής συμπεριφοράς του συστήματος με διαγράμματα ακολουθίας. Τα διαγράμματα αυτά πρέπει να δείχνουν με τη μεγαλύτερη δυνατή λεπτομέρεια τον τρόπο με τον οποίο συνεργάζονται τα αντικείμενα που δημιουργούμε από τις κλάσεις του διαγράμματος ευρωστίας, ώστε να υλοποιούνται τα βήματα των περιπτώσεων χρήσης. Παρουσιάζεται τόσο η κύρια ροή όσο και οι εναλλακτικές ροές. Αν η εναλλακτική ροή δημιουργεί πρόβλημα παρουσίασης της κύριας ροής, μπορούμε να έχουμε ξεχωριστό διάγραμμα. Τα διαγράμματα θα πρέπει να βρίσκονται σε πλήρη συμφωνία με τις προδιαγραφές των αντίστοιχων περιπτώσεων χρήσης, για αυτό τον λόγο, στην αριστερή πλευρά του διαγράμματος παραθέτουμε συνοπτικά τα βήματα της αναλυτικής περιγραφής. Βάση της μεθοδολογίας ICONIX, οι κλάσεις ελέγχου στο διάγραμμα ευρωστίας δεν είναι απαραίτητο να αντιστοιχούν πάντα σε κλάσεις της υλοποίησης της εφαρμογής. Ένα αντικείμενο μίας κλάσης ελέγχου, μπορεί να μεταφραστεί ως μία μέθοδος συνεργαζόμενης κλάσης, αν από μόνο του δεν έχει νόημα αυτόνομης ύπαρξης. Στο πρώτο σχήμα απεικονίζεται το διάγραμμα ακολουθίας για τη βασική ροή της Π.Χ. Ενημέρωση Πίνακα Αναχωρήσεων. Το διάγραμμα ακολουθίας για την εναλλακτική ροή 1 διαφέρει μόνο στην τελευταία φάση (alt block), η οποία εφαρμόζεται για πτήση που έχει περιέλθει σε κατάσταση Delayed. Εμφανίζεται η ενημερωμένη γραμμή στον Πίνακα σε κάθε περίπτωση, δηλαδή δεν εξαρτάται από το πόσες πτήσεις έχουν γίνει Delayed). Τέλος, το διάγραμμα ακολουθίας για την εναλλακτική ροή 2 διαφέρει επίσης στην τελευταία φάση (alt block), η οποία εφαρμόζεται για πτήση που έχει περιέλθει σε κατάσταση Cancelled και ανήκει στις τρεις πιο πρόσφατα ακυρωμένες, με βάση την τελευταία προγραμματισμένη ώρα αναχώρησης. Στη συνέχεια δίνεται με ανάλογο τρόπο το διάγραμμα ακολουθίας για τη βασική ροή της Π.Χ. Αλλαγή Κατάστασης Πτήσης, καθώς και τα διαφοροποιημένα σημεία που αφορούν την εναλλακτική ροή 1 (καθυστέρηση πτήσης) και την εναλλακτική ροή 2 (ακύρωση πτήσης). 12

13 Π. Χ.: ΕΝΗΜΕΡΩΣΗ ΠΙΝΑΚΑ ΑΝΑΧΩΡΗΣΕΩΝ (Βασική ροή) Για κάθε αλλαγή κατάστασης σε πτήση, εντοπίζεται η πτήση που μεταβάλλεται. Εξετάζεται η ενημερωμένη ένδειξη Remarks στα στοιχεία της πτήσης. Καταμετρώνται οι πτήσεις που εμφανίζονται με την ένδειξη Departed (και αυτές με την ένδειξη Cancelled για τη 2η εναλλακτική ροή). Καθαρίζεται ο Πίνακας για να εμφανιστούν οι νέες ενδείξεις. Αν η πτήση έχει μεταβληθεί σε Departed τότε εμφανίζεται στον Πίνακα ενημερωμένη γραμμή με τα στοιχεία της. Αν υπάρχουν και άλλες πτήσεις για τις οποίες δεν έχει ενημερωθεί ο Πίνακας η διαδικασία επαναλαμβάνεται. 13

14 14

15 Π. Χ.: ΑΛΛΑΓΗ ΚΑΤΑΣΤΑΣΗΣ 1. Το σύστημα ανακαλεί την πτήση 2. Γίνεται καταγραφή των στοιχείων της στο αρχείο κατάστασης πτήσεων 3. Ενημερώνεται ο Πίνακας Αναχωρήσεων 4. Αν δεν υπάρχει πρόβλημα, η κατάσταση αλλάζει σε Boarding. 5. Αν δεν εμφανιστεί πρόβλημα, η κατάσταση αλλάζει από Boarding σε Departed. 15

16 Εναλλακτική Ροή 1 1. Η κατάσταση της πτήσης αλλάζει σε Delayed. 2. Η πτήση προγραμματίζεται ξανά. 3. Γίνεται καταγραφή της μεταβολής στο αρχείο κατάστασης πτήσεων. Εναλλακτική Ροή 2 1. Η κατάσταση της πτήσης αλλάζει σε Cancelled. 2. Γίνεται καταγραφή της μεταβολής στο αρχείο κατάστασης πτήσεων. 16

17 ΕΡΩΤΗΣΗ 6 Να ενημερώσετε, με βάση όσα προέκυψαν κατά το σχεδιασμό των διαγραμμάτων ευρωστίας και ακολουθίας, το αρχικό διάγραμμα κλάσεων, ώστε στο τέλος να απεικονίζει τη δομή του συστήματος διαχειρισης του Πίνακα Αναχωρήσεων. Οι κλάσεις θα πρέπει να είναι πλήρεις, δηλαδή να περιλαμβάνουν κατηγορήματα και μεθόδους. Προσέξτε να μην αποκλίνετε από τις αρχικές απαιτήσεις. ΑΠΑΝΤΗΣΗ 6 Για την ολοκλήρωση του λεπτομερούς σχεδιασμού χρησιμοποιούμε το μοντέλο του πεδίου προβλήματος (αρχικό διάγραμμα κλάσεων), το διαγράμματα περιπτώσεων χρήσης μαζί με τις περιγραφές τους, τα διαγράμματα ευρωστίας που σχεδιάσαμε για κάθε ροή των Π.Χ. και τα λεπτομερή διαγράμματα ακολουθίας. Επιβεβαιώνουμε ότι για κάθε Π.Χ. η ροή μηνυμάτων στο διάγραμμα ακολουθίας ταιριάζει με την ακολουθία ενεργειών στην περιγραφή της Π.Χ. για τη βασική και όλες τις εναλλακτικές ακολουθίες ενεργειών και αποκρίσεων. Ελέγχουμε την ορθότητα της ροής ελέγχου σε κάθε διάγραμμα ακολουθίας, επαληθεύοντας την ορθότητα της κατεύθυνσης των μηνυμάτων και τη διασφάλιση της συνεχούς λειτουργίας του συστήματος. Πρέπει να είναι εμφανές ποιο αντικείμενο στέλνει και ποιο λαμβάνει κάθε μήνυμα, ενώ δεν πρέπει να υπάρχει μεταφορά ελέγχου εκτέλεσης ανάμεσα σε αντικείμενα χωρίς την ανταλλαγή αντίστοιχου μηνύματος. Θα πρέπει να γίνει αναλυτικός ορισμός των πεδίων των κλάσεων και των μεθόδων των κλάσεων. Ελέγχουμε την καλή κατανομή μεθόδων σε κλάσεις χρησιμοποιώντας τα ακόλουθα κριτήρια: Επαναχρησιμοποιησιμότητα (reusability): όσο πιο γενική είναι μια κλάση, τόσο πιο εύκολα μπορούμε να την επαναχρησιμοποιήσουμε. Εφαρμοσιμότητα (applicability): πρέπει κάθε φορά να εξετάζουμε κατά πόσο μια μέθοδος «ταιριάζει» με την κλάση στην οποία σκεφτόμαστε να την κατανείμουμε. Πολυπλοκότητα (complexity): εξετάζουμε το βαθμό δυσκολίας υλοποίησης μιας μεθόδου μέσα σε μια ή σε άλλη κλάση, προσπαθώντας να μειώσουμε την πολυπλοκότητα της υλοποίησης. Εξετάζουμε εάν η υλοποίηση μια μεθόδου μέσα σε μια κλάση απαιτεί τη γνώση εσωτερικών λεπτομερειών υλοποίησης της κλάσης. Κάνουμε έλεγχο της ποιότητας των κλάσεων, δηλαδή το βαθμό στον οποίο ο σχεδιασμός τους ικανοποιεί τα ακόλουθα κριτήρια: o σύζευξη o συνοχή o επάρκεια o πληρότητα o πρωτογένεια Το διάγραμμα κλάσεων που ακολουθεί δίνει τη λεπτομερή σχεδίαση του συστήματος, όπως αυτή προέκυψε με την εφαρμογή της διαδικασίας που περιγράφηκε. 17

18 18

19 ΕΡΩΤΗΣΗ 7 Με τη χρήση της μεθόδου Use Case Points εκτιμήστε την προσπάθεια που απαιτείται από εσάς για την κατασκευή του συστήματος πριν ξεκινήσετε την ανάπτυξη. Στη συνέχεια να χρονομετρήσετε με όσο το δυνατό μεγαλύτερη ακρίβεια την προσπάθεια που θα καταβάλλετε για την υλοποίηση της εφαρμογής. Μετά το πέρας της υλοποίησης να συγκρίνετε την εκτίμηση με την πραγματική προσπάθεια. Είναι πιθανό να υπάρχει σημαντική απόκλιση. Αυτό όμως δε σημαίνει απαραίτητα ότι έχετε κάνει κάποιο λάθος. Στην περίπτωση αυτή να αιτιολογήσετε αυτή την απόκλιση. Υπόδειξη: Ακολουθείστε το παράδειγμα εφαρμογής της μεθόδου που θα βρείτε στην περίπτωση μελέτης Μισθοδοσία Υπαλλήλων (βλ. στο portal της ΠΛΗ24 στο βοηθητικό υλικό του Τόμου Β). Επίσης μπορείτε να επισκεφθείτε και τις διευθύνσεις για μία εναλλακτική επεξήγηση της μευθόδου. ΑΠΑΝΤΗΣΗ 7 Για να εφαρμόσουμε τη μέθοδο ακολουθούμε τα εξής βήματα (υπάρχει αρκετή υποκειμενικότητα στην απόδοση τιμών και η απάντησή σας μπορεί να είναι αρκετά διαφορετική από την ενδεικτική): 1. Χαρακτηρισμός Χειριστών Αερομεταφορέας: Βάρος Χειριστή UAW1 = 2 (Μέτρια πολυπλοκότητα, είναι λιγότερο πολύπλοκος από ένα GUI, αλλά η υλοποίησή του απαιτεί σκέψη και ανάλυση) Πίνακας Πτήσεων: Βαρος Χειριστή UAW2 = 1 (Απλός, πρόκειται για μία καλά ορισμένη και απλή δομή δεδομένων) 2. Χαρακτηρισμός Π.Χ. Βάρος Π.Χ. Ενημέρωση Πίνακα Αναχωρήσεων UUCW1 = 3 (Σύνθετη Π.Χ., πολλά βήματα, λαμβάνονται υπόψη και τα βήματα των εναλλακτικών ροών) Βάρος Π.Χ. Αλλαγή Κατάστασης Πτήσης UUCW2 = 3 (Σύνθετη Π.Χ., πολλά βήματα, λαμβάνονται υπόψη και τα βήματα των εναλλακτικών ροών) 3.Υπολογισμός συνολικού αριθμού αστάθμητων σημείων ΠΧ UUCP = UAW1 + UAW2 + UUCW1 + UUCW2 = 9 4.Απόδοση Τιμής σε Παράγοντες Τεχνικής Πολυπλοκότητας και σε Παράγοντες Περιβάλλοντος (βλ. άρθρο Clemmons στο Διαδίκτυο). Τεχνικοί παράγοντες Παράγοντας Βάρος Τιμή Τελική Τιμή Σχόλιο 19

20 Κατανεμημένο Σύστημα Απαιτήσεις Απόδοσης Αποδοτικότητα Τελικών Χρηστών Σύνθετη Εσωτερική Επεξεργασία Επαναχρησιμοποιήσιμο ς Κώδικας Ευκολία Εγκατάστασης Ευχρηστία ,5 0, ,5 Ευκολία αλλαγής Ταυτόχρονη λειτουργία Ασφάλεια Πρόσβαση σε τρίτους Εκπαίδευση χρηστών Παράγοντες Περιβάλλοντος Παράγοντας Βάρος Τιμή Τελική Τιμή Οικειότητα με τη UML 1,5 1,5 2,25 Εργασία part time Ικανότητα ανάλυσης 0,5 1 0,5 Εμπειρία Εφαρμογής Εμπειρία στην Αντικειμενοστρέφεια Κίνητρο 0, ,5 0 1, Δυσκολία Γλώσσας Προγραμματισμού Σταθερές Απαιτήσεις πρέπει να υπάρξει μέριμνα για καλή διεπαφή με το Χειριστή Αερομεταφορέα Ανάγκη για ικανοποίηση πολλών περιορισμών υποτίθεται ότι θα πρέπει να υπάρχει μία στοιχειώδης ευχρηστία της εφαρμογής, π.χ. ευκολία ανάγνωσης του πίνακα υποτίθεται ότι ο κώδικάς μας πρέπει ούτως ή άλλως να διευκολύνει μελλοντικές αλλαγές πολλές απαιτήσεις ταυτοχρονισμού δεν υπάρχουν εξωτερικές διεπαφές με άλλα συστήματα Σχόλιο Θεωρώντας ότι έχετε εκπονήσει και τις δύο προηγούμενες γραπτές εργασίες Θεωρώντας ότι ασχολείστε ευκαιριακά με την παρούσα εργασία Υπάρχει κάποια γνώση αλλά όχι επαγγελματική άγνωστη εφαρμογή Υπάρχει κάποια εμπειρία αλλά όχι επαγγελματική μέση τιμή εξαρτάται από τον κάθε προγραμματιστή ξεχωριστά Η Java δεν θεωρείται εύκολη γλώσσα Πλήρως ορισμένες απαιτήσεις. Τυχόν ασάφειες επιλύθηκαν με ερωτήσεις στο φόρουμ και στους ΣΕΠ 5.Υπολογισμός αθροίσματος παραγόντων τεχνικής πολυπλοκότητας Συνολικά Tfactor = 11,5 6.Υπολογισμός παράγοντα τεχνικής πολυπλοκότητας 20

21 TCF = 0,6 + 0,01 * 11,5 = 0,72 7.Υπολογισμός αθροίσματος παραγόντων περιβάλλοντος Συνολικά Efactor = 9,25 8.Υπολογισμός παράγοντα περιβάλλοντος ΕCF = 1,4 (0,03 * 9,25) = 1,12 9.Υπολογισμός σταθμισμένων στοιχείων Π.Χ. ΑUCP = UUCP * TCF * EF = 9 * 11,5 * 1,12 = 7,26 10.Υπολογισμός συνολικής απαιτούμενης προσπάθειας Θεωρούμε ότι απαιτούνται 20 ώρες εργασίας ανά AUCP Effort = 20 * 7,26 = 145,15 ώρες εργασίας Σχολιασμός Η εκπόνηση μίας εργασίας από ένα φοιτητή είναι διαφορετική από την επαγγελματική ανάπτυξη λογισμικού από την οποία προέρχεται η μέθοδος των Use Case Points (π.χ απαιτείται πολύ καλή τεκμηρίωση του κώδικα, συγγραφή εγχειριδίων τεκμηρίωσης και εξονυχιστικός έλεγχος). Επομένως η εκτίμηση με τη μέθοδο δίνει μία υπερεκτίμηση σε σχέση με την προσπάθεια που αφιερώσατε εσείς για την εργασία σας Άλλοι λόγοι που μπορεί να οδηγούν σε αποκλίσεις μπορεί να οφείλονται: - Στην υποκειμενικότητα στην απόδοση τιμών Στο περιθώριο λάθους που εμπεριέχει η μέθοδος Στο γεγονός ότι μέρος της ανάλυσης (π.χ. διαγράμματα) έχει γίνει πριν από την εφαρμογή της μεθόδου 21

22 ΕΡΩΤΗΣΗ 8 Να δημιουργήσετε τη ΒΔ των πτήσεων για μια συγκεκριμένη ημέρα λειτουργίας του αεροδρομίου (φροντίστε ώστε ο συνολικός αριθμός των πτήσεων να είναι το πολύ 50). Παραθέστε το σχήμα της βάσης και τον κώδικα με τον οποίο τη διαχειρίζεται η εφαρμογή. ΑΠΑΝΤΗΣΗ 8 Η βάση δεδομένων δημιουρθήκε με την Derby μέσα από το Netbeans. Το σχήμα φαίνεται στην παρακάτω εικόνα. 22

23 Οι πτήσεις καταχωρούνται στον πίνακα FLIGHT. Για την καλύτερη οργάνωση δημιουργήθηκε και ο πίνακας COMPANY που κρατά τις αεροπορικές εταιρείες. Αρχικά εισάγουμε στον πίνακα COMPANY τις αεροπορικές εταιρείες με τις παρακάτω εντολές SQL: INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO COMPANY COMPANY COMPANY COMPANY COMPANY COMPANY COMPANY VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('Olympic Airlines') ('Aegean Airlines') ('Baboo') ('British Airways') ('Delta Airlines') ('Athens Airways') ('Cyprus Airways') Στην παρακάτω οθόνη φαίνεται το αποτέλεσμα: 23

24 Στη συνέχεια εισάγουμε τις πτήσεις στον πίνακα FLIGHT με τις παρακάτω εντολές SQL: VALUES ('Larnaca','Cyprus Airways','CY 322','05:45:00',NULL) VALUES ('London','Cyprus Airways','CY 324','05:48:00',NULL) VALUES ('Geneva','Baboo','BBO 294','05:51:00','Nice') VALUES ('Milos','Olympic Airlines','OA 048','06:00:00',NULL) VALUES ('London','British Airways','BA 031','06:12:00',NULL) VALUES ('Milos','Olympic Airlines','OA 049','07:00:00',NULL) VALUES ('New York','Delta Airlines','DL 001','07:15:00','London') VALUES ('Boston','Delta Airlines','DL 002','07:21:00',NULL) VALUES ('Kerkyra','Athens Airways','ZF 130','07:24:00',NULL) VALUES ('Ioannina','Athens Airways','ZF 132','07:27:00',NULL) VALUES ('Milos','Aegean Airlines','A3 049','07:30:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 149','08:00:00',NULL) VALUES ('Rodos','Olympic Airlines','OA 250','08:09:00',NULL) VALUES ('Rodos','Aegean Airlines','A3 250','08:15:00',NULL) VALUES ('Heraklio','Aegean Airlines','A3 149','08:30:00',NULL) VALUES ('Thessaloniki','Olympic Airlines','OA 300','09:21:00',NULL) VALUES ('Thessaloniki','Aegean Airlines','A3 300','09:42:00',NULL) VALUES ('London','British Airways','BA 032','10:00:00',NULL) VALUES ('Larnaca','Cyprus Airways','CY 334','10:09:00',NULL) VALUES ('Rodos','Olympic Airlines','OA 251','11:30:00',NULL) VALUES ('Rodos','Aegean Airlines','A3 251','11:54:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 150','12:00:00',NULL) 24

25 VALUES ('Heraklio','Aegean Airlines','A3 150','12:12:00',NULL) VALUES ('Paris','British Airways','BA 033','13:09:00',NULL) VALUES ('Larnaca','Cyprus Airways','CY 336','13:15:00',NULL) VALUES ('Ioannina','Athens Airways','ZF 134','14:00:00',NULL) VALUES ('Alexandroupoli','Athens Airways','ZF 136','14:03:00',NULL) VALUES ('Kavala','Athens Airways','ZF 138','14:06:00',NULL) VALUES ('Amsterdam','British Airways','BA 034','14:15:00',NULL) VALUES ('Thessaloniki','Olympic Airlines','OA 301','16:42:00',NULL) VALUES ('Thessaloniki','Aegean Airlines','A3 301','16:57:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 151','17:00:00',NULL) VALUES ('Heraklio','Aegean Airlines','A3 151','17:30:00',NULL) VALUES ('Geneva','Baboo','BBO 494','17:51:00','Nice') VALUES ('London','British Airways','BA 134','18:03:00','Paris') VALUES ('Berlin','Olympic Airlines','OA 1006','18:30:00',NULL) VALUES ('Milos','Olympic Airlines','OA 349','19:00:00',NULL) VALUES ('Rome','Olympic Airlines','OA 1004','19:03:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 449','20:00:00',NULL) VALUES ('Larnaca','Cyprus Airways','CY 354','20:03:00',NULL) VALUES ('London','Cyprus Airways','CY 454','20:06:00',NULL) VALUES ('Rodos','Olympic Airlines','OA 350','20:09:00',NULL) VALUES ('Liverpool','British Airways','BA 035','21:00:00',NULL) VALUES ('Kavala','Athens Airways','ZF 140','21:03:00',NULL) VALUES ('Thessaloniki','Olympic Airlines','OA 400','21:21:00',NULL) 25

26 VALUES ('Rodos','Olympic Airlines','OA 351','21:30:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 550','22:00:00',NULL) VALUES ('New York','Delta Airlines','DL 003','22:03:00',NULL) VALUES ('Thessaloniki','Olympic Airlines','OA 401','23:42:00',NULL) VALUES ('Heraklio','Olympic Airlines','OA 451','23:45:00',NULL) Στην παρακάτω οθόνη φαίνεται το αποτέλεσμα: 26

27 Για τη διαχείριση της βάσης δεδομένων δημιουργήθηκε η κλάση DBConnector, ο κώδικας της οποίας φαίνεται παρακάτω: package airpr; import import import import java.sql.*; java.util.*; javax.swing.jtable; javax.swing.jtextfield; /* * To change this template, choose Tools Templates * and open the template in the editor. */ /** * UKXD */ public class DBConnector { final private String database = "AIRDB"; final private String user = "plh24"; final private String password = "plh24"; final private String driver = "org.apache.derby.jdbc.clientdriver"; final private String connstring = "jdbc:derby://localhost:1527/"; private Connection connection; private Statement statement; private AnnounceTable board; private LogWriter lw; public DBConnector() { try { // load database driver class Class.forName(driver); // connect to database connection = DriverManager.getConnection(connString + database, user, password); catch (Exception ex) { System.out.println("Exception: " + ex); public void closefile() { lw.outfile.close(); public void loaddb(jtable jt, JTextField jtf) { try { lw = new LogWriter(); 27

28 ResultSet rscom = connection.createstatement().executequery("select * FROM COMPANY"); ResultSet rs = connection.createstatement().executequery("select DEPARTURES,AIRLINE,FLIGHT,SCHED_TIME,VIA FROM FLIGHT"); ArrayList AllFlights = new ArrayList(); while (rs.next()) //DEPARTURES,AIRLINE,FLIGHT,SCHED_TIME,VIA AllFlights.add(new Flight(rs.getString(1), rs.getstring(2), rs.getstring(3), rs.gettime(4), rs.getstring(5))); board = new AnnounceTable(jt,jtf,AllFlights); while (rscom.next()) new FlightCompany(rscom.getString(1),AllFlights,board,lw); catch (SQLException ex) { System.out.println("Exception: " + ex); Η μέθοδος loaddb: α) διαβάζει τα δεδομένα των προγραμματισμέων πτήσεων από τον πίνακα FLIGHT και για κάθε εγγραφή του πίνακα (δηλαδή για κάθε πτήση) δημιουργεί ένα αντικείμενο της κλάσης Flight το οποίο το προσθέτει στη λίστα AllFlights που είναι τύπου ArrayList, β) διαβάζει τα δεδομένα των αεροπορικών εταιρειών από τον πίνακα COMPANY και για κάθε εγγραφή του πίνακα (δηλαδή για κάθε αεροπορική εταιρεία) δημιουργεί ένα αντικείμενο της κλάσης FlightCompany, γ) δημιουργεί το αντικείμενο board του πίνακα ανακοινώσεων (κλάση AnnounceTable) και δημιουργεί το αντικείμενο lw του καταγραφέα των αλλαγών κατάστασης των πτήσεων (κλάση LogWriter). Το αντικείμενο AllFlights περνά σαν πληροφορία στο αντικείμενο του πίνακα ανακοινώσεων. Τα αντικείμενα board και lw περνούν σαν πληροφορία στα αντικείμενα των αεροπορικών εταιρειών. Με την κλάση DBConnector υλοποιείται η μη λειτουργική απαίτηση Α1. ΕΡΩΤΗΣΗ 9 Να δημιουργήσετε και να ενημερώνετε τον Πίνακα Αναχωρήσεων του αεροδρομίου, σύμφωνα με τις περιπτώσεις χρήσης και τις μη λειτουργικές απαιτήσεις. Παραθέστε τον κώδικα με τον οποίο η εφαρμογή διαχειρίζεται τον πίνακα (ως γραφική διεπαφή) και την αντίστοιχη δομή δεδομένων. Παραθέστε πέντε στιγμιότυπα του πίνακα κατά τη διάρκεια εκτέλεσης της εφαρμογής (βλ. πιο κάτω) ΑΠΑΝΤΗΣΗ 9 Για τη δημιουργία της εφαρμογής επιλέχθηκε η δυνατότητα του Netbeans για τη δημιουργία desktop applications (βλέπε παρακάτω οθόνη). 28

29 Στην οθόνη που δημιούργησε το Netbeans προστέθηκε το αντικείμενο jtable1 τύπου JTable για τον πίνακα ανακοινώσεων και τα αντικείμενα jlabel1 τύπου JLabel και jtexfield1 τύπου JTextField για την προβολή της τρέχουσας ώρας. Το όνομα της σχετικής κλάσης είναι AirPrView και παραθέτουμε μόνο το τμήμα του κώδικα που εισαγάγαμε. public class AirPrView extends FrameView { public JTable jt; public JTextField jtf; public DBConnector db = new DBConnector();... Για την καλύτερη κατανόηση του κώδικα της κλάσης AirPrView παραθέτουμε τον κώδικα της βασικής κλάσης (main), χωρίς τα σχόλια. package airpr; import org.jdesktop.application.application; 29

30 import org.jdesktop.application.singleframeapplication; public class AirPrApp extends SingleFrameApplication { static public DBConnector db = new DBConnector(); static AirPrView protected void startup() { a=new AirPrView(this); show(a); db.loaddb(a.jt, protected void configurewindow(java.awt.window root) { public static AirPrApp getapplication() { return Application.getInstance(AirPrApp.class); public static void main(string[] args) { launch(airprapp.class, args); Στη μέθοδο startup δημιουργούμε ένα αντικείμενο για την οθόνη της εφαρμογής, καλούμε τη μέθοδο show για την εμφάνιση της οθόνης και στη συνέχεια έχοντας δημιουργήσει το αντικείμενο db τύπου DBConnector στον κώδικα της κλάσης της οθόνης, καλούμε τη μέθοδο loaddb της κλάσης DBConnector, η οποία και ουσιαστικά ενεργοποιεί την εκτέλεση της εφαρμογής. Με αυτό τον τρόπο επιτυγχάνουμε την εκτέλεση της εφαρμογής χωρίς την παρέμβαση του χρήστη. Σε αντίθετη περίπτωση θα έπρεπε να προστεθεί κάποιο πλήκτρο εκκίνησης στο μενού της οθόνης της εφαρμογής. Τρεις από τις βασικές κλάσεις της εφαρμογής είναι ο πίνακας ανακοινώσεων AnnounceTable, η αεροπορικής εταιρεία FlightCompany και η πτήση Flight. Παραθέτουμε τον κώδικα των σχετικών κλάσεων: package airpr; import java.sql.time; import javax.swing.jtable; import javax.swing.jtextfield; import java.util.*; import java.util.arraylist; //import java.io.*; /** * user */ class FlightComparator implements Comparator{ public int compare(object fl1, Object fl2){ //parameter are of type Object, so we have to downcast it to Employee objects String flighttime1 = ( (Flight) fl1).getscheduledtime().tostring(); String flighttime2 = ( (Flight) fl2).getscheduledtime().tostring(); if (! ((Flight)fl1).GetExpectedtime().equals(new Time(0,0,0)) ) flighttime1 = ( (Flight) fl1).getexpectedtime().tostring(); if (!( (Flight)fl2).GetExpectedtime().equals(new Time(0,0,0))) flighttime2 = ( (Flight) fl2).getexpectedtime().tostring(); return ( flighttime1.compareto(flighttime2)); 30

31 public class AnnounceTable implements Runnable{ private JTable jt; private JTextField jtf; private ArrayList lf; public Time curtime; static static static static final final final final int SLEEPDELAY=500; int ROWCOUNT=10; int COLUMNCOUNT=7; Time endtime = new Time(24,0,0); private void cleartable(){ int i,j; for(i=0;i<rowcount;i++) for(j=0;j<columncount;j++) jt.setvalueat((string)"", i, j); public AnnounceTable(JTable jt, JTextField jtf, ArrayList lf) { this.jt=jt; this.jtf=jtf; this.lf=lf; this.curtime=new Time(5,0,0); new Thread(this).start(); public void run() { while (true){ try { Draw(); Thread.sleep(SLEEPDELAY); curtime.setminutes(curtime.getminutes()+3); jtf.settext(curtime.tostring()); if (curtime.equals(endtime)) { break; catch (InterruptedException e) { System.err.println("interrupted"); public static int DiffInMinutes(Time a, Time b) { int ha=a.gethours(); int hb=b.gethours(); int ma=a.getminutes(); int mb=b.getminutes(); int diff=60*(hb-ha-1)+(60-ma)+mb; return(diff); public void Draw (){ int cancelledno=0; int departedno=0; int notdispcancelledno=0; int notdispdepartedno=0; int displayscheduledno=0; Collections.sort(lf, new FlightComparator()); int row=-1; Iterator itr2 = lf.iterator(); Time boardtime=new Time(0,0,0); while (itr2.hasnext()){ Flight f=(flight)itr2.next(); if (!f.getexpectedtime().equals(new Time(0,0,0))) 31

32 boardtime=f.getexpectedtime(); else boardtime=f.getscheduledtime(); if ((f.getremarks().equals("cancelled")) && (DiffInMinutes(boardtime,curtime)<=180)) cancelledno++; else if ((f.getremarks().equals("departed")) && (DiffInMinutes(boardtime,curtime)<=60)) departedno++; if (cancelledno>3) notdispcancelledno=cancelledno-3; if (departedno>2) notdispdepartedno=departedno-2; displayscheduledno=10-(cancelledno-notdispcancelledno)-(departedno-notdispdepartedno); cleartable(); Iterator itr = lf.iterator(); boolean gotonext; while (itr.hasnext()){ gotonext=true; Flight f=(flight)itr.next(); if (!f.getexpectedtime().equals(new Time(0,0,0))) boardtime=f.getexpectedtime(); else boardtime=f.getscheduledtime(); if ((f.getremarks().equals("cancelled")) && (DiffInMinutes(boardtime,curtime)<=180)) { if (notdispcancelledno>0) notdispcancelledno--; else gotonext=false; else if ((f.getremarks().equals("departed")) && (DiffInMinutes(boardtime,curtime)<=60)) { if (notdispdepartedno>0) notdispdepartedno--; else gotonext=false; else if ((boardtime.compareto(curtime)>=0)) { if (displayscheduledno>0) { displayscheduledno--; gotonext=false; if (!gotonext) { row++; if (row>rowcount-1) break; jt.setvalueat(f.getdepartures(), row, 0); jt.setvalueat(f.getairline(), row, 1); jt.setvalueat(f.getflightno(), row, 2); jt.setvalueat(f.getvia(), row, 3); jt.setvalueat("", row, 4); if (!f.getexpectedtime().equals(new Time(0,0,0))) jt.setvalueat(f.getexpectedtime().tostring(), row, 4); jt.setvalueat(f.getscheduledtime().tostring(), row, 5); jt.setvalueat(f.getremarks(), row, 6); 32

33 Η κλάση AnnounceTable υλοποιεί το interface Runnable, με την υλοποίηση της μεθόδου run. Συγκεκριμένα, κατά τη δημιουργία ενός αντικειμένου τύπου AnnounceTable (στην περίπτωση της εφαρμογής αυτό το αντικείμενο είναι μόνο ένα) δημιουργείται εάν thread με την εντολή new Thread(this).start(). Με το που δημιουργείται το thread εκτελείται ο κώδικας της μεθόδου run. Η συνθήκη τερματισμού της μεθόδου run και άρα και του thread είναι η τρέχουσα ώρα (υλοποιείται με το δεδομένο curtime, το οποίο αρχικοποιείται στην ώρα 5:00) να γίνει ίση με την ώρα τερματισμού (υλοποιείται με το στατικό δεδομένο endtime). Αρχικά το thread καλεί τη μέθοδο Draw (προβάλλει τα δεδομένα του πίνακα ανακοινώσεων), και στη συνέχεια περιμένει ένα «κβάντο» χρόνου. Με την αφύπνηση του thread αλλάζει η τρέχουσα ώρα κατά 3 sec. Η μέθοδος Draw χρησιμοποιεί τη λίστα των πτήσεων lf για την ανάγνωση των δεδομένων των πτήσεων και εμφανίζει στην οθόνη τις πτήσεις που πληρούν τη μη λειτουργική απαίτηση Α3. Για την ταξινόμηση των πτήσεων στη λίστα lf χρησιμοποιείται η κλάση FlightComparator που υλοποιεί το interface Comparator. Συγκεκριμένα υλοποιεί τη μέθοδο compare στην οποία καταγράφεται ο τρόπος ταξινόμησης των αντικειμένων στη λίστα στην οποία θα χρησιμοποιηθεί. Η ταξινόμηση γίνεται με την εντολή Collections.sort(lf, new FlightComparator()). package airpr; import java.util.*; import java.sql.time; /** * UKXD */ public class FlightCompany implements Runnable{ private String name; private ArrayList allflights; private AnnounceTable board; private LogWriter lw; public void FlightUpd(Flight f, String newstate){ f.setremarks(newstate); lw.logline(f.getairline()+" "+f.getflightno()+" "+f.getdepartures()+" "+f.getvia()+" "+f.getscheduledtime()); lw.logline(" status: "+newstate+" "+board.curtime.tostring()); public boolean FindOtherFlight(Flight f) { Iterator itr = allflights.iterator(); while (itr.hasnext()){ Flight fi=(flight)itr.next(); String flname=fi.getairline(); if ( (flname.equals(name)) && (f.getdepartures().equals(fi.getdepartures())) && (!f.getflightno().equals(fi.getflightno())) && ( ((fi.getremarks().equals("")) (fi.getscheduledtime().compareto(f.getexpectedtime())<=0 )) ((fi.getremarks().equals("delayed")) (fi.getexpectedtime().compareto(f.getexpectedtime())<=0 )) ) ) { return(true); return (false); && && 33

34 public int MakeChanges(Flight f) { double i,j; int delay; Time boardtime=new Time(0,0,0); Random generator = new Random(); boolean isdelayed=false; if (!f.getexpectedtime().equals(new Time(0,0,0))) { boardtime=f.getexpectedtime(); isdelayed=true; else boardtime=f.getscheduledtime(); //εάν έχει ακυρωθεί ή αναχωρήσει δεν γίνεται καμία αλλαγή if ((f.getremarks().equals((string)"cancelled")) (f.getremarks().equals((string)"departed"))) return(0); if ((boardtime.compareto(board.curtime)<=0)) { //εάν έχει περάσει η χσ αναχώρησης, τότε πάντα είναι departed FlightUpd(f,"Departed"); return(1); i=generator.nextdouble(); if (((!isdelayed) && (i>0.99)) ((isdelayed) && (i>0.97))) //0.95, 0.90 //cancel FlightUpd(f,"Cancelled"); else if ((i>0.96) && (!f.getremarks().equals((string)"boarding"))) { //new time 0.8 // FlightUpd(f,"Delayed"); j=generator.nextdouble(); //from 30 min to 6 hours are 330 minutes delay=30+3*(int)math.round(j*330)/6; if (!isdelayed) f.setexpectedtime(new Time(f.GetScheduledtime().getHours(),f.GetScheduledtime().getMinutes(),0)); if ( (delay+ board.diffinminutes(f.getexpectedtime(),f.getscheduledtime()) ) >180) { FlightUpd(f,"Cancelled"); return(1); if (FindOtherFlight(f)) { FlightUpd(f,"Cancelled"); return(1); f.getexpectedtime().setminutes(boardtime.getminutes()+delay); if ( board.diffinminutes(board.curtime,boardtime)<=30 ) FlightUpd(f,"Boarding"); return(1); public FlightCompany(String name, ArrayList allflights, AnnounceTable board, LogWriter lw) { this.name = name; this.allflights=allflights; this.board=board; this.lw = lw; new Thread(this).start(); public String GetName(){ return name; public void run() { 34

35 while (true){ try { Thread.sleep(board.SLEEPDELAY); Iterator itr = allflights.iterator(); while (itr.hasnext()){ Flight f=(flight)itr.next(); String flname=f.getairline(); if (flname.equals(name)) { MakeChanges(f); if (board.curtime.equals(board.endtime)) { lw.outfile.close(); break; catch (InterruptedException e) { System.err.println("interrupted"); Η κλάση FlightCompany υλοποιεί το interface Runnable, με την υλοποίηση της μεθόδου run. Συγκεκριμένα, κατά τη δημιουργία ενός αντικειμένου τύπου FlightCompany (στην περίπτωση της εφαρμογής θα δημιουργηθούν από την DBConnector τόσα αντικείμενα όσες είναι και οι αεροπορικές εταιρείες) δημιουργείται εάν thread με την εντολή new Thread(this).start(). Με το που δημιουργείται το thread εκτελείται ο κώδικας της μεθόδου run. Η συνθήκη τερματισμού της μεθόδου run και άρα και του thread είναι η τρέχουσα ώρα (λαμβάνεται μέσω του αντικειμένου board) να γίνει ίση με την ώρα τερματισμού (λαμβάνεται μέσω του αντικειμένου board). Το κάθε thread, χρησιμοποιώντας ένα iterator στη λίστα allflights σαρώνει όλες τις πτήσεις και εάν μία πτήση ανήκει στην αεροπορική εταιρεία του τρέχοντος αντικειμένου, καλεί τη μέθοδο MakeChanges, η οποία υλοποιεί τη μη λειτουργική απαίτηση Α2. package airpr; import java.sql.time; /** * UKXD */ public class Flight { private String fl_departures; private String fl_airline; private String fl_flightno; private String fl_via; private Time fl_expected_time; private Time fl_scheduled_time; private String fl_remarks; //DEPARTURES,AIRLINE,FLIGHT,SCHED_TIME,VIA public Flight(String departure, String airline, String flightno, Time scheduled_time, String via) { this.fl_departures = departure; this.fl_airline = airline; this.fl_flightno = flightno; this.fl_via = via; this.fl_expected_time = new Time(0,0,0); this.fl_scheduled_time = scheduled_time; this.fl_remarks = ""; 35

36 public String GetDepartures(){ return fl_departures; public String GetAirline(){ return fl_airline; public String GetFlightno(){ return fl_flightno; public String GetVia(){ return fl_via; public Time GetExpectedtime(){ return fl_expected_time; public void SetExpectedtime(Time expectedtime){ fl_expected_time=expectedtime; public Time GetScheduledtime(){ return fl_scheduled_time; public void SetScheduledtime(Time scheduledtime){ fl_scheduled_time=scheduledtime; public String GetRemarks(){ return fl_remarks; public void SetRemarks(String remarks){ fl_remarks=remarks; Στις παρακάτω οθόνες φαίνονται 5 στιγμιότυπα του πίνακα κατά τη διάρκεια εκτέλεσης της εφαρμογής: 36

37 37

38 38

39 ΕΡΩΤΗΣΗ 10 Να δημιουργήσετε και να ενημερώνετε το αρχείο μεταβολών των πτήσεων. Παραθέστε τον κώδικα με τον οποίο η εφαρμογή διαχειρίζεται το αρχείο και τα περιεχόμενα του αρχείου στο τέλος εκτέλεσης της εφαρμογής (βλ. πιο κάτω) ΑΠΑΝΤΗΣΗ 10 Το ερώτημα αναφέρεται στη μη λειτουργική απαίτηση Α4 και υλοποιείται με την κλάση LogWriter και τον κώδικα που έχει χρώμα κόκκινο (βλέπε προηγούμενες κλάσεις). Ο κώδικας της κλάσης LogWriter φαίνεται παρακάτω: package airpr; import java.io.*; /** * ukxd */ public class LogWriter { public PrintWriter outfile = null; public LogWriter () { try { File f; f=new File("airlog.txt"); if(!f.exists()) f.createnewfile(); outfile = new PrintWriter(new BufferedWriter(new FileWriter("airlog.txt"))); catch (IOException ex) { System.err.println("IO error"); public void LogLine(String msg){ 39

40 outfile.println(msg); Το αποτέλεσμα της καταγράφεται στο αρχείο airlog.txt. Η μέθοδος LogLine χρησιμοποείται για την προσθήκη μιας γραμμής στο αρχείο. ΕΡΩΤΗΣΗ 11 Να υλοποιήσετε την εφαρμογή που αντιστοιχεί στα διαγράμματα κλάσεων και ακολουθίας που σχεδιάσατε. Να τεκμηριώσετε γιατί η δομή του κώδικα του συστήματος αντιστοιχεί στα διαγράμματα κλάσεων και πώς ο κώδικας υλοποιεί τις σχέσεις ανάμεσα στις κλάσεις και τις συμπεριφορές (γεγονότα αποκρίσεις) που περιγράφουν τα διαγράμματα ακολουθίας ΑΠΑΝΤΗΣΗ 11 ΕΡΩΤΗΣΗ 12 Να εκτελέσετε την εφαρμογή για μια ημέρα λειτουργίας του αεροδρομίου. ΑΠΑΝΤΗΣΗ 12 Το αποτέλεσμα της εκτέλεσης για μια ημέρα λειτουργίας του αεροδρομίου είναι ο πίνακας αναχωρήσεων που φαίνεται στην παρακάτω οθόνη: και το αρχείο airlog.txt. 40

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

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

Διαβάστε περισσότερα

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

Ηλεκτρονικό Κατάστημα

Ηλεκτρονικό Κατάστημα ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Παραδείγματα -UML Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2011-2012 1 Ηλεκτρονικό Κατάστημα Το αντικείμενο είναι η

Διαβάστε περισσότερα

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται

Διαβάστε περισσότερα

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

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

Διαβάστε περισσότερα

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

Μοντελοποίηση Συστημάτων Εργασία για το μάθημα Μοντελοποίηση Συστημάτων 29 Οκτωβρίου 204 Α. Στόχος Στην εργασία αυτή θα εξοικειωθείτε με τα πρώτα στάδια σχεδιασμού λογισμικού. Συγκεκριμένα, μετά την εκπόνηση της εργασίας θα πρέπει

Διαβάστε περισσότερα

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 MySQL + Γλώσσα Προγραμματισμού Ευαγγελία Πιτουρά 1 Database drivers Για να χρησιμοποιήσουμε μια βάση δεδομένων από μια γλώσσα προγραμματισμού χρειαζόμαστε έναν driver. JDBC είναι το API για τη Java και

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

4 Συλλογές Αντικειμένων

4 Συλλογές Αντικειμένων 4 Συλλογές Αντικειμένων Πώς χειριζόμαστε αντικείμενα σε ομάδες με επανάληψη Η Απαίτηση Συλλογών Αντικειμένων Πολλές εφαρμογές χρειάζονται πλήθος αντικειμένων: Κατάλογος βιβλίων Φοιτητολόγιο Πελατολόγιο

Διαβάστε περισσότερα

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης: Αντικειμενοστρεφής Προγραμματισμός Τμήμα Εφαρμοσμένης Πληροφορικής Δημιουργία Κλάσεων/Αντικειμένων/Συσχετίσεων/Συνδέσεων Δημιουργία κλάσεων και αντικειμένων Θεωρούμε ένα υποθετικό σύστημα που αναφέρεται

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ TΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Χειμερινό Εξάμηνο (6ο) Διδάσκων: Κων/νος Στεργίου 6/4/2014 Σύστημα Κράτησης Αεροπορικών Θέσεων Εργασία

Διαβάστε περισσότερα

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Οδηγίες Χρήσης της MySQL Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Νοέμβριος 2007 1 Περιεχόμενα Εισαγωγή...2

Διαβάστε περισσότερα

Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX

Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX Αλέξανδρος Ν. Χατζηγεωργίου Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX Διαχείριση Παραγγελιών ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Θεματική Ενότητα ΠΛΗ 24 2008

Διαβάστε περισσότερα

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

Διαβάστε περισσότερα

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω ΤΙΤΛΟΣ ΕΓΓΡΑΦΟΥ ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω Έκδοση 1.0 12 Ιανουαρίου 2009 ΑΡΙΘΜΟΣ ΣΥΜΒΑΣΗΣ : 25978/04.08.2008 ΕΠΙΣΗΜΗ ΟΝΟΜΑΣΙΑ ΕΡΓΟΥ : Προσαρμογή, Ανάπτυξη, Έλεγχος και Εγκατάσταση

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 3: JAVA: ΕΞΑΙΡΕΣΕΙΣ, ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ, ΝΗΜΑΤΑ Νήματα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΝΗΜΑΤΑ

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Αλληλεπίδραση Αντικειμένων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 12 Ροές και είσοδος/έξοδος αρχείων Τα δεδομένα εισόδου

Διαβάστε περισσότερα

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

Σενάριο Χρήσης myschool

Σενάριο Χρήσης myschool Σενάριο Χρήσης ΦΟΡΕΙΣ Επιβεβαίωση των Στοιχείων του Φορέα Αρχικά, θα κληθείτε να ελέγξετε την ορθότητα των στοιχείων του Φορέα σας. Επιλέγοντας την καρτέλα «Φορείς», από το μενού που βρίσκεται στο πάνω

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

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

Διαβάστε περισσότερα

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Διαχείριση Πάγιου Ενεργητικού

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

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

Διαβάστε περισσότερα

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΤΕΛΑ ΣΥΣΤΗΜΑΤΟΣ Διδάσκων: Γ. Χαραλαμπίδης, Επ. Καθηγητής

Διαβάστε περισσότερα

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ C Προγραμματιστικές Ασκήσεις, Φυλλάδιο Εκφώνηση: 9/3/0 Παράδοση: 5/4/0,.59 Άσκηση 0 η : Το πρόβλημα της βελόνας του Buffon Θέμα της εργασίας

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java Java Media Framework Ηβιβλιοθήκη JMF Εγκαθίσταται επιπρόσθετα στη Java Αναπαραγωγή πολυµέσων Αποστολή και λήψη πολυµέσων σε πραγµατικό χρόνο Γραφικά αντικείµενα

Διαβάστε περισσότερα

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 MySQL + Γλώσσα Προγραμματισμού Ευαγγελία Πιτουρά 1 Database drivers Για να χρησιμοποιήσουμε μια βάση δεδομένων από μια γλώσσα προγραμματισμού χρειαζόμαστε έναν driver. JDBC είναι το API για τη Java και

Διαβάστε περισσότερα

Υπολογισμός Φορολογικής Αναμόρφωσης

Υπολογισμός Φορολογικής Αναμόρφωσης Υπολογισμός Φορολογικής Αναμόρφωσης Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας Υπολογισμού Φορολογικής Αναμόρφωσης στην εφαρμογή Λογιστική Διαχείριση. Παρακάτω

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

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

. Μεθοδολογία Προγραμματισμού. UML Διαγράμματα. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού UML Διαγράμματα Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού Java 69

Εισαγωγή στη γλώσσα προγραμματισμού Java 69 Εισαγωγή στη γλώσσα προγραμματισμού Java 69 9. Animation σε Java 9.1 Γενικά περί Animation Ένας από τους καλύτερους τρόπους για να γίνει ένα πρόγραμμα σε Java ή μια σελίδα που τρέχει Java applet πιο ελκυστική,

Διαβάστε περισσότερα

Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων

Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Φθινόπωρο 2006 ΗΥ351: Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design Φροντιστήριο 5 Ημερομηνία: 01/12/2006 Θεματική

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

Διαβάστε περισσότερα

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

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας Διαγράμματα Αλληλεπίδρασης Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας 1 Διαγράμματα αλληλεπίδρασης Απεικονίζουν την αλληλεπίδραση των αντικειμένων μέσω μηνυμάτων Η ανάθεση αρμοδιοτήτων περιλαμβάνει

Διαβάστε περισσότερα

Περίπτωση Χρήσης Use case

Περίπτωση Χρήσης Use case Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Φθινόπωρο 2007 HΥ351 Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design Use Cases & Use Case Diagrams Περίπτωση Χρήσης

Διαβάστε περισσότερα

Generics και ArrayLists

Generics και ArrayLists ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Generics και ArrayLists Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Στοιχειώδεις Δομές Δεδομένων

Στοιχειώδεις Δομές Δεδομένων Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους

Διαβάστε περισσότερα

ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΞΙΔΙΩΤΙΚΟΥ ΠΡΑΚΤΟΡΕΙΟΥ

ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΞΙΔΙΩΤΙΚΟΥ ΠΡΑΚΤΟΡΕΙΟΥ ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΞΙΔΙΩΤΙΚΟΥ ΠΡΑΚΤΟΡΕΙΟΥ Αναγνώριση Χειριστών Πρωτεύοντες Χειριστές Πελάτης Διαχειριστής Δευτερεύοντες Χειριστές Γραφείο Ενοικίασης Αυτοκινήτων Ξενοδοχειακός Πράκτορας Αναγνώριση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης 14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται

Διαβάστε περισσότερα

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

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Απαιτήσεις Λογισμικού Περιπτώσεις χρήσης Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 1 Περιεχόμενο του μαθήματος

Διαβάστε περισσότερα

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

Διαβάστε περισσότερα

Εργαστήριο «Βάσεις Οικολογικών Δεδομένων και Εφαρμογές»

Εργαστήριο «Βάσεις Οικολογικών Δεδομένων και Εφαρμογές» 2 Ενότητα 5 Φίλτρα & Ερωτήματα 3 4 5.1 Φίλτρα Για να εμφανίσετε επιλεκτικά κάποιες εγγραφές που πληρούν κάποια κριτήρια μπορείτε να χρησιμοποιήσετε το φιλτράρισμα με βάση την επιλογή, φιλτράρισμα εκτός

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ. ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ Ηλεκτρονική Υποβολή Α.Π.Δ. ΠΕΡΙΕΧΟΜΕΝΑ 1) Είσοδος στην εφαρμογή 2) Δημιουργία Περιόδου Υποβολής 2.α) Ακύρωση Περιόδου Υποβολής 3) Μέθοδος Υποβολής: Συμπλήρωση Φόρμας 3.α) Συμπλήρωση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ» Εκφώνηση της εργασίας 3 η ΕΡΓΑΣΙΑ ΟΜΑΔΙΚΗ Ομαδική Εργασία Εφαρμογή Super Market Η ομαδική εργασία αποτελεί συνέχεια της 2 ης άσκησης της 2 ης εργασίας και έχει στόχο τη δημιουργία ενός γραφικού περιβάλλοντος,

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

ΤΟ WEB 2.0 ΚΑΙ Η ΤΕΧΝΟΛΟΓΙΑ AJAX. ΧΡΗΣΗ ΤΟΥΣ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΝΟΣ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ.

ΤΟ WEB 2.0 ΚΑΙ Η ΤΕΧΝΟΛΟΓΙΑ AJAX. ΧΡΗΣΗ ΤΟΥΣ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΝΟΣ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ. ΤΟ WEB 2.0 ΚΑΙ Η ΤΕΧΝΟΛΟΓΙΑ AJAX. ΧΡΗΣΗ ΤΟΥΣ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΝΟΣ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ. ΤΣΑΠΛΑΡΗΣ ΠΑΝΑΓΙΩΤΗΣ Α.Μ. : Μ15/06 ΕΞΑΜΗΝΟ 4ο 2007-2008 ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΤΜΗΜΑ : Δ.Π.Μ.Σ. ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ Type Information 2 Δυναμική Πληροφορία Τύπου Runtime type information (RTTI): μας επιτρέπει να ανακαλύπτουμε και να χρησιμοποιούμε δυναμικά (at run time) πληροφορίες για τον τύπο

Διαβάστε περισσότερα

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα Η Απάντηση Φύλλο Εργασίας Στο βιβλίο The Hitchhiker s Guide to the Galaxy, περιγράφεται μια υπερευφυής φυλή η οποία αποφασίζει να φτιάξει έναν υπολογιστή που θα δώσει οριστικά την απάντηση για το νόημα

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Προπτυχιακό Πρόγραμμα Σπουδών Πληροφορική - ΠΛΗ 11-2005 - 06 ΕΠΑΝΑΛΗΠΤΙΚΗ ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ 8 ΙΟΥΛΙΟΥ 2006 ΜΕΡΟΣ Α'. ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΩΝ ΕΠΙΛΟΓΩΝ [ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 45 ] Σε κάθε ερώτηση απαντάτε επιλέγοντας

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

Διαβάστε περισσότερα

Πληροφορική 2. Τεχνολογία Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού Πληροφορική 2 Τεχνολογία Λογισμικού 1 2 Κρίση Λογισμικού (1968) Στην δεκαετία του 1970 παρατηρήθηκαν μαζικά: Μεγάλες καθυστερήσεις στην ολοκλήρωση κατασκευής λογισμικών Μεγαλύτερα κόστη ανάπτυξης λογισμικού

Διαβάστε περισσότερα

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο ) Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Εισαγωγή στον Προγραµµατισµό των Υπολογιστών Καθηγητής Ι. Κάβουρας Εξεταστική περίοδος Φεβρουαρίου 2004 Τετάρτη 10/3/2004, ώρα 8.00 Στοιχεία εξεταζόµενου

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Αντικειμενοστρεφής Προγραμματισμός Η/Υ Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος Το κείμενο αυτό γράφεται με σκοπό να βοηθήσει τους φοιτητές του μαθήματος

Διαβάστε περισσότερα

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Περιπτώσεις Χρήσης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Περιπτώσεις Χρήσης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ 1 Βάση Δεδομένων: Με το όρο Βάση Δεδομένων εννοούμε ένα σύνολο δεδομένων που είναι οργανωμένο

Διαβάστε περισσότερα

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

Διαβάστε περισσότερα

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή: Η Απάντηση Ενδεικτικές Απαντήσεις Φύλλου Εργασίας 1 22 Ιουλίου 2016 13:16 Μηνύματα 1. Πληκτρολογήστε την εντολή: print("καλημέρα.") Αυτό είναι το πρώτο σας πρόγραμμα. Εκτελέστε το για να δείτε τι θα συμβεί.

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

Διαβάστε περισσότερα

Εργαστήριο #10 (Ε10) 1

Εργαστήριο #10 (Ε10) 1 Εργαστήριο #10 Από τα προηγούμενα εργαστήρια......θα χρειαστείτε ορισμένες από τις οδηγίες μορφοποίησης CSS (ανατρέξτε στις εκφωνήσεις του 8 ου και 9 ου εργαστηρίου).! Οδηγίες Στη δυναμική δημιουργία ιστοσελίδων

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

Διαβάστε περισσότερα

Εργαστήριο Βάσεων Δεδομένων

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Φροντιστήριο 4/2/2009 Δικαιώματα χρηστών - Προβολές (Views) ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ MYSQL queries results mysql host DB server queries results Client host Β Δ Ηχρήσητηςmysql βασίζεται

Διαβάστε περισσότερα