ΚΕΦΑΛΑΙΟ 10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Έννοιες-κλειδιά

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

Download "ΚΕΦΑΛΑΙΟ 10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Έννοιες-κλειδιά"

Transcript

1 ΚΕΦΑΛΑΙΟ 10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Σκοπός του κεφαλαίου είναι να εισάγει τον αναγνώστη στην υλοποίηση και τον έλεγχο λογισμικού σύμφωνα με την αντικειμενοστρεφή φιλοσοφία, συνεχίζοντας την αναφορά στην ενοποιημένη προσέγγιση ανάπτυξης λογισμικού. Μετά τη μελέτη του κεφαλαίου, ο αναγνώστης θα είναι σε θέση: να κατασκευάζει ένα μοντέλο υλοποίησης μιας εφαρμογής λογισμικού σύμφωνα με την ενοποιημένη προσέγγιση ανάπτυξης λογισμικού, το οποίο αποτελείται από υποσυστήματα που περιέχουν συστατικά στοιχεία λογισμικού και διεπαφές, να υλοποιεί κλάσεις οι οποίες συμπεριλαμβάνονται στο μοντέλο υλοποίησης μιας εφαρμογής σύμφωνα με τον σχεδιασμό τους, που περιέχεται στο μοντέλο σχεδίασης, να προγραμματίζει και να πραγματοποιεί τον έλεγχο της υλοποίησης μιας εφαρμογής σύμφωνα με την ενοποιημένη προσέγγιση ανάπτυξης λογισμικού που βασίζεται στην αντικειμενοστρεφή τεχνολογία. Έννοιες-κλειδιά Μοντέλο υλοποίησης Συστατικό λογισμικού (component) Υποσύστημα Διεπαφή (interface) 535 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

2 Εισαγωγικές παρατηρήσεις Η εργασία που έπεται της σχεδίασης είναι η υλοποίηση, δηλαδή η συγγραφή του πηγαίου κώδικα του προγράμματος. Το βάρος, πλέον, δεν πέφτει στην κατασκευή μοντέλων, και τα προβλήματα που αντιμετωπίζονται δεν σχετίζονται με την εκφραστικότητα των μοντέλων, τον βαθμό αφαίρεσης, την κουλτούρα του σχεδιαστή και άλλες αφηρημένες έννοιες. Στη φάση της υλοποίησης αντιμετωπίζονται συγκεκριμένα κατασκευαστικά προβλήματα ή, ακριβέστερα, «προγραμματιστικά», όπως διαχείριση τύπων, επιλογή και χρήση προγραμματιστικών βιβλιοθηκών και πλαισίων προγραμματισμού κάθε είδους (APIs - Application Programming Interfaces), διαχείριση γεγονότων (events), εντοπισμός και διόρθωση σφαλμάτων (debugging) και αρκετά άλλα, γνωστά σε κάθε προγραμματιστή. Η αφηρημένη αναφορά στο «πώς είναι το λογισμικό» (σχεδίαση), ώστε να «κάνει τα επιθυμητά» (ανάλυση), γίνεται πλέον συγκεκριμένη, γραμμή-προς-γραμμή υλοποίηση όσων έχουν καθοριστεί. Σε μια επιτυχή έκβαση ενός έργου ανάπτυξης λογισμικού, ο προγραμματιστής ξεκινώντας την υλοποίηση έχει αρκετά δεδομένα που θα τον καθοδηγήσουν να κάνει αυτό που πρέπει, ώστε το έργο να ολοκληρωθεί με επιτυχία, δηλαδή το λογισμικό να κάνει τις δουλειές για τις οποίες κατασκευάστηκε και να τις κάνει σωστά. Σε μια αποκλίνουσα από τα προσδοκώμενα έκβαση, ο προγραμματιστής, έχοντας στα χέρια του το σχέδιο του λογισμικού, μπορεί να ανατρέξει προς τα πίσω εντοπίζοντας τόσο στο πεδίο του συστήματος λογισμικού (σχεδίαση) όσο και στο πεδίο του προβλήματος (ανάλυση) το πρόβλημα. Αυτό, βέβαια, με την προϋπόθεση ότι έχει τηρηθεί μια ελάχιστη πειθαρχία κατά την κατασκευή των μοντέλων που αναφέρονται στα Κεφάλαια 8 και 9 του παρόντος βιβλίου. Η δυνατότητα αυτή είναι ένα από τα σημαντικότερα πλεονεκτήματα της αντικειμενοστρεφούς τεχνολογίας και δεν δίνεται, τουλάχιστον σίγουρα όχι με την ίδια ευκολία, στη δομημένη ανάλυση και σχεδίαση. Εκεί, το να εντοπίσει κανείς σε ποια λειτουργική απαίτηση αντιστοιχεί μία μονάδα προγράμματος η οποία δεν μπορεί να κατασκευαστεί σωστά είναι πιο δύσκολο. Στην περίπτωση που εξετάζουμε εδώ, είναι σχεδόν άμεσο. Όσοι έχουν «πληρώσει το τίμημα» ενός αποτυχημένου έργου ανάπτυξης λογισμικού αντιλαμβάνονται ότι η κατά το δυνατόν πιστή εφαρμογή των βημάτων της αντικειμενοστρεφούς ανάλυσης και σχεδίασης και η δημιουργία όλων 536 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

