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

Μέγεθος: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κλάσεις στη 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. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

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

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

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

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

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

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

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

Περιγραφή της εργασίας

Περιγραφή της εργασίας Προγραμματισμός Internet Εξάμηνο: Χειμερινό 2006-2007 Εργασία Εργαστηρίου Δευτέρα 11 Δεκ. 2006 Περιγραφή της εργασίας Μία εταιρία ηλεκτρονικού εμπορίου εμπορεύεται βιβλία πληροφορικής μέσω διαδικτύου.

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

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

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

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

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

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

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

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

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

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

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

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

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

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

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης Η ανάπτυξη ενός αντικειμενοστρεφούς συστήματος λογισμικού, το οποίο θα διαχειρίζεται δεδομένα των βιογραφικών σημειωμάτων των υποψηφίων. Δυνατότητα

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης Αντικειµενοστραφής Σχεδίαση Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Μέθοδοι Στα πρώτα στάδια της γράφουµε µόνο τα ονόµατα των µεθόδων Γράφουµε τις

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

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

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

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

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

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

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

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

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

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

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

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

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

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων,

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων, Περιπτώσεις Χρήσης (Προδιαγραφές Απαιτήσεων) Ιδέα του Jacobson ( 92, OOSE) μηχανισμός ανακάλυψης και καταγραφής των λειτουργικών απαιτήσεων ιστορίες χρήσης του συστήματος εργαλείο ανάλυσης ακόμη και σε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2 Παιχνίδι Κρεμάλα Στη δραστηριότητα αυτή θα δημιουργήσεις το γνωστό παιχνίδι της κρεμάλας στο οποίο ο παίκτης προσπαθεί να μαντέψει τα γράμματα από τα οποία αποτελείται μια άγνωστη λέξη. Το πρόγραμμα που

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού 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 Θεματική

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

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

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

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

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

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

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

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

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

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

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

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

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

Περίπτωση Χρήσης 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 Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

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

Το πρόγραμμα 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 υποστηρίζει

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6. Εξαιρέσεις στη γλώσσα Java

6. Εξαιρέσεις στη γλώσσα Java 6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις

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

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

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

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

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

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

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

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

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

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

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ 2014-2020 ΕΝΟΤΗΤΑ «ΔΙΑΧΕΙΡΙΣΗ ΠΡΟΣΚΛΗΣΕΩΝ ΕΡΓΩΝ ΣΧΕΔΙΩΝ ΧΟΡΗΓΙΩΝ» 1η Έκδοση: 2015 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΕΙΣΑΓΩΓΗ...3

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