3 των μοντέλων λογισμικού, μολονότι δεν οδηγεί σε εκτελέσιμο λογισμικό αλλά στην περιγραφή αυτού, αποδίδει τον χρόνο της και με το παραπάνω. Το πρόβλημα της αναφοράς του θέματος σε ένα εγχειρίδιο όπως αυτό, χωρίς να γίνονται εκτενείς αναφορές σε ένα ή περισσότερα περιβάλλοντα ανάπτυξης, είναι μια μεγάλη πρόκληση. Επιλέξαμε στη συνέχεια του κεφαλαίου να χρησιμοποιήσουμε τη γλώσσα Java και μάλιστα χωρίς αναφορά σε βιβλιοθήκες προγραμματισμού περιβάλλοντος γραφικών ή και σε άλλα χαρακτηριστικά και δυνατότητες της γλώσσας, οι οποίες αφορούν συγκεκριμένα περιβάλλοντα λειτουργίας λογισμικού. ΕΝΟΤΗΤΑ ΤΟ ΜΟΝΤΈΛΟ ΥΛΟΠΟΊΗΣΗΣ ΣΤΗΝ ΕΝΟΠΟΙΗΜΈΝΗ ΠΡΟΣΈΓΓΙΣΗ ΑΝΆΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΎ Με την ολοκλήρωση της διαδικασίας της σχεδίασης, ο μηχανικός λογισμικού πρέπει να έχει στα χέρια του μια πλήρως τεκμηριωμένη λύση για το αρχικό πρόβλημα που επιδιώκει να λύσει. Έχουμε ήδη δει με ποιο τρόπο κατά τη σχεδίαση το πεδίο δράσης μας μετατοπίζεται από τη μοντελοποίηση του αρχικού προβλήματος στη μοντελοποίηση κάποιας αποδεκτής λύσης του. Η υλοποίηση αποτελεί το τελευταίο στάδιο αυτού του κύκλου ανάπτυξης, τουλάχιστον ως προς τη σύνθεση προσεγγίσεων και λύσεων που θα μας οδηγήσουν στην τελική εφαρμογή, δηλαδή, με απλά λόγια, σε ένα πρόγραμμα που δουλεύει. Κατά την υλοποίηση, ο προγραμματιστής καλείται να υλοποιήσει τη σχεδίαση της εφαρμογής σε κάποια γλώσσα προγραμματισμού (ή σε περισσότερες από μία γλώσσες για κάποια συστήματα), να εγκαταστήσει τα παραδοτέα στον προβλεπόμενο εξοπλισμό, σύμφωνα με την προσυμφωνημένη διάταξη (deployment), ολοκληρώνοντας έτσι το έργο. Λαμβάνοντας υπόψη μας πως η συμπεριφορά του συστήματος έχει οριστεί κατά τη σχεδίαση, ο προγραμματιστής κατά την υλοποίηση πρέπει να προχωρήσει σε χαμηλότερο επίπεδο, δηλαδή πιο κοντά στη μηχανή. Έτσι, εκτός της απλής και μηχανικής μεταφοράς της σχεδίασης σε κάτι απτό, ο προγραμματιστής θα πρέπει να αποφασίσει, με δεδομένα τα εργαλεία προγραμματισμού που θα 537 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

4 χρησιμοποιήσει, σχετικά με τις δομές δεδομένων και τους αλγόριθμους που θα κρίνει πως είναι οι καταλληλότεροι για την καλύτερη δυνατή υλοποίηση του συστήματος στο εκάστοτε περιβάλλον. Στην πράξη, η απόφαση για πολλά από αυτά δεν μπορεί να ληφθεί μόνο από τον προγραμματιστή, αλλά αποτελεί αρχική παραδοχή ολόκληρου του έργου ανάπτυξης λογισμικού, την οποία ο προγραμματιστής καλείται απλά να εφαρμόσει. Επίσης, η μεταφορά της σχεδίασης σε γλώσσα προγραμματισμού σπάνια είναι μηχανική διεργασία: έχει αρκετή δημιουργικότητα και αυτό επιβεβαιώνεται συνεχώς από τους «μαχόμενους» προγραμματιστές. Όπως και στα προηγούμενα βήματα της ενοποιημένης προσέγγισης, έτσι και κατά την υλοποίηση είναι πιθανό να χρειαστεί να κινηθεί κάποιος οπισθοδρομώντας σε προηγούμενα στάδια, αν αυτό κριθεί απαραίτητο. Για παράδειγμα, μπορεί να προκύψει κάποιο πρόβλημα στην υλοποίηση, που να αναγκάσει την ομάδα της ανάπτυξης να επανεξετάσει κάποια σημεία της σχεδίασης προτού να μπορέσει να επιστρέψει στην υλοποίηση. Περαιτέρω, η διαδικασία της υλοποίησης είναι εξ ορισμού συνδεδεμένη με τον έλεγχο που πρέπει να υποστεί η εφαρμογή πριν από την παράδοση σε λειτουργία Συστατικό λογισμικού (Component) στο μοντέλο υλοποίησης Στην υλοποίηση, με τον όρο «συστατικό λογισμικού» αναφερόμαστε σε κάθε υλοποιημένο τμήμα της εφαρμογής που έχει κάποιον ρόλο στη συνολική λειτουργία του υποσυστήματος στο οποίο ανήκει. Έτσι, ένα συστατικό λογισμικού μπορεί να είναι μία υλοποιημένη κλάση ή μία ομάδα κλάσεων. Επιπρόσθετα, συστατικό λογισμικού μπορεί να αποτελέσει η υλοποιημένη διεπαφή μεταξύ του συστήματος που κατασκευάζουμε και ενός άλλου, εξωτερικού συστήματος λογισμικού όπως, για παράδειγμα, μιας βάσης δεδομένων. Αναλόγως με τον τρόπο με τον οποίο έχουν οριστεί διάφορα συστατικά λογισμικού κατά τη σχεδίαση, προχωρούμε και στη δημιουργία των αντίστοιχων κατά την υλοποίηση. Η έννοια του συστατικού λογισμικού ως ένα σύνολο κλάσεων ή άλλων προγραμματιστικών στοιχείων μπορεί να διατηρηθεί σε διάφορες γλώσσες προγραμματισμού, κάνοντας έτσι τη μετάβαση 538 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

5 από τη σχεδίαση στην υλοποίηση, και το αντίστροφο, πιο εύκολη. Για παράδειγμα, η Java παρέχει στον προγραμματιστή την έννοια του πακέτου (package). Τα πακέτα της Java μπορούν να χρησιμοποιηθούν για να ορίσουν συστατικά λογισμικού με ιεραρχικό τρόπο. Στο επίπεδο του λειτουργικού συστήματος, αυτά τα πακέτα εκφράζονται με τη δημιουργία φακέλων. Έτσι, κλάσεις και διεπαφές που βρίσκονται σε κάποιον φάκελο ανήκουν και στο ίδιο συστατικό λογισμικού κ.ο.κ. Είναι σκόπιμο να τονίσουμε ότι σε συστήματα λογισμικού μικρής έκτασης, όπως είναι τα παραδείγματα αυτού του βιβλίου, ένα συστατικό λογισμικού μπορεί να είναι ταυτόσημο με μία κλάση. ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΤΑΞΗ JAVA: Ο τρόπος με τον οποίο ορίζονται τα συνθετήματα ή πακέτα στη γλώσσα προγραμματισμού Java είναι με τη λέξη-κλειδί (keyword) package, ακολουθούμενο από το όνομα του πακέτου στην αρχή του σχετικού αρχείου πηγαίου κώδικα. Εσωτερικά πακέτα διαχωρίζονται με μία τελεία (.). Ας υποθέσουμε πως έχουμε ένα συνθέτημα που υλοποιεί μία διεπαφή με τους χρήστες, μια φόρμα, δηλαδή, που αποτελείται από κάποια στοιχεία για την απεικόνιση δεδομένων (έξοδος) και κάποια για την εισαγωγή δεδομένων από τους χρήστες (είσοδος). Η φόρμα αυτή θα ήταν λογικό να ανήκει σε κάποιο πακέτο σχετικό με τη διεπαφή με τους χρήστες. Ονομάζουμε αυτό το πακέτο «ui» (για user interface). Στην αρχή του αρχείου του πηγαίου κώδικα της φόρμας δηλώνουμε πως η κλάση της φόρμας ανήκει στο πακέτο «ui», γράφοντας: package ui; class InputForm // η υλοποίηση της κλάσης θα γίνει εδώ 539 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

6 Τα στοιχεία της φόρμας που βοηθούν στην είσοδο των δεδομένων (όπως κουμπιά, μενού κ.λπ.) μπορούμε να τα τοποθετήσουμε σε ένα άλλο πακέτο, το οποίο όμως να συμπεριλαμβάνεται στο «ui» ως εξής: package ui.input; class MyButton // η υλοποίηση της κλάσης θα γίνει εδώ Με αυτόν τον τρόπο μπορούμε να επιτύχουμε την ιεράρχηση ολόκληρης της εφαρμογής ή επιμέρους υποσυστημάτων της σε πακέτα ή συνθετήματα. Αυτή η διαίρεση δεν επηρεάζει ουσιαστικά την υλοποίηση, όμως αποτελεί καλή πρακτική έτσι ώστε να είναι πιο εύκολη και κατανοητή η μετάβαση από τη σχεδίαση στην υλοποίηση. Επίσης, μας παρέχει μοναδικές ονομασίες που χρησιμεύουν ως σημεία αναφοράς για τα διάφορα συνθετήματα και υποσυστήματα. Τέτοια σημεία αναφοράς είναι σημαντικά τόσο για τη σχεδίαση και την υλοποίηση όσο και για τον έλεγχο, όπως θα δούμε παρακάτω Υποσύστημα στο μοντέλο υλοποίησης Ένα υποσύστημα είναι ένα σύνολο από συστατικά λογισμικού. Δεν είναι σαφές, ούτε και εντός της φιλοσοφίας της ενοποιημένης προσέγγισης ανάπτυξης λογισμικού, να καθοριστεί επακριβώς τι είναι ένα υποσύστημα. Οι εκάστοτε συνθήκες οδηγούν πάντα τον έμπειρο μηχανικό λογισμικού σε σωστές αποφάσεις. Καταφεύγουμε σε ένα παράδειγμα, στο οποίο αναπόφευκτα κάνουμε χρήση ονομάτων συγκεκριμένων εφαρμογών λογισμικού: Αν, για παράδειγμα, ως σύστημα εννοούμε ένα σύνολο εφαρμογών γραφείου όπως, λόγου χάρη, το δωρεάν διατιθέμενο λογισμικό LibreΟffice, τότε τα υποσυστήματά του είναι οι επιμέρους εφαρμογές που ονομάζονται 540 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

7 «Writer», «Calc», «Impress» και «Draw». Κάθε τέτοιο υποσύστημα περιέχει πολλά συστατικά λογισμικού (modules) και κάθε συστατικό έχει πολλές κλάσεις. Ωστόσο, αν ως σύστημα θεωρήσουμε το παράδειγμα «Επίκουρος» του παρόντος βιβλίου, θα δυσκολευτούμε να ορίσουμε υποσυστήματα τα οποία να μην περιέχουν μόνο ένα συστατικό λογισμικού, το οποίο με τη σειρά του να περιέχει μόνο μία κλάση. Ο κίνδυνος παρανοήσεων λόγω της μικρής έκτασης κάθε εκπαιδευτικού παραδείγματος είναι υπαρκτός, όμως, έχοντας κατά νου το παραπάνω παράδειγμα, οι παρανοήσεις περιορίζονται Διεπαφές στο μοντέλο υλοποίησης Όπως έχουμε δει στο προηγούμενο κεφάλαιο (Ενότητα 9.2.3), οι διεπαφές (interfaces) είναι πολύ σημαντικές για την επιτυχή ανάπτυξη μιας εφαρμογής λογισμικού. Με τη χρήση διεπαφών μπορούμε να ορίσουμε τον τρόπο επικοινωνίας διαφόρων μερών του λογισμικού όπως επίσης και τον τρόπο επικοινωνίας μερών του λογισμικού με εξωτερικά συστήματα. Είναι σημαντικό να μην ταυτίζουμε την έννοια «διεπαφή» (η οποία αποδίδει γενικά τον όρο «interface») με το «user interface» η επικοινωνία με τον χρήστη δεν είναι η μόνη αλληλεπίδραση του λογισμικού με τον «έξω κόσμο». Επιπλέον, με τη χρήση διεπαφών μπορούμε να επιτρέψουμε την προσθήκη εναλλακτικών υλοποιήσεων και τη δυναμική φόρτωσή τους κατά τον χρόνο εκτέλεσης της εφαρμογής, χαρακτηριστικό εγγενές στην αντικειμενοστρεφή τεχνολογία. Τέλος, οι διεπαφές μάς διευκολύνουν στο να συνδέσουμε μονάδες εισόδου εξόδου με τα κεντρικά υποσυστήματα μιας εφαρμογής αποφεύγοντας ανώφελες απευθείας ζεύξεις μεταξύ τους, που μπορεί να δημιουργήσουν προβλήματα κατά τη διόρθωση σφαλμάτων όπως επίσης και κατά τη συντήρηση της εφαρμογής. Η υλοποίηση των διεπαφών είναι ένα από τα πρώτα μελήματα του προγραμματιστή. Ξεκινώντας από τις διεπαφές επιτυγχάνουμε την υλοποίηση του σκελετού της εφαρμογής, καλύπτοντας τα κομβικά σημεία σε σύντομο χρονικό διάστημα. Μετά από την ολοκλήρωση αυτής της εργασίας, μπορούμε να συνεχίσουμε με την υλοποίηση αλγορίθμων και ολοκληρωμένων 541 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

8 κλάσεων, των οποίων οι εξωτερικές μέθοδοι είναι άρτια ορισμένες από τις αντίστοιχες διεπαφές. Στις περισσότερες γλώσσες προγραμματισμού οι διεπαφές αποτελούν αναπόσπαστο μέρος τους και υποστηρίζονται από δεσμευμένες λέξεις-κλειδιά (reserved words). ΠΑΡΑΔΕΙΓΜΑ Στη Java, ο ορισμός των διεπαφών γίνεται με τη χρήση της λέξης-κλειδιού interface. Στη συγκεκριμένη γλώσσα προγραμματισμού οι διεπαφές βρίσκονται στην κορυφή των επιτρεπόμενων ταξινομιών κλάσεων μέσω των διαδικασιών της υλοποίησης ή της κληρονομικότητας. Με άλλα λόγια, μία κλάση μπορεί να υλοποιήσει μία διεπαφή ή/και να κληρονομήσει μία άλλη κλάση, αλλά ποτέ το αντίστροφο. Επίσης, μία κλάση μπορεί να υλοποιεί περισσότερες από μία διεπαφές. Τέλος, είναι επιτρεπτό για μία διεπαφή να κληρονομεί μία άλλη διεπαφή. Ας αναλογιστούμε την εφαρμογή «Επίκουρος». Στη δραστηριότητα 1 του προηγούμενου κεφαλαίου, είδαμε πως το πρόγραμμα αυτό θα μπορούσε να παρέχει και την υπηρεσία της εκτύπωσης διαφόρων δεδομένων σε διάφορα μέσα. Για τον λόγο αυτό καταλήξαμε σε μία διεπαφή «εκτυπωτής», η οποία θα πρέπει να παρέχει τις απαραίτητες μεθόδους που θα καλεί η εφαρμογή έτσι ώστε να μπορεί να εκτυπώσει. Όσον αφορά το κεντρικό παράθυρο της εφαρμογής (για παράδειγμα, αυτό στο οποίο θα εργάζεται η γραμματεία), ο κάθε εκτυπωτής θα πρέπει να έχει μία μέθοδο στην οποία η γραμματεία θα δίνει μέσω μιας παραμέτρου έναν σπουδαστή (ένα αντικείμενο της κλάσης «σπουδαστής»), έτσι ώστε να γίνεται η εκτύπωση, σύμφωνα με τον τύπο του εν λόγω εκτυπωτή. Μια τέτοια διεπαφή φαίνεται παρακάτω: public interface PrinterI public String printeridentification(); public void printstudent(student somestudent); 542 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

9 Σύμφωνα με αυτήν τη διεπαφή, κάθε υλοποίηση κλάσης εκτυπωτή θα πρέπει να περιέχει την υλοποίηση των δύο μεθόδων. Συμπεριλαμβάνουμε και μία μέθοδο «printeridentification», έτσι ώστε το κεντρικό παράθυρο της εφαρμογής να γνωρίζει σε ποιον εκτυπωτή αναθέτει την εκτύπωση. Τώρα, ας υποθέσουμε πως στην εφαρμογή μας θέλουμε να συμπεριλάβουμε έναν νέο εκτυπωτή, που θα εκτυπώνει τα στοιχεία ενός σπουδαστή στην οθόνη μας. Η κλάση που θα μας δώσει αυτήν τη λειτουργία θα πρέπει να υλοποιεί την παραπάνω διεπαφή, μιας και η επικοινωνία του κεντρικού παραθύρου της εφαρμογής θα γίνεται αποκλειστικά μέσω αυτής (της διεπαφής). Στην Java, μια τέτοια κλάση υλοποιείται ως εξής: public class MonitorPrinter implements PrinterI public String printeridentification() return monitor printer ; public void printstudent(student somestudent) System.out.println(someStudent.firstName); System.out.println(someStudent.lastName); // επιπλέον πληροφορίες του σπουδαστή Όταν μία κλάση όπως η παραπάνω υλοποιεί (implements) μία διεπαφή, είναι αναγκαστικό να υλοποιήσει όλες τις μεθόδους που προβλέπονται από τη διεπαφή αυτή. Ο κώδικας πίσω από το κεντρικό παράθυρο της εφαρμογής, προκειμένου να εκτυπωθεί το αρχείο ενός σπουδαστή, θα είναι μόνο μία κλήση στη μέθοδο της διεπαφής «printstudent». Έτσι, στην περίπτωση που είχαμε έναν 543 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

10 επιπλέον εκτυπωτή, για παράδειγμα «PaperPrinter», η κεντρική εφαρμογή θα έβλεπε μόνο τη διεπαφή, και ο ίδιος κώδικάς της που θα εκτύπωνε σε χαρτί, θα εκτύπωνε και στην οθόνη. Αυτό, βέβαια, θα συνέβαινε δεδομένου ότι τα αντίστοιχα αντικείμενα των «PaperPrinter» και «MonitorPrinter» είχαν δημιουργηθεί. Από το παράδειγμα αυτό είναι φανερό πώς οι διεπαφές βοηθούν στην υλοποίηση σύνθετων λύσεων μέσω της ευελιξίας που παρέχουν στον προγραμματιστή. Σύνοψη ενότητας Το μοντέλο υλοποίησης περιέχει τα εκτελέσιμα στοιχεία του λογισμικού, οργανωμένα (από κάτω προς τα πάνω) σε κλάσεις, συστατικά στοιχεία (components), υποσυστήματα και συστήματα. Στην περίπτωση που μια εφαρμογή λογισμικού δεν είναι εκφυλιστικά απλή, τότε οι έννοιες «σύστημα», «υποσύστημα», «component» και «κλάση» δεν ταυτίζονται. Σε όλες τις περιπτώσεις, οι διεπαφές (interfaces) περιγράφουν την επικοινωνία ενός συστατικού με το περιβάλλον του και υποστηρίζονται από όλες τις σύγχρονες γλώσσες προγραμματισμού. 544 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

11 ΕΝΟΤΗΤΑ ΕΡΓΑΣΊΕΣ ΠΟΥ ΕΚΤΕΛΟΎΝΤΑΙ ΣΤΗΝ ΥΛΟΠΟΊΗΣΗ Η γενική ροή εργασιών που πρέπει να εκτελεστούν κατά την υλοποίηση είναι η ακόλουθη: 1. Υλοποίηση αρχιτεκτονικής του λογισμικού. 2. Υλοποίηση συστημάτων υποσυστημάτων. 3. Υλοποίηση κλάσεων. Σύμφωνα με την αναφορά στην έννοια του συστήματος υποσυστήματος η οποία προηγήθηκε, μια μικρής έκτασης εφαρμογή λογισμικού, όπως τα παραδείγματα που μας απασχολούν εδώ, έχει μόνο υλοποίηση κλάσεων. Σε μεγαλύτερες εφαρμογές, όπου τα συστήματα και τα υποσυστήματα δεν ταυτίζονται με κλάσεις, έχει νόημα να μιλάμε για υλοποίηση αυτών. Έχοντας αναφέρει τα παραπάνω, η εργασία που αναφέρεται ως υλοποίηση συστημάτων υποσυστημάτων έχει ακριβώς την έκταση που της προσδίδει η ανάλυση του λογισμικού μας σε συστήματα και υποσυστήματα. Μια ευρύτερη έννοια είναι η υλοποίηση της αρχιτεκτονικής, η οποία έχει νόημα στις περιπτώσεις που το λογισμικό ακολουθεί κάποιο από τα μοντέλα διάταξης στα οποία έγινε αναφορά στο Κεφάλαιο 3. Κατά την υλοποίηση της αρχιτεκτονικής ακολουθούμε όλα τα βήματα της υλοποίησης συστημάτων, υποσυστημάτων, κλάσεων για καθένα στοιχείο (tier) της αρχιτεκτονικής. Είναι φανερό ότι η καρδιά της υλοποίησης είναι η εργασία της υλοποίησης των κλάσεων, στην οποία θα αναφερθούμε ευθύς αμέσως. Υλοποίηση κλάσης Οι κλάσεις είναι το κεντρικό δομικό στοιχείο της αντικειμενοστρεφούς ανάπτυξης λογισμικού. Επομένως, η όποια παρεχόμενη λειτουργία μιας εφαρμογής επιτυγχάνεται από την υλοποίηση κλάσεων. Έχουμε ήδη δει πώς οι διεπαφές βοηθούν στην ανάπτυξη ευέλικτων συστημάτων, όμως η υλοποίηση των κλάσεων ενός σχεδίου είναι η διαδικασία που εν τέλει θα μας δώσει το τελικό προϊόν. Η μετάβαση από την κλάση της σχεδίασης στην υλοποίησή της είναι απλή στη θεωρία αλλά, πολλές φορές, απαιτητική στην πράξη. Οι δυσκολίες υλοποίησης εντοπίζονται κυρίως στον καθορισμό κατάλληλων δομών 545 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

12 δεδομένων και αλγόριθμων ικανών να υποστηρίξουν τις επιθυμητές λειτουργίες της κλάσης. Ο προγραμματιστής, επομένως, καλείται να υλοποιήσει όσα έχουν προηγουμένως περιγραφεί στα διαγράμματα κλάσεων και αλληλουχίας (sequence), τα οποία όμως περιορίζονται στο να περιγράψουν τη συμπεριφορά που πρέπει να επιτευχθεί και όχι τον ακριβή τρόπο με τον οποίο θα μπορούσε αυτή να επιτευχθεί. Σε κάθε περίπτωση, καλό είναι ο προγραμματιστής να ξεκινά με τα στοιχεία που έχει από τη σχεδίαση και να εργάζεται έτσι ώστε να καλύψει σταδιακά τις λειτουργικές απαιτήσεις της κάθε κλάσης. Εργαζόμενος προς αυτήν την κατεύθυνση, είναι πιθανό να ανακαλύψει κανείς αδυναμίες στη σχεδίαση. Σε αυτήν την περίπτωση θα πρέπει να κινηθεί αναδρομικά, διορθώνοντας τη σχεδίαση, προτού επιστέψει στη συνέχεια της υλοποίησης. Η υλοποίηση της κλάσης είναι συνδεδεμένη με τον έλεγχό της. Στο Κεφάλαιο 11 θα συζητήσουμε τον έλεγχο μονάδας (unit testing). Αυτός ο τύπος ελέγχου αναφέρεται στον επαυξητικό έλεγχο της κλάσης κατά τη διάρκεια της υλοποίησής της. Ο προγραμματιστής που εφαρμόζει αυτόν τον έλεγχο μπορεί να υλοποιήσει την κλάση και στη συνέχεια να την ελέγξει για την ορθότητά της, να ελέγξει, δηλαδή, αν καλύπτει τις ανάγκες της σχεδίασης. Εναλλακτικά, θεωρείται καλή πρακτική ο προγραμματιστής να γράφει τους σχετικούς ελέγχους για μία κλάση προτού προχωρήσει στην υλοποίησή της. Η υλοποίηση τότε καθοδηγείται μόνο από το αν ο έλεγχος πραγματοποιείται επιτυχώς. Για την παρακάτω περίπτωση χρήσης δεν θα λάβουμε υπόψη μας την εφαρμογή ελέγχου μονάδας. ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ Ας επιστέψουμε στην εφαρμογή «Επίκουρος» και πιο συγκεκριμένα στην κλάση «σπουδαστές», όπως αυτή περιγράφεται στα Σχήματα 9.5 και 9.6 για την περίπτωση χρήσης «διαγραφή σπουδαστή». Θα δούμε μια ημιτελή υλοποίηση αυτής της κλάσης στη Java. Ο αναγνώστης καλείται να μελετήσει τις λεπτομέρειες της υλοποίησης στον δικό του χρόνο. Εξηγούμε πως η κλάση είναι ημιτελής μιας και θα υλοποιήσουμε μόνο τα μέρη που είναι σχετικά με τη διαγραφή φοιτητών. 546 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

13 Για την υλοποίηση ξεκινούμε από τις γνωστές μεθόδους που περιγράφονται από το διάγραμμα κλάσης. Από το σχετικό διάγραμμα αλληλουχίας παρατηρούμε ότι αυτή η κλάση δεν καλεί μεθόδους κάποιας άλλης κλάσης που θα είχαμε να υλοποιήσουμε. Άρα, αποτελεί ένα καλό σημείο εκκίνησης της υλοποίησης. Στην πραγματικότητα χρησιμοποιεί την κλάση «σπουδαστής», την οποία δεν θα συμπεριλάβουμε σε αυτήν τη μελέτη περίπτωσης. Ας υποθέσουμε, για χάρη του παραδείγματος, πως αποτελείται μόνο από δύο πεδία, «firstname» και «lastname», των οποίων τις τιμές μπορούμε να θέσουμε ή να ανακτήσουμε. Πριν ξεκινήσουμε την υλοποίηση της κλάσης παρατηρούμε πως στη σχεδίαση έχει προβλεφθεί μία λίστα σπουδαστών. Αποφασίζουμε να υλοποιήσουμε αυτήν τη λίστα ως μία απλή δυναμική λίστα. Η Java περιλαμβάνει μια τέτοια λίστα στη βιβλιοθήκη της που ονομάζεται «ArrayList». Άρα, το πεδίο αυτό της λίστας θα είναι ένα αντικείμενο της κλάσης «ArrayList» που παρέχει η Java. Μια αρχική υλοποίηση της κλάσης αυτής είναι η εξής: 547 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

14 import java.util.arraylist; public class Students implements StudentsI // Η λίστα με τους φοιτητές private ArrayList studentlist = null; public Students() // Αρχικοποίηση της λίστας φοιτητών studentlist = new ArrayList(); public void removestudent(student s) // Εύρεση της θέσης του φοιτητή στη λίστα int position = findpositionofstudent(s); // Διαγραφή του studentlist.remove(position); public ArrayList difference(arraylist stlist) // Η λίστα που θα επιστραφεί από τη μέθοδο ArrayList difflist = new ArrayList(); // Για κάθε φοιτητή στη δεδομένη λίστα ψάχνουμε στην // εσωτερική. // Αν δεν τον εντοπίσουμε τότε τον προσθέτουμε στη // λίστα που θα επιστρέψουμε for (int i = 0; i < stlist.size; i++) Student s = (Student)stlist.get(i); int position = findpositionofstudent(s); // αν η θέση του φοιτητή στη λίστα είναι < 0 // τότε ο φοιτητής δε βρέθηκε... if (position < 0) //... και άρα πρέπει να προστεθεί: difflist.add(s); return difflist; 548 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

15 Από την υλοποίηση προκύπτει πως και για τις δύο μεθόδους θα χρειαστεί να εντοπίσουμε μεμονωμένους σπουδαστές στην εσωτερική μας λίστα. Για τον λόγο αυτό χρησιμοποιούμε τη μέθοδο «findpositionofstudent(s: Student): int». Αυτή η μέθοδος θα πρέπει να μας επιστρέψει τη θέση του σπουδαστή στην εσωτερική μας λίστα, που παίρνει τιμές από 0 έως ν-1, όπου «ν» ο αριθμός των σπουδαστών στη λίστα. Αφού αυτή η μέθοδος χρησιμοποιείται εσωτερικά και δεν απαιτείται από καμία διεπαφή στη σχεδίαση, μπορούμε να την υλοποιήσουμε ως εσωτερική της κλάσης. Είναι φανερό πως η υλοποίησή της θα εξαρτηθεί από την απόφασή μας να χρησιμοποιήσουμε μια λίστα τύπου «ArrayList». Αν είχαμε επιλέξει μια διαφορετική δομή, η μέθοδος αυτή θα ήταν επίσης διαφορετική. Αυτός είναι ένας επιπλέον λόγος για να την τοποθετήσουμε σε μία άλλη, εσωτερική μέθοδο και όχι μέσα στις υπάρχουσες μεθόδους. Δεδομένης της παραπάνω απόφασής μας, μια υλοποίηση της μεθόδου «findpositionofstudent» είναι η ακόλουθη: 549 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

16 private int findpositionofstudent(student s) int pos = -1; for (int i = 0; i < studentlist.size; i++) Student currentstudent = (Student)studentList. get(i); // Ο σπουδαστής βρέθηκε αν και το μικρό του όνομα // και το επώνυμό του συμπίπτουν με κάποιου στην // εσωτερική λίστα. if (s.firstname.equals(currentstudent.firstname) && s.lastname.equals(currentstudent.lastname)) pos = i; break; return pos; Μια τέτοια υλοποίηση, αν και απέχει από το να είναι η πλέον αποδεκτή εξαιτίας αλγοριθμικών προβλημάτων, είναι πλήρως συμβατή με τη λειτουργική απαίτηση που προκύπτει από την εν λόγω περίπτωση χρήσης. 550 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

17 Δραστηριότητα 1/Κεφάλαιο 10 Στην παραπάνω υλοποίηση, ενώ δηλώνεται πως η κλάση μας υλοποιεί τη διεπαφή «Δ-Σπουδαστές» (StudentsI), η υλοποίησή της δεν δίνεται. Υλοποιήστε τη διεπαφή και συνεχίστε την υλοποίηση της κλάσης «σπουδαστές» (Students), έτσι ώστε να υποστηρίζει και την προσθήκη νέου σπουδαστή. Άσκηση 1/Κεφάλαιο 10 Στην παραπάνω μελέτη περίπτωσης αναφέραμε πως η υλοποίηση δεν είναι η καλύτερη δυνατή από αλγοριθμικής άποψης. Ποια προβλήματα εντοπίζετε εξαιτίας της χρήσης της κλάσης «ArrayList» για τη συγκεκριμένη λειτουργία; Ποια εναλλακτική δομή δεδομένων θα μπορούσαμε να χρησιμοποιήσουμε για να περιορίσουμε τα προβλήματα αυτά; ΕΝΟΤΗΤΑ ΑΠΑΝΤΗΣΕΙΣ ΔΡΑΣΤΗΡΙΟΤΗΤΩΝ ΚΑΙ ΑΣΚΗΣΕΩΝ Δραστηριότητα 1/Κεφάλαιο 10 Η διεπαφή «Δ-Σπουδαστές», στην οποία έχουμε αναφερθεί και στη μελέτη περίπτωσης στην Ενότητα 9.3.1, θα πρέπει να ορίζει μεθόδους μέσω των οποίων να επιτρέπεται η επεξεργασία της λίστας των σπουδαστών του «Επίκουρου». Μια τέτοια υλοποίηση, συμπεριλαμβανομένης και της προσθήκης σπουδαστή, είναι η ακόλουθη: 551 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

18 public interface StudentsI public void removestudent(student s); public void addstudent(student s); public ArrayList difference(arraylist stlist); Δεδομένης της χρήσης της λίστας «ArrayList», η προσθήκη νέου σπουδαστή είναι πολύ εύκολη εργασία. Για να επιτύχουμε αυτό χρειάζεται (και απαιτείται) η κλάση «Students», εφόσον υλοποιεί τη διεπαφή «StudentsI», να υλοποιεί επίσης τη μέθοδο «addstudent». Η υλοποίηση αυτή θα πρέπει να προστεθεί στον κύριο κορμό της κλάσης και έχει ως εξής: public void addstudent(student s) studentlist.add(s); Άσκηση 1/Κεφάλαιο 10 Το συγκεκριμένο ερώτημα είναι αλγοριθμικής φύσης, όμως αποτελεί ένα καλό παράδειγμα προκειμένου να εκτιμήσουμε κάποια από τα προβλήματα που μπορεί να κληθεί να αντιμετωπίσει ένας προγραμματιστής κατά την υλοποίηση. Όπως έχουμε δει, η συγκεκριμένη υλοποίηση χρησιμοποιεί μια απλή λίστα φοιτητών, στην οποία οι φοιτητές καταχωρούνται με τυχαία σειρά. Αυτό έχει ως αποτέλεσμα η αναζήτηση κάποιου φοιτητή (μέθοδος «findpositionofstudent» παραπάνω) να μην είναι όσο «καλή» θα μπορούσε να είναι από πλευράς επιδόσεων. Μελετώντας τον κώδικα αυτής της μεθόδου, παρατηρούμε πως ο χρόνος εκτέλεσης της οποιασδήποτε αναζήτησης θα είναι ανάλογος του αριθμού των φοιτητών [Ο(ν)]. Αν επιλέξουμε μία εναλλακτική υλοποίηση της λίστας φοιτητών χρησιμοποιώντας, για 552 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

19 παράδειγμα, μια λίστα ταξινομημένη βάσει του επωνύμου, θα μπορούσαμε να εφαρμόσουμε αλγόριθμους ταχύτερης αναζήτησης των φοιτητών, όπως ο αλγόριθμος δυαδικής αναζήτησης κ.ά. Κάτι τέτοιο θα αναμέναμε να πραγματοποιηθεί εξάλλου σε οποιαδήποτε περίπτωση επαγγελματικής ανάπτυξης μιας τέτοιας εφαρμογής. Δηλαδή, μολονότι και οι δύο υλοποιήσεις πληρούν τις λειτουργικές προδιαγραφές της εφαρμογής, δεν είναι εξίσου αποδεκτές για την επιτυχημένη υλοποίηση και λειτουργία της εφαρμογής. 553 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

20 ΒΙΒΛΙΟΓΡΑΦΊΑ Khoshafian S., Abnous R., Object Orientation: Concepts, Languages, Databases, User Interfaces, Wiley. Pressman, R. S., Software Engineering-A Practitioners Approach, McGraw-Hill. Sommerville, I. Software Engineering, London: Addison-Wesley. 554 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

21 555 I ΣΤΟΙΧΕΙΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΛΕΙΟΣ ΒΕΣΚΟΥΚΗΣ

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Τεχνολογία Λογισμικού Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΣΧΕΔΙΑΣΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΣΧΕΔΙΑΣΗ ΚΕΦΑΛΑΙΟ 9 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΣΧΕΔΙΑΣΗ Σκοπός του κεφαλαίου είναι να εισάγει τον αναγνώστη στην αντικειμενοστρεφή σχεδίαση, συνεχίζοντας την αναφορά στην ενοποιημένη προσέγγιση ανάπτυξης λογισμικού.

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

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

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

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

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

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

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

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

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο 08 Η γλώσσα UML I Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Unified Modeling Language

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

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

Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Τεχνολογία Λογισμικού 8ο Εξάμηνο 2018 19 Unified Modeling Language II Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Μοντελοποίηση δομής Διαγράμματα κλάσεων Class diagrams

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

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

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

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

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

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

Από τη UML στον Κώδικα. Μέρος Α Από τη UML στον Κώδικα Μέρος Α περιεχόμενα παρουσίασης Κλάσεις Ισότητα αντικειμένων Μονόδρομες συσχετίσεις με πολλαπλότητα «ένα» Μονόδρομες συσχετίσεις με πολλαπλότητα «πολλά» Συλλογές από το σχέδιο στον

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

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

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

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

6. Διαχείριση Έργου. Έκδοση των φοιτητών

6. Διαχείριση Έργου. Έκδοση των φοιτητών 6. Διαχείριση Έργου Έκδοση των φοιτητών Εισαγωγή 1. Η διαδικασία της Διαχείρισης Έργου 2. Διαχείριση κινδύνων Επανεξέταση Ερωτήσεις Αυτοαξιολόγησης Διαχείριση του έργου είναι να βάζεις σαφείς στόχους,

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

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

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

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

Σκοπός του μαθήματος

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

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

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

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

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

περιεχόμενα παρουσίασης

περιεχόμενα παρουσίασης Ανάλυση Απαιτήσεων περιεχόμενα παρουσίασης Δημιουργία μοντέλου Προσεγγίσεις Μοντελοποίησης Μοντελοποίηση δεδομένων Διαγράμματα ροής δεδομένων Μη διαγραμματικά μοντέλα ανάλυσης Διαγράμματα δραστηριότητας

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

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

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

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

Σχεδίαση Λογισμικού. Σημείωση

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

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

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

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

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

ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ Σκοπός του κεφαλαίου είναι η εισαγωγή της έννοιας της διάταξης λογισμικού, ως αρχιτεκτονικής δόμησης των υπολογιστικών πόρων και της ανάθεσης σε αυτούς συστατικών

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

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

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

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

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

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

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα METROPOLIS Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα Ενσωματωμένα συστήματα Ορίζονται ως ηλεκτρονικά συστήματα τα οποία χρησιμοποιούν υπολογιστές και ηλεκτρονικά υποσυστήματα για να εκτελέσουν

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

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

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

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

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

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

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

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

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού Πρόλογος...21 μέρος A Εισαγωγή στην Τεχνολογία Λογισμικού 1 Εισαγωγή στην Τεχνολογία Λογισμικού 1.1 Το λογισμικό...25 1.1.1 Ο ρόλος και η σημασία του λογισμικού...26 1.1.2 Οικονομική σημασία του λογισμικού...28

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

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού Ιστορικό Ημερομηνία Έκδοση Περιγραφή Συγγραφέας Σελ. 2 Πίνακας Περιεχομένων 1. Εισαγωγή xx

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεμένες Δομές - Λίστες Διασυνδεδεμένες δομές δεδομένων Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα. Η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση

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

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

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

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

Visual Flowchart Γενικά

Visual Flowchart Γενικά Visual Flowchart 3.020 -Γενικά Το Visual Flowchart ή «Data-Flow Visual Programming Language 3.020» (http://www. emu8086.com/fp) είναι ένα περιβάλλον ανάπτυξης και εκτέλεσης αλγορίθμων απευθείας σε μορφή

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

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

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 18/11/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΑΝΑΛΥΣΗ

ΚΕΦΑΛΑΙΟ 8 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΑΝΑΛΥΣΗ ΚΕΦΑΛΑΙΟ 8 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΑΝΑΛΥΣΗ Σκοπός του κεφαλαίου είναι να εισάγει τον αναγνώστη στην αντικειμενοστρεφή ανάλυση σύμφωνα με την ενοποιημένη προσέγγιση ανάπτυξης λογισμικού, η οποία

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

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

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Ελληνικό Ανοικτό Πανεπιστήμιο ΓΤΠ61 Πληροφορική Πολυμέσα Αγγελική Μαζαράκη Τι είναι η UML Είναι μια γραφική γλώσσα μοντελοποίησης συστημάτων.

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

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

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

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

Προγραμματισμός Έτους και Ενότητας (Γ Γυμνασίου)

Προγραμματισμός Έτους και Ενότητας (Γ Γυμνασίου) Επιμόρφωση Εκπαιδευτικών Μέσης Εκπαίδευσης για τα Νέα Προγραμματισμός Έτους και Ενότητας (Γ Γυμνασίου) Σωκράτης Μυλωνάς Εισαγωγή Ο σχεδιασμός του Νέου Αναλυτικού Προγράμματος της Πληροφορικής και Επιστήμης

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

Εφαρμογή Μεθοδολογίας ICONIX

Εφαρμογή Μεθοδολογίας ICONIX Πρόγραμμα Μεταπτυχιακών Σπουδών στην Εφαρμοσμένη Πληροφορική Προηγμένη Τεχνολογία Λογισμικού, 2016 Α. Χατζηγεωργίου Εφαρμογή Μεθοδολογίας ICONIX Παράδειγμα: Εγγραφή Φοιτητή σε Μάθημα Θέμα Θεωρείστε ότι

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

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

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

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

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

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

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

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

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

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού ΚΕΦΑΛΑΙΑ XIII, XIV Ένας προγραμματιστής ανεξάρτητα από το πόσο ικανός είναι, όταν δημιουργεί ένα πρόγραμμα, είναι φυσικό να κάνει ορισμένα λάθη. Σε ένα πρόγραμμα είναι δυνατό να παρουσιαστούν διαφορετικής

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12 Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

Αρχιτεκτονική Λογισμικού

Αρχιτεκτονική Λογισμικού Αρχιτεκτονική Λογισμικού περιεχόμενα παρουσίασης Τι είναι η αρχιτεκτονική λογισμικού Αρχιτεκτονική και απαιτήσεις Σενάρια ποιότητας Βήματα αρχιτεκτονικής σχεδίασης Αρχιτεκτονικά πρότυπα Διαστρωματωμένη

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

Περιπτώσεις Χρήσης για το Π.Σ. ΜΟ.ΔΙ.Π. Κρήτης

Περιπτώσεις Χρήσης για το Π.Σ. ΜΟ.ΔΙ.Π. Κρήτης ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΜΟΝΑΔΑ ΔΙΑΣΦΑΛΙΣΗΣ ΠΟΙΟΤΗΤΑΣ Ε.Π.: «ΕΚΠΑΙΔΕΥΣΗ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗ» ΠΡΑΞΗ: ΜΟΔΙΠ ΤΟΥ Τ.Ε.Ι. ΚΡΗΤΗΣ ΕΠΙΣΤΗΜΟΝΙΚΟΣ ΥΠΕΥΘΥΝΟΣ: ΚΩΝ/ΝΟΣ ΣΑΒΒΑΚΗΣ Περιπτώσεις Χρήσης για

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

Ενημέρωση σε Windows 8.1 από τα Windows 8

Ενημέρωση σε Windows 8.1 από τα Windows 8 Ενημέρωση σε Windows 8.1 από τα Windows 8 Τα Windows 8.1 και τα Windows RT 8.1 είναι βασισμένα στα Windows 8 και στα Windows RT, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

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

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

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

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

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

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

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

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

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

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

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

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

Σενάριο 16: Ο κόσμος του Robby

Σενάριο 16: Ο κόσμος του Robby Σενάριο 16: Ο κόσμος του Robby Φύλλο Εργασίας Τίτλος: Ο κόσμος του Robby Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές εργασίες.

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

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

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον» 1. Κύκλος ζωής λογισμικού Ο κύκλος ζωής λογισμικού είναι οι φάσεις (τα στάδια) από τις οποίες διέρχεται μία εφαρμογή λογισμικού, από την σύλληψη της ιδέας, τη διαδικασία κατασκευής / ανάπτυξης, τη λειτουργία

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

Ημερομηνία Παράδοσης: 4/4/2013

Ημερομηνία Παράδοσης: 4/4/2013 Δράση 9.14 / Υπηρεσία εντοπισμού λογοκλοπής Κυρίως Παραδοτέο / Σχεδιασμός και ανάπτυξη λογισμικού (λογοκλοπής) και βάσης δεδομένων (αποθετηρίου) Επιμέρους Παραδοτέο 9.14.1.4 / Πληροφοριακό σύστημα υπηρεσίας

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

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

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

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

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

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

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

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Αναζήτηση Φορέα Συνεργασίας

Αναζήτηση Φορέα Συνεργασίας Αναζήτηση Φορέα Συνεργασίας Η Πρακτική Άσκηση του Ιονίου Πανεπιστημίου απευθύνεται σε φοιτητές/τριες και των 6 τμημάτων του ιδρύματος, οι οποίοι έχουν ολοκληρώσει το ΣΤ Εξάμηνο Σπουδών τους κι επιθυμούν

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

ΕΚΤΕΛΕΣΗ ΠΑΡΑΓΓΕΛΙΩΝ ΑΣΥΡΜΑΤΗ ΠΑΡΑΓΓΕΛΙΟΛΗΨΙΑ

ΕΚΤΕΛΕΣΗ ΠΑΡΑΓΓΕΛΙΩΝ ΑΣΥΡΜΑΤΗ ΠΑΡΑΓΓΕΛΙΟΛΗΨΙΑ Lexicon Software POS Dynamics ΕΚΤΕΛΕΣΗ ΠΑΡΑΓΓΕΛΙΩΝ ΑΣΥΡΜΑΤΗ ΠΑΡΑΓΓΕΛΙΟΛΗΨΙΑ Οδηγίες Χρήσης Lexicon Software Gonou Giota 2 58100 GIANNITSA web site: www.lexiconsoftware.gr e-mail: sales@lexiconsoftware.gr

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

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

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

ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΓΙΑ ΤΑ ΝΕΑ ΑΝΑΛΥΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ ΓΥΜΝΑΣΙΟΥ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΓΙΑ ΤΑ ΝΕΑ ΑΝΑΛΥΤΙΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Γ ΓΥΜΝΑΣΙΟΥ Νέα Αναλυτικά Προγράμματα Πληροφορικής και Επιστήμης Ηλεκτρονικών Υπολογιστών Πηγή: Οδηγός

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

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

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ Γ Λυκείου Κατεύθυνσης Mike Trimos Βήματα Ανάπτυξης ενός Συστήματος 1.Ορισμός και κατανόηση του προβλήματος 2.Ανάλυση του προβλήματος 3.Σχεδιασμός Αλγοριθμικής Λύσης 4.Κωδικοποίηση 5.Διόρθωση

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

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

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

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

Ο Οδηγός γρήγορης εκκίνησης

Ο Οδηγός γρήγορης εκκίνησης Ο Οδηγός γρήγορης εκκίνησης του Microsoft PowerPoint 2013 έχει διαφορετική εμφάνιση από προηγούμενες εκδόσεις. Γι αυτό το λόγο, δημιουργήσαμε αυτόν τον οδηγό για να ελαχιστοποιήσουμε την καμπύλη εκμάθησης.

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

Οδηγίες συγγραφής αναφοράς (ΒΙΟ 230) «12 βήματα προς την επιτυχία» Βασίλης Προμπονάς Λευκωσία, 2018

Οδηγίες συγγραφής αναφοράς (ΒΙΟ 230) «12 βήματα προς την επιτυχία» Βασίλης Προμπονάς Λευκωσία, 2018 Οδηγίες συγγραφής αναφοράς (ΒΙΟ 230) «12 βήματα προς την επιτυχία» Βασίλης Προμπονάς Λευκωσία, 2018 Βήμα 1: Κατανοώ καλά το ζητούμενο 1. Διατυπώστε ένα βιολογικό ερώτημα που σας απασχολεί εξηγώντας συνοπτικά

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

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

Από τη UML στον Κώδικα. Μέρος Β Από τη UML στον Κώδικα Μέρος Β περιεχόμενα παρουσίασης Αμφίδρομες συσχετίσεις Συσσωμάτωση Σύνθεση Διαγράμματα ακολουθίας αμφίδρομες συσχετίσεις Μία αμφίδρομη συσχέτιση υλοποιείται με δύο μονόδρομες. Υπάρχει

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

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

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

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