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

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

Download "ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ Διπλωματική Εργασία του Θωμά Σέγκουλη (ΑΕΜ: 1224) Επιβλέπων Καθηγητής: Ιωάννης Σταμέλος ΘΕΣΣΑΛΟΝΙΚΗ ΙΟΥΛΙΟΣ 2014

2 -ii-

3 Ευχαριστίες Η εκπονηση της εργασιας εγινε στο εργαστηριο Γλωσσων Προγραμματισμου και Τεχνολογιας Λογισμικου (Programming Languages and Software Engineering Laboratory PLaSE Laboratory) του Τμηματος Πληροφορικης του Α.Π.Θ., σε συνεργασια με την ομαδα Τεχνολογιας Λογισμικου (Software Engineering Group SWENG Group), υπο την επιβλεψη του καθηγητη Ιωαννη Σταμελου. Θα ηθελα να τον ευχαριστησω για την υποστηριξη και την εμπιστοσυνη που μου εδειξε ολο αυτο το διαστημα. Θα ηθελα επισης να ευχαριστησω τον Αποστολο Κριτικο για την πολυτιμη βοηθεια του στα προβληματα που παρουσιαστηκαν κατα την εκπονηση της εργασιας αυτης αλλα και για την εμπνευση που μου εδωσε. Τελος θελω να ευχαριστησω την οικογενεια μου αλλα και οσους σταθηκαν διπλα μου ολο αυτο το διαστημα, για την ανυπολογιστη υποστηριξη και υπομονη που μου εδειξαν. -iii-

4 -iv-

5 Περιεχόμενα ΕΥΧΑΡΙΣΤΙΕΣ...IIΙ ΠΕΡΙΕΧΟΜΕΝΑ...V 1 ΕΙΣΑΓΩΓΗ Δομη Εργασιας...I 2 COPE Περιγραφη COPE Επιπεδα COPE Αναλυτες (Analyzers) Εισηγητες Συστατικων (Component Recommenders) Δημιουργοι Συστατικων (Component Makers) Προσαρμογη για Android εργα Σεναριο Χρησης ANDROID DEVELOPMENT Βασικα συστατικα Activities Services Content Providers Broadcast Receivers Ενεργοποιηση βασικων συστατικων Ενεργοποιηση Activities Μεταφορα δεδομενων μεταξυ Activities Ενεργοποιηση Services Αποστολη broadcast γεγονοτων Fragments Κυκλος ζωης ενος Fragment Συμβατοτητα με παλαιοτερες εκδοσεις Android Επικοινωνια των Fragment με την εφαρμογη Android Manifest Υποστηριξη Ποικιλων Οθονων Μετρικες Οθονης v-

6 3.5.2 Σχεδιαση ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΣΥΣΤΑΤΙΚΩΝ Επαναχρησιμοποιησιμα Android συστατικα Αναλυση μεθοδολογιας Βασικα βηματα προσαρμογης Ενσωματωση επαναχρησιμοποιησιμων συστατικων Αναλυση εξαχθεντων συστατικων απο το COPE Database Manager Horizontal ListView Http-Request Handler ImagePager Activity ConfirmDialog + AsyncTask ΑΝΑΠΤΥΞΗ ANDROID ΕΡΓΟΥ Απαιτησεις Σχεδιαση Υλοποιηση ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΗ ΕΡΓΑΣΙΑ ΒΙΒΛΙΟΓΡΑΦΙΑ ΠΑΡΑΡΤΗΜΑ Ι vi-

7 1. ΕΙΣΑΓΩΓΗ Παρα την αλματωδη αναπτυξη της βιομηχανιας εξυπνων κινητων συσκευων (smartphones), βρισκομαστε μολις στο ξεκινημα της. Η ταχυτατη ενσωματωση των συσκευων αυτων, στην καθημερινοτητα των ανθρωπων τα τελευταια χρονια, προμηνυει μεγαλες αλλαγες στην ηδη υπαρχουσα τεχνολογια. Έτσι λοιπον κρινεται αναγκαια η επανεξεταση των ηδη υπαρχοντων μοντελων αναπτυξης λογισμικου, οι οποιες δεν καλυπτουν επαρκως την αναπτυξη εφαρμογων για κινητες συσκευες και μπορει να αποδειχθουν προβληματικες. Οι συνεχεις αλλαγες στην τεχνολογια των κινητων συσκευων πρεπει να μπορουν να διαχειριζονται απο τα επιλεγμενα μοντελα αναπτυξης, προσφεροντας ευελιξια στις απαιτησεις, επαναληπτικες διαδικασιες αναπτυξης καθως και στερεες μεθοδους ελεγχου. Η πτυχιακη αυτη, πραγματευεται τη βελτιστοποιηση των μοντελων αναπτυξης λογισμικου για κινητες συσκευες, εφαρμοζοντας μεθοδους επαναχρησιμοποιησης συστατικων λογισμικου. Η επαναχρησιμοποιηση λογισμικου μπορει να επιταχυνει σε μεγαλο ποσοστο την αναπτυξη εργων, παρεχοντας κωδικα καλυτερης ποιοτητας, κατι που μπορει να ωθησει την αναπτυξη μικροτερων επιχειρησεων και να τις καταστησει ανταγωνισιμες μπροστα σε μεγαλυτερες. 1.1 Δομή Εργασίας Ακολουθει συντομη περιγραφη του περιεχομενου των επομενων κεφαλαιων αυτης της εργασιας: Δεύτερο κεφάλαιο: COPE Σε αυτο το κεφαλαιο μελεταται η διαδικασια εντοπισμου και της εξαγωγης επαναχρησιμοποιησιμων συστατικων Android λογισμικου απο πηγαιο κωδικα ανοικτου λογισμικου κανοντας χρηση του COPE εργαλειου. -1-

8 Τρίτο κεφάλαιο: Android development Περιγραφη του Android συστηματος, αναλυοντας τα βασικα συστατικα του καθως και τροπους υποστηριξης διαφορετικων συσκευων. Τέταρτο κεφάλαιο: Επαναχρησιμοποίηση Συστατικών Στο κεφαλαιο αυτο παρουσιαζονται τα επαναχρησιμοποιησιμα συστατικα λογισμικου που εξηχθησαν με το εργαλειο COPE απο Android κωδικα ανοικτου λογισμικου, οπως επισης και μια μεθοδολογια προσαρμογης και χρησης τους. Πέμπτο κεφάλαιο: Ανάπτυξη Android Έργου Στο κεφαλαιο αυτο, παρουσιαζεται η αναπτυξη ενος Android εργου, ενσωματωνοντας τα επαναχρησιμοποιησιμα συστατικα που παρουσιαστηκαν στο προηγουμενο κεφαλαιο. Έκτο κεφάλαιο: Συμπεράσματα Και Μελλοντική Εργασία Γινεται μια συντομη ανασκοπηση του τι υλοποιηθηκε και τι αποτελει μελλοντικη εργασια, καθως και μια μικρη αναφορα στα προβληματα και στις δυσκολιες που αντιμετωπιστηκαν. -2-

9 2. COPE Η διαδικασια επαναχρησιμοποιησης λογισμικου αποτελειται απο τα εξης τρια βασικα σταδια: Εντοπισμος πιθανων επαναχρησιμοποιησιμων συστατικων Εξαγωγη επαναχρησιμοποιησιμων συστατικων Χρηση επαναχρησιμοποιησιμων συστατικων Σε αυτο το κεφαλαιο γινεται η μελετη του πρωτου και του δευτερου σταδιου, δηλαδη του εντοπισμου και της εξαγωγης επαναχρησιμοποιησιμων συστατικων λογισμικου απο πηγαιο κωδικα ανοικτου λογισμικου (Free/Libre Open Source Software F/LOSS). 2.1 Περιγραφή COPE Η επαναχρησιμοποιηση συστατικων λογισμικου αποτελει ενα πολυ σημαντικο κομματι κατα τη διαδικασια αναπτυξης ενος εργου λογισμικου, αλλα δεν λαμβανει χωρα παντα. Πολλες εταιρειες που παραγουν λογισμικο εχουν υιοθετησει το δικο τους μοντελο επαναχρησιμοποιησης με βαση τις απαιτησεις τους, αλλα κωλυονται στην εφαρμογη του τις περισσοτερες φορες, λογω ελλειψης χρονου, κακου προγραμματισμου η απουσιας βοηθητικων εργαλειων. Στα πλαισια αυτης της πτυχιακης, παρουσιαζεται το COPE περιβαλλον (Component Adaptation Environment), που κυριο στοχο εχει τον ευκολο εντοπισμο και εξαγωγη συστατικων λογισμικου, μεσω των αυτοματων διεργασιων του. Προς το παρον υποστηριζονται μονο Java εφαρμογες, ομως λογω της ουδετεροτητας του μοντελου του, ειναι δυνατη η επεκταση του για την υποστηριξη διαφορετικων γλωσσων προγραμματισμου και τεχνολογιων. To COPE αναπτυχθηκε στα πλαισια του ευρωπαϊκου ερευνητικου εργου OPEN-SME, που εχει ως στοχο την παροχη ετοιμων και αυτονομων συστατικων λογισμικου απο εργα ανοικτου κωδικα (Open Source Software). -3-

10 2.2 Επίπεδα COPE Το COPE ειναι δομημενο σε τρια επιπεδα, τα οποια εκτελουνται ακολουθιακα για την εξαγωγη συστατικων λογισμικου απο τον Μηχανικο Επαναχρησιμοποιησης, το ατομο δηλαδη που ασχολειται με τον εντοπισμο και τη χρηση των συστατικων λογισμικου. Τα επιπεδα αυτα (βλεπε εικονα 2.1) παρουσιαζονται στην συνεχεια. Πριν την δημιουργια του επαναχρησιμοποιησιμου εργου στο COPE, υπαρχει ενα προπαρασκευαστικο σταδιο κατα το οποιο ο Μηχανικος Επαναχρησιμοποιησης συγκεντρωνει ενα συνολο αντικειμενων (artifacts), του υποψηφιου εργου που προκειται να εισαχθει στο COPE. Τα αντικειμενα αυτα ειναι απαραιτητα για την λειτουργια του COPE και εισαγονται σε αυτο σε αρχικο σταδιο κατα τη δημιουργια του επαναχρησιμοποιησιμου εργου. Τα αντικειμενα αυτα ειναι τα εξης: Δυαδικο αρχειο του μεταγλωττισμενου εργου (JAR αρχειο) Εξωτερικες βιβλιοθηκες που χρησιμοποιουνται στο εργο (JAR αρχεια) Προαιρετικα, URL του συστηματος ελεγχου εκδοσης του εργου (Version Control System) -4- Πηγαιος κωδικας του εργου

11 Εικόνα 2.1: Επιπεδα COPE Αναλυτές (Analyzers) Στο αρχικο επιπεδο γινεται η αναλυση του εισαχθεντος στο COPE, εργου και επειτα αποθηκευση των αποτελεσματων στη βαση δεδομενων του COPE. Σε αυτο το σταδιο υποστηριζονται τα ακολουθα: -5-

12 Στατική Ανάλυση Γινεται υπολογισμος διαφορων μετρικων και εξαρτησεων, αναλυοντας τον πηγαιο κωδικα με στατικο τροπο, δηλαδη χωρις να ειναι απαραιτητη η εκτελεση του εργου. Ευρετηρίαση Πηγαίου Αρχείου Δημιουργια ευρετηριου των πηγαιων αρχειων, καταλληλο για αναζητηση ελευθερου κειμενου (free-text searching). Παραγωγή Τεκμηρίωσης Δημιουργια εγγραφου τεκμηριωσης του πηγαιου κωδικα (Javadoc), με επιπλεον UML διαγραμματα για καθε κλαση και πακετο. Δυναμική Ανάλυση Αναλυση του εργου, εκτελωντας δυναμικη αναλυση (δηλαδη εκτελωντας το). Ο Μηχανικος Επαναχρησιμοποιησης χρησιμοποιει δυναμικη αναλυση μετα το σταδιο εξαγωγης του συστατικου, ετσι ωστε να κατανοησει την λειτουργια του, να καθορισει την καλυψη της αναλυσης αυτης, και να το επικυρωσει, κανοντας χρηση τεχνικων ελεγχου, βασιζομενων στο μοντελο. Ανάλυση Ιστορικού Αποθηκευση αλλαγων που συνεβησαν στο ιστορικο αναπτυξης του εργου, για χρηση στα Subversion αποθετηρια (Subversion repositories). Προς το παρον αυτο το χαρακτηριστικο δεν χρησιμοποιειται για την εισηγηση συστατικων, ομως προβλεπεται η χρηση του στο μελλον. Ανάλυση Προτύπων Χρηση τεχνικων ανιχνευσης, οπως για παραδειγμα ανιχνευση του προσαρμογεα (Adapter) η προτυπων σχεδιασης πληρεξουσιου [4], για τον εντοπισμο κλασεων που συμμετεχουν σε προτυπα σχεδιασης. -6-

13 2.2.2 Εισηγητές Συστατικών (Component Recommenders) Αυτο το επιπεδο περιλαμβανει ενα συνολο μεθοδων, οι οποιες ειναι διαθεσιμες αφοτου αναλυθει το εργο απο το COPE, και σκοπος τους ειναι η προταση συσταδων κλασεων, οι οποιες θα μπορουσαν να σχηματισουν ανεξαρτητα συστατικα λογισμικου. Το COPE περιεχει τις εξης μεθοδους για την εισηγηση τετοιων συσταδων κλασεων: Εισηγητής εξάρτησης (Dependencies Recommender) Η μεθοδος αυτη, χρησιμοποιει ενα γενετικο αλγοριθμο για το σχηματισμο συσταδων κλασεων. Εισηγητής προτύπων (Pattern Recommender) Αυτη η μεθοδος σχηματιζει συσταδες κλασεων απο προτυπα σχεδιασης που εντοπιζονται στον πηγαιο κωδικα. Η ανιχνευση και ο εντοπισμος των προτυπων αυτων επιτυγχανεται με τη μεθοδο και τα εργαλεια που περιγραφονται στο [3]. Εισηγητής επαναχρησιμοποίησης (Reusability Recommender) Εξαγαγει και προτεινει μια συσταδα κλασεων, επειτα απο την επιλογη μιας κλασης. Το επαναχρησιμοποιησιμο συστατικο που παραγεται σαν αποτελεσμα αυτης της μεθοδου, θα περιεχει μια διεπαφη των δημοσιων μεθοδων της κλασης αυτης οπως επισης και το συνολο των απαραιτητων κλασεων, απο τις οποιες εξαρταται Δημιουργοί συστατικών (Component Makers) Αυτο το επιπεδο περιλαμβανει τις απαραιτητες μεθοδους για την εξαγωγη επαναχρησιμοποιησιμου συστατικου απο το εργο που εχει εισαχθει στο COPE. Η -7-

14 εξαγωγη μπορει να γινει ειτε επειτα της χρησης ενος εισηγητη συστατικων του προηγουμενου επιπεδου η επιλεγοντας μια κλαση χειροκινητα, η οποια εξαγεται μαζι με τις κλασεις με τις οποιες συσχετιζεται. Υπαρχουν τεσσερις διαθεσιμες μεθοδοι, δημιουργιας συστατικων, στο COPE: Δημιουργός διεπαφής (Interface Maker) Δημιουργια συστατικου επειτα απο την επιλογη μιας κλασης του εργου και προσθεση ολων των εξαρτησεων της. Δημιουργός εξάρτησης (Dependency Maker) Για την δημιουργια του συστατικου, χρησιμοποιει τις συσταδες που παραχθηκαν απο τον Εισηγητη εξαρτησης. Δημιουργός προτύπου προσαρμογέα (Adapter Pattern Maker) Για τη δημιουργια του συστατικου, χρησιμοποιει κλασεις που υλοποιουν το προτυπο σχεδιασης προσαρμογεα (Adapter design pattern). Δημιουργός προτύπου πληρεξούσιου (Proxy Pattern Maker) Για τη δημιουργια του συστατικου, χρησιμοποιει κλασεις που υλοποιουν το προτυπο σχεδιασης πληρεξουσιου (Proxy design pattern). 2.3 Προσαρμογή για Android έργα Όπως αναφερθηκε προηγουμενως, η ροη εργασιων του COPE εργαλειου, εφαρμοζεται για εργα λογισμικου, των οποιων ο πηγαιος κωδικας ειναι γραμμενος σε JAVA. Έτσι ειναι δυνατον να εφαρμοστoυν ολες οι μεθοδοι του COPE, εισαγοντας Android εργα που και αυτα ειναι κωδικοποιημενα σε JAVA. Υπαρχει ομως μια σημαντικη διαφορα για τα Android εργα, καθοτι εκτος απο πηγαιο κωδικα σε JAVA, συμπεριλαμβανουν υποχρεωτικα και αλλα αρχεια (XML για παραδειγμα), που οριζουν την γραφικη διεπαφη χρηστη καθως και αλλους πορους η ρυθμισεις του συστηματος. Οποτε η υπαρξη αυτων των αρχειων προσθετει επιπλεον -8-

15 πολυπλοκοτητα και εξαρτησεις για τον Μηχανικο Επαναχρησιμοποιησης, που ειναι αναγκασμενος να τις συμπεριλαβει στα εξαχθεντα συστατικα. Επισης για Έργα Android δεν ειναι απαραιτητη η υπαρξη ενος αρχειου Interface και συνεπως δεν απαιτειται η δημιουργια ενος τετοιου αρχειου. 2.4 Σενάριο Χρήσης Παρουσιαζεται ενα σεναριο χρησης του COPE, για την εξαγωγη συστατικου απο Android εργο, το οποιο χρησιμοποιειται επειτα στα πλαισια αυτης της πτυχιακης και περιγραφεται στην παραγραφο. Βήμα 1. Δημιουργια νεου εργου επαναχρησιμοποιησης και εισαγωγη απαραιτητων αντικειμενων (artifacts) του Android εργου, ετσι ωστε να ειναι δυνατη η εισαγωγη και αναλυση του. Εικόνα 2.2: Δημιουργια νεου εργου επαναχρησιμοποιησης -9-

16 Βήμα 2. Εκτελεση Στατικης Αναλυσης Εικόνα 2.3: Εκτελεση Στατικης Αναλυσης Βήμα 3. Αποτελεσματα Στατικης Αναλυσης. Στο παραθυρο αυτο παρουσιαζονται ολες οι κλασεις απο τις οποιες μπορουν να προκυψουν επαναχρησιμοποιησιμα συστατικα, καθως και διαφορες μετρικες που προσφερουν επιπλεον πληροφορια σχετικα με την κλαση αυτη καθως και εναν δεικτη επαναχρησιμοποιησης της. Εικόνα 2.4: Αποτελεσματα Στατικης Αναλυσης -10-

17 Βήμα 4. Επιλογη και εξαγωγη συστατικου, επιλεγοντας την κλαση HttpRequest Εικόνα 2.5: Εξαγωγη Επαναχρησιμοποιησιμου Συστατικου Βήμα 5. Εμφανιση φακελου που περιεχει τα επαναχρησιμοποιησιμα συστατικα ενος εργου στο COPE. Στον φακελο generated βρισκεται ο πηγαιος κωδικας των συστατικων και στον φακελο l i b, οι εξωτερικες βιβλιοθηκες (JAR files) που χρησιμοποιηθηκαν κατα της εισαγωγη του εργου. Εικόνα 2.6: Φακελος που περιεχει τα Επαναχρησιμοποιησιμα Συστατικα -11-

18 3. ANDROID DEVELOPMENT Το Αndroid ειναι ενα λειτουργικο συστημα για κινητες συσκευες, βασισμενο σε τροποποιημενο πυρηνα linux. Η αναπτυξη του ξεκινησε το 2005 απο μια νεα ομωνυμη εταιρεια, την Android Inc. και στην συνεχεια αγοραστηκε απο την Google η οποια ειχε μολις εισχωρησει στο πεδιο των εφαρμογων για κινητες συσκευες. Το εργο για την αναπτυξη του Android λειτουργικου συστηματος ονομαζεται Android Open Source Project (AOSP) και καθοδηγειται κυριως απο την Google, η οποια επιθυμει το συστημα να ειναι ανοικτου κωδικα και δωρεαν και ως εκτουτου το διανεμει υπο τους ορους της Apache License, μιας ελευθερης αδειας λογισμικου. Πολλοι κατασκευαστες κινητων συσκευων εκμεταλλευομενοι αυτη τη δυνατοτητα, προσθετουν τις δικες τους ιδιοκτητες επεκτασεις πανω στο Android συστημα και δημιουργουν ενα προσαρμοσμενο στις αναγκες τους οικοσυστημα διεπαφης χρηστη, ωστε να διαφοροποιηθουν απο τους ανταγωνιστες τους. Αυτη η χρηση του Android λειτουργικου συστηματος εδωσε πλεονεκτημα σε πολλες εταιρειες που κατασκευαζουν εξυπνες κινητες συσκευες εναντι της Apple, που κατειχε το μεγαλυτερο μεριδιο της αγορας, αναζωογονωντας τα προϊοντα τους. Η τρεχουσα εκδοση του Android ειναι η 4.4 (KitKat) και η ελαχιστη που υποστηριζεται απο το Google Play Store ειναι η 2.2 (Froyo). Το Android συστημα ειναι δυνατον να ενσωματωθει σε πληθωρα συσκευων περα των εξυπνων κινητων τηλεφωνων και αξιζει να σημειωθει οτι η εκδοση 3.0 (Honeycomb) δημιουργηθηκε και εκδοθηκε εχοντας ως στοχο τη βελτιστη υποστηριξη συσκευων με μεγαλες οθονες και συγκεκριμενα των tablets. Έκδοση Κωδικη ονομασια API Κατανομη 2.2 Froyo 8 0.8% Gingerbread % Ice Cream Sandwich %

19 4.1.x % 4.2.x % % % 4.4 Jelly Bean KitKat Πινακας 3.1: Κατανομη των εγκατεστημενων εκδοσεων Android σε συσκευες, βαση δεδομενων που συλλεχθηκαν μεχρι και τις 4 Ιουνιου, Βασικά συστατικά Η αναπτυξη μιας Αndroid εφαρμογης βασιζεται σε τεσσερα θεμελιωδη συστατικα. Τα συστατικα αυτα παρεχουν τις απαραιτητες διασυνδεσεις με το συστημα, εχοντας καθενα απο αυτα συγκεκριμενο ρολο καθολη τη διαρκεια ζωης της εφαρμογης. Δεν ειναι απαραιτητη η χρηση ολων αυτων των συστατικων σε καθε εφαρμογη και καποια απο αυτα δεν ειναι απαραιτητα για τη διασυνδεση με το χρηστη, ομως καθε ενα απο αυτα εξυπηρετει μοναδικο σκοπο με τον διαφορετικο κυκλο ζωης του Activities Ένα Activity συστατικο αναπαριστα ενα παραθυρο σε μια εφαρμογη και περιεχει τις λειτουργικοτητες που απαιτουνται για τη διεπαφη με το χρηστη. Μια εφαρμογη μπορει να περιεχει μηδεν η παραπανω Activities, ομως ειναι κοινη τακτικη να υπαρχει τουλαχιστον ενα Activity και κυριος σκοπος του ειναι η αλληλεπιδραση με το χρηστη. Απο την στιγμη που πυροδοτειται ενα Activity και εμφανιζεται το αντιστοιχο παραθυρο, ξεκινα και ο κυκλος ζωης του, ο οποιος αποτελειται απο εναν αριθμο σταδιων. Η κατανοηση του κυκλου ζωης ενος Activity ειναι ζωτικης σημασιας για τον προγραμματιστη για την εξασφαλιση της σωστης λειτουργιας της εφαρμογης, που δεν θα ειναι επιρρεπης σε σφαλματα. Οι εφαρμογες για εξυπνα κινητα τηλεφωνα ειναι απο τη φυση τους πιο απαιτητικες συγκριτικα με τις desktop εφαρμογες, καθως οι κινητες συσκευες προσφερουν μια πληθωρα διασυνδεσεων με το χρηστη και ταυτοχρονα εχουν περιορισμενους πορους. Επιπλεον βασικη τους -13-

20 προτεραιοτητα ειναι η ομαλη εμπειρια και πλοηγηση του χρηστη με τις εφαρμογες, και για να επιτευχθει αυτο θα πρεπει να χρησιμοποιουνται τα Activities με συνεση, καταναλωνοντας οσο το δυνατον λιγοτερους πορους και παρεχοντας γρηγορη και σωστη αποκριση επειτα απο ενεργειες του χρηστη. Ένα Activity αποτελει μια θυγατρικη κλαση και για να την χρησιμοποιησουμε ειναι απαραιτητη η δημιουργια μιας κλασης που την κληρονομει. Η θυγατρικη κλαση Activity οριζει ενα συνολο απο μεθοδους οι οποιες αποτελουν γεγονοτα του κυκλου ζωης της. Καθε μεθοδος της ενεργεια Activity πυροδοτειται επειτα απο αλλαγη καταστασης της εφαρμογης. Μια κλαση Activity οριζει τις παρακατω μεθοδους που αντικατοπτριζουν τον κυκλο ζωης της: oncreate() - Καλειται οταν δημιουργειται η Activity onstart() - Καλειται οταν η Activity γινεται ορατη στον χρηστη onresume() - Καλειται οταν η Activity ξεκινα την αλληλεπιδραση με το χρηστη onpause() - Καλειται οταν η Activity περνα στο παρασκηνιο η αναστελλεται onstop() - Καλειται οταν η Activity δεν ειναι πλεον ορατη στο χρηστη ondestroy Καλειται πριν η Activity καταστραφει, ειτε λογω συμπεριφορας του προγραμματος η απο το συστημα προσπαθωντας να εξοικονομησει μνημη onrestart Καλειται οταν μια Activity εχει σταματησει (μετα την κληση onstop()) και κανει επανεκκινηση Ακολουθει διαγραμμα καταστασεων που αναπαριστα τον κυκλο ζωης μιας Activity παρουσιαζοντας την ακολουθια κλησεων των γεγονοτων. -14-

21 Εικόνα 3.1: Κυκλος ζωης μιας Activity κλασης Services Ένα Service ειναι ενα συστατικο που χρησιμοποιειται για εκτελεση στο παρασκηνιο της εφαρμογης χωρις αμεση αλληλεπιδραση με την διεπαφη χρηστη. Επομενως δεν συσχετιζεται με τον κυκλο ζωης της εφαρμογης και την εκτελεση μιας Activity που περιγραφηκε στην προηγουμενη παραγραφο. Σκοπος του ειναι η εκτελεση εργασιων που απαιτουν μεγαλο χρονικο διαστημα διεκπεραιωσης οπως για παραδειγμα προσβαση σε web-services η μεταφορα δεδομενων απο και προς τη βαση δεδομενων. Τα Services εχουν μεγαλυτερη προτεραιοτητα συγκριτικα με ανενεργα Activities και επομενως ειναι λιγοτερο πιθανο να τερματιστουν απο το Android -15-

22 συστημα, που επιδιωκει να διατηρει στην κυρια μνημη μονο τις απαραιτητες διεργασιες για τον χρηστη. Σε περιπτωση που καποιο Service τερματιστει απο το συστημα, ειναι δυνατη η επαναφορα του οταν βρεθουν διαθεσιμοι ποροι για την εκτελεση του, με τον ιδιο τροπο που καλειται η OnRestart() μεθοδος στα Activities, για επανεκκινηση τους. Τα Services εκτελουνται στην ιδια διεργασια με το κυριως νημα της εφαρμογης, ως εκ τουτου θα μπορουσαν να υπερφορτωσουν την λειτουργια της και να προκαλεσουν καθυστερησεις στην αλληλεπιδραση με τον χρηστη. Επομενως συνισταται η χρηση μεθοδων ασυγχρονης εκτελεσης σε ξεχωριστο νημα και εμφανιση καταλληλης ειδοποιησης προς τον χρηστη οταν το Service τελειωσει την διεργασια του, στο κυριως νημα της εφαρμογης. Υπαρχουν διαφοροι τροποι ασυγχρονης εκτελεσης διεργασιων σε παραλληλο νημα απο το κυριως της εφαρμογης, στο Android συστημα και θα αναλυθουν σε επομενο κεφαλαιο. Η δημιουργια δικης μας υλοποιησης ενος Service, ειναι δυνατη και γινεται κληρονομωντας την θυγατρικη κλαση Service η την IntentService. Ο κυκλος ζωης ενος Service συστατικου, μπορει να ακολουθησει δυο μονοπατια, τα οποια σχετιζονται με το βαθμο ανεξαρτησιας του σε σχεση με τα συστατικα που το πυροδοτησαν. Οι δυο μορφες που μπορει να παρει ενα Service ειναι οι εξης: Started Service Το Service συστατικο δημιουργειται οταν καποιο αλλο συστατικο (ενα Activity) καλει την startservice() μεθοδο. Σε αυτην την περιπτωση το Service εκτελειται επ 'αοριστον στο παρασκηνιο και ειναι το ιδιο υπευθυνο για τον τερματισμο του, καλωντας την stopself() μεθοδο. Ειναι δυνατον να τερματιστει απο αλλο συστατικο οταν αυτο καλει την stopservice() μεθοδο. Ειναι ομως ειναι συνηθες να εκτελει μια λειτουργια ανεξαρτητα απο το συστατικο που το καλεσε, χωρις την επιστροφη αποτελεσματος. Όταν το Service σταματησει τη λειτουργια του, το συστημα το καταστρεφει. Bound Service Το Service αυτο δημιουργειται οταν καποιο αλλο συστατικο, ονομαζομενο client καλει την bindservice() μεθοδο. Ένα bound Service προσφερει client-server διεπαφη -16-

23 η οποια επιτρεπει την αλληλεπιδραση με αλλα συστατικα, δινοντας τους τη δυνατοτητα να στελνουν requests, να παιρνουν αποτελεσματα, οπως επισης να το επιτυγχανουν αυτο διαμεσου διαφορετικων διεργασιων με ενδοεπικοινωνια (IPC). Ένα bound Service εκτελειτε οσο ενα αλλο συστατικο, client ειναι δεμενο μαζι του και το οποιο μπορει να τερματισει την επικοινωνια, καλωντας την unbindservice() μεθοδο. Πολλαπλα συστατικα, clients, μπορουν να ειναι δεμενα την ιδια χρονικη στιγμη με το Service συστατικο, το οποιο καταστρεφεται οταν ολα αυτα αποδεσμευτουν. Μια κλαση Service οριζει τα παρακατω γεγονοτα που αντικατοπτριζουν τον κυκλο ζωης της: onstartcommand() - Καλειται οταν ενα αλλο συστατικο, οπως ενα Activity, πυροδοτει το Service, με την startservice() μεθοδο και ξεκινα τη λειτουργια του. Για τις Bounded Services δεν ειναι απαραιτητη η υλοποιηση αυτης της μεθοδου. onbind() - Καλειται οταν ενα συστατικο δενεται(bind) με το Service καλωντας την bindservice() μεθοδο(π.χ.για την εκτελεση RPC). Για την υλοποιηση αυτης της μεθοδου ειναι απαραιτητη η παροχη μιας διεπαφης, για την επικοινωνια clientservice, επιστρεφοντας μια IΒinder παραμετρο. οncreate() - Καλειται κατα τη δημιουργια του Service συστατικου. ondestroy() - Καλειται κατα τον τερματισμο του Service συστατικου. Ακολουθει διαγραμμα καταστασεων που αναπαριστα τον κυκλο ζωης ενος Started Service και ενος Bound Service παρουσιαζοντας την ακολουθια κλησεων των γεγονοτων. -17-

24 Εικόνα 3.2: Κυκλος ζωης μιας Service κλασης Content Providers Ένα Content Provider συστατικο οριζει μια δομημενη διεπαφη για την προσβαση σε δεδομενα της εφαρμογης και μπορει να χρησιμοποιηθει για τον διαμερισμο δεδομενων με αλλες εφαρμογες. Συχνα χρησιμοποιειται σε συνδυασμο με την SQLite βαση δεδομενων που παρεχεται απο το Android συστημα. Μια SQLite βαση δεδομενων αποθηκευει δεδομενα που παρεχονται απο ενα Content Provider. Η προσβαση σε δεδομενα διαμεσου του Content Provider επιτυγχανεται με χρηση του ContentResolver αντικειμενου μεσα στην εφαρμογη. Το ContentResolver αντικειμενο επικοινωνει με το αντικειμενο του Provider, ενα στιγμιοτυπο της κλασης που υλοποιει το Content Provider συστατικο. Το Provider αντικειμενο λαμβανει αιτησεις για αποστολη δεδομενων απο clients, εκτελει την απαιτουμενη -18-

25 ενεργεια και επιστρεφει τα αποτελεσματα. Εικόνα 3.3: Content Provider Broadcast Receivers Ένα Broadcast Receiver (Receiver) συστατικο, χρησιμοποιειται για τη ληψη και τον χειρισμο γεγονοτων του συστηματος η της εφαρμογης. Για την ληψη ενος γεγονοτος, ειναι απαραιτητο να δηλωσει αρχικα ο Receiver οτι το προσμενει. Τη στιγμη που θα συμβει το γεγονος, αυτοματα στελνεται ειδοποιηση απο το Android συστημα σε ολους τους Receiver που εχουν δηλωθει για αυτο και περιμενουν να ενημερωθουν. Ένα Receiver συστατικο δηλωνεται αρχικα στο AndroidManifest.XML αρχειο και επειτα περιμενει στο παρασκηνιο, ανενεργο, μεχρι να συμβει το γεγονος που προσμενει, επειτα να ξεκινησει τη λειτουργια του και να το χειριστει. Η δημιουργια δικης μας υλοποιησης ενος Broadcast Receiver, ειναι δυνατη και γινεται κληρονομωντας την θυγατρικη κλαση BroadcastReceiver η μια απο τις υποκλασεις της, που παρεχονται απο το Android συστημα και προσφερουν προσθετες λειτουργικοτητες αναλογως το πεδιο εφαρμογης, οι οποιες ειναι οι εξης: -19-

26 AppWidgetProvider, DeviceAdminReceiver, WakefulBroadcastReceiver. Το Broadcast Receiver συστατικο ειναι ενεργο μονο κατα τη διαρκεια κλησης της onreceive(context, Intent) μεθοδου του, η οποια καλειται οταν ληφθει το γεγονος για το οποιο ειχε δηλωθει. Σε αυτο το χρονικο διαστημα που ειναι ενεργο, ειναι δυνατον να χρησιμοποιηθουν και οι υπολοιπες μεθοδοι του συστατικου αυτου ωστε να εμφανιστει και να επεξεργαστει το αποτελεσμα που ληφθηκε. Κατα τη διαρκεια που ο Broadcast Receiver εκτελειται στο κυριως νημα της εφαρμογης, δεν επιτρεπεται η εναρξη χρονοβορων διεργασιων απο αυτον, διοτι το συστημα επιτρεπει ενα παραθυρο δεκα δευτερολεπτων για την ολοκληρωση του, μετα το οποιο ειναι πιθανον αυτος να τερματιστει. Σαν παραδειγμα ακολουθει μια υλοποιηση ενος Broadcast Receiver που χρησιμοποιειται για την υποδοχη Notification απο τον GCM (Google Cloud Messaging) διακομιστη. public class GcmBroadcastReceiver extends WakefulBroadcastReceiver public void onreceive(context context, Intent intent) { // Explicitly specify that GcmIntentService will handle the intent. ComponentName comp = new ComponentName(context.getPackageName(),GcmIntentService.class.getName()); // Start the service, keeping the device awake while it is launching. startwakefulservice(context, (intent.setcomponent(comp))); setresultcode(activity.result_ok); } } Σε αυτο το παραδειγμα γινεται χρηση της WakefulBroadcastReceiver κλασης. Αυτη αποτελει μια υποκλαση της θυγατρικης BroadcastReceiver οπως αναφερθηκε προηγουμενως και λαμβανει γεγονοτα αφυπνισης συσκευης (device wakeup event). Όταν λαβει το γεγονος θετει σε λειτουργια ενα Service συστατικο το οποιο αναλαμβανει τη διεκπεραιωση μιας διεργασιας. Σημαντικο χαρακτηριστικο ενος WakefulBroadcastReceiver ειναι οτι δεν επιτρεπει την συσκευη να κλειδωσει, -20-

27 περνωντας σε ανενεργη κατασταση (sleep), κατα τη διαρκεια της λειτουργιας του, δηλαδη ενω καλει το Service συστατικο. Η εναρξη λειτουργιας του Service γινεται με κληση της μεθοδου startwakefulservice(context context, Intent intent) με περασμα των εξης παραμετρων: Context Αποτελει την διεπαφη που παρεχει καθολικες πληροφοριες σχετικα με το περιβαλλον αναπτυξης της εφαρμογης. Intent Ένα Intent συστατικο ειναι μια αφαιρετικη περιγραφη μιας διεργασιας που προκειται να εκτελεστει. Χρησιμοποιειται κυριως για την πυροδοτηση Activity και Service συστατικων. Όταν το Service ολοκληρωσει τη διεργασια που εκτελει, επιτρεπει στην συσκευη να μπορει να κλειδωσει (sleep) καλωντας τη συναρτηση completewakefulintent(intent). Η Intent παραμετρος ειναι η ιδια Intent που περασε αρχικα στο Service o WakefulBroadcastReceiver. Για να ξεκινησει ο κυκλος ζωης του παραπανω Receiver, ειναι απαραιτητο να εχει δηλωθει προηγουμενως στο AndroidManifest.XML αρχειο οπως παρουσιαζεται στο κομματι κωδικα που ακολουθει. <receiver Android:name="pushNotification.GcmBroadcastReceiver" Android:permission="com.google.Android.c2dm.permission.SEND" > <intent-filter> <action Android:name="com.google.Android.c2dm.intent.RECEIVE"/> <category Android:name="net.testproject.test" /> </intent-filter> </receiver> -21-

28 3.2 Ενεργοποίηση βασικών συστατικών Τα βασικα συστατικα του Android συστηματος (εκτος των content providers), οπως περιγραφηκαν παραπανω ενεργοποιουνται με τη χρηση μιας διεπαφης που ονομαζεται intent. Οι intent διεπαφες αποτελουν ουσιαστικα, ασυγχρονα μηνυματα τα οποια συγχρονιζουν και ενεργοποιουν τα αυτονομα βασικα συστατικα μιας εφαρμογης, σε χρονο εκτελεσης. Μπορουν να χαρακτηριστουν σαν διαβιβαστες μηνυματων που αιτουνται ενεργειες αλλων συστατικων. Επισης εχουν τη δυνατοτητα κλησης λειτουργιων συστατικων απο εξωτερικες εφαρμογες. Υπαρχουν δυο τυποι intents: Explicit intents (σαφείς intents) Τα intent συστατικα αυτου του τυπου προσδιοριζουν το συστατικο που προκειται να ενεργοποιηθει, παρεχοντας το ονομα του, οπως καθοριζεται απο το ονομα της κλασης του. Συνηθως χρησιμοποιειται για την ενεργοποιηση συστατικων εντος της εφαρμογης, γνωριζοντας το ονομα της κλασης που επιθυμουμε να καλεσουμε. Implicit intents (υπονοούμενοι intents) Τα intent συστατικα αυτου του τυπου δεν προσδιοριζουν με συγκεκριμενο τροπο το συστατικο που προκειται να ενεργοποιηθει με το ονομα του, αλλα δηλωνουν γενικα μια ενεργεια προς εκτελεση. Με αυτον τον τροπο επιτρεπεται η κληση ενος συστατικου εξωτερικης εφαρμογης, ωστε να διαχειριστει την επιθυμητη ενεργεια Ενεργοποίηση Activities Υπαρχουν δυο τροποι με τους οποιους μπορουμε να ενεργοποιησουμε Activities μεσω Intents και αυτοι αντικατοπτριζονται στις εξης δυο μεθοδους: -22-

29 startactivity(intent intent, Bundle options) ή startactivity(intent intent) Πυροδοτει ενα νεο Activity χωρις την επιστροφη πληροφοριας οταν αυτη τερματιστει. Παράμετροι intent: Η διεπαφη που παρεχει περιγραφη της υποψηφιας για εκτελεση Activity. options(προαιρετική): Επιπλεον πληροφοριες που καθοριζουν τον τροπο εναρξης του Activity. startactivityforresult(intent intent, int requestcode) ή startactivityforresult(intent intent, int requestcode, Bundle options) Πυροδοτει ενα νεο Activity για το οποιο επιστρεφει πληροφορια σαν αποτελεσμα τερματισμου της λειτουργιας του. Παράμετροι intent: Η διεπαφη που παρεχει περιγραφη της υποψηφιας για εκτελεση Activity. requestcode: Ακεραια τιμη, η οποια αν ειναι μεγαλυτερη η ιση του μηδενος, θα επιστραφει αποτελεσμα μολις τερματιστει η καλουμενη Activity. options (προαιρετική): Επιπλεον πληροφοριες που καθοριζουν τον τροπο εναρξης του Activity. -23-

30 Εικόνα 3.4: Ενεργοποιηση Activity με χρηση ενος intent. Πηγή: Στην εικονα 3.5 παρουσιαζεται διαγραμματικα η εκκινηση ενος Activity συστατικου απο ενα αλλο, με χρηση ενος intent. Στο διαγραμμα αυτο γινεται κατανοητη η λειτουργια ενος intent καθως και τα σταδια απο τα οποια περναει μεσα στο συστημα. Αρχικα το Activity A δημιουργει ενα intent, οριζοντας την ενεργεια που θα εκπληρωσει αυτο, και στη συνεχεια καλει την startactivity() μεθοδο περνωντας το intent σαν παραμετρο. Στη συνεχεια το Android συστημα αναζητει σε ολες τις εφαρμογες ενα intent που να ταιριαζει με αυτο που καλειται ελεγχοντας τα φιλτρα. Τελος το συστημα πυροδοτει το καταλληλο Activity συστατικο (Activity B) καλωντας την oncreate() μεθοδο του και περνωντας σαν παραμετρο το αρχικο intent. -24-

31 Εικόνα 3.5: Απεικονιση χρησης ενος explicit intent για την ενεργοποιηση ενος νεου Activity συστατικου Πηγή: Μεταφορά δεδομένων μεταξύ Activities Η μεταφορα δεδομενων αναμεσα σε Activities επιτυγχανεται ξανα με τη χρηση των intents. Οι intent διεπαφες μπορουν να περιεχουν επιπλεον δεδομενα, τα οποια μεταφερονται στο νεο Activity που ενεργοποιειται και μπορουν να εξαχθουν, χρησιμοποιωντας τις καταλληλες μεθοδους. Για την εισαγωγη δεδομενων καλειται η putextra() μεθοδος του intent αντικειμενου η οποια περιεχει δυο παραμετρους, που αντιπροσωπευουν ενα ζευγος κλειδιου/τιμης. Το κλειδι ειναι παντα τυπου String και αποτελει το αναγνωριστικο του δεδομενου που μεταφερεται. Η τιμη αποτελει την τιμη του δεδομενου το οποιο μπορει να ειναι πρωταρχικος τυπος δεδομενων (int, float, ) οπως επισης αντικειμενο τυπου String, Bundle, Parceable και Serializable. Έτσι δινεται η δυνατοτητα μεταφορας, ακομα και αντικειμενου αναμεσα σε Activities, με την προϋποθεση οτι η κλαση του αντικειμενου αυτου υλοποιει την αφηρημενη κλαση, Serializable. Το Activity συστατικο που καλειται μεσω ενος intent, μπορει να αποκτησει προσβαση στις πληροφοριες που μεταφερει αυτο καλωντας τις μεθοδους getaction() -25-

32 και getdata() του intent αντικειμενου. Το intent αντικειμενο λαμβανεται μεσω της getintent() μεθοδου. Όσο αφορα τα επιπλεον δεδομενα που εχουν σταλει μεσω της putextra() μεθοδου, μπορουν να ληφθουν απο το νεο Activity με την getintent().getextras() μεθοδο. Ακολουθει ενα κομματι κωδικα, σαν παραδειγμα, παρουσιαζοντας την ενεργοποιηση ενος Activity απο ενα αλλο, τη μεταφορα ενος πινακα απο αλφαριθμητικα (String), με χρηση της putextra() μεθοδου, καθως και τη ληψη και τον χειρισμο των δεδομενων απο το νεο Activity. Μεσα σε ενα Activity πυροδοτειται ενα νεο Activity, με ονομα PagerActivity κανοντας χρηση της intent διεπαφης και στελνοντας επιπλεον δεδομενα με την putextra() μεθοδο. Τα επιπλεον δεδομενα (fetchedimages), ειναι ενας πινακας αλφαριθμητικων, τα οποια απαιτουνται για την λειτουργια του νεου Activity και αντιστοιχουν στο κλειδι, Extra.IMAGES. Intent intent = new Intent(this, ImagePagerActivity.class); intent.putextra(extra.images, fetchedimages); startactivity(intent); Στο παρακατω κομματι κωδικα γινεται η ληψη των επιπλεον δεδομενων (πινακας αλφαριθμητικων) απο το μολις ενεργοποιημενο Activity, PagerActivity και αποθηκευση τους σε τοπικη μεταβλητη. Η διαχειριση των δεδομενων που μεταφερονται απο το intent συστατικο, λαμβανει χωρα στην oncreate() μεθοδο του νεου Activity, η οποια οπως αναφερθηκε σε προηγουμενη παραγραφο καλειται κατα την δημιουργια του και ειναι το καταλληλο σημειο. Bundle bundle = getintent().getextras(); assert bundle!= null; String[] imageurls = bundle.getstringarray(extra.images); -26-

33 3.2.3 Ενεργοποίηση Services Ένα Service συστατικο, οπως περιγραφηκε σε προηγουμενη παραγραφο, εκτελει διεργασιες στο παρασκηνιο της εφαρμογης και δεν παρεχει διασυνδεση με τη διεπαφη χρηστη. Ένα Service ενεργοποιειται, καλωντας την startservice() μεθοδο και περνωντας ενα intent συστατικο ως παραμετρο. Στην περιπτωση που υλοποιειται client-server διεπαφη με το Service, τοτε μπορει να δεθει (bind) με το συστατικο που το ενεργοποιει καλωντας την bindservice() μεθοδο και περνωντας ενα intent συστατικο σαν παραμετρο Αποστολή broadcast γεγονότων Ένα Broadcast Receiver συστατικο, οπως περιγραφηκε παραπανω χρησιμοποιειται για τη ληψη και τον χειρισμο broadcast γεγονοτων του συστηματος η της εφαρμογης. Η αποστολη ενος broadcast μηνυματος προς αλλες εφαρμογες απο ενα Activity γινεται περνωντας ενα intent συστατικο σαν παραμετρο σε μια απο τις ακολουθες μεθοδους: sendbroadcast(intent intent) Αποστολη broadcast της intent παραμετρου προς ολους τους Receivers που εχουν δηλωθει για το συγκεκριμενο γεγονος. Η κληση αυτης της μεθοδου ειναι ασυγχρονη και επιστρεφει αμεσα αποτελεσμα. Ενω εχει ολοκληρωθει η κληση της και η εκτελεση της εφαρμογης συνεχιζει, οι αντιστοιχοι Receivers εκτελουνται ταυτοχρονα. Δεν ειναι δυνατη η επιστροφη καποιας αναφορας απο τους Receivers, σχετικα με τη ληψη του γεγονοτος και επισης αυτοι δεν μπορουν να ματαιωσουν την broadcast μεταδοση. SendOrderedBroadcast(Intent intent, String receiverpermission) Αποστολη broadcast της intent παραμετρου προς ολους τους Receivers που -27-

34 εχουν δηλωθει για το συγκεκριμενο γεγονος. Με αυτη τη μεθοδο εξυπηρετειται ενας απο τους Receivers καθε στιγμη, ετσι ωστε να επιτραπει σε αυτους που εχουν μεγαλυτερη βαρυτητα να καταναλωσουν το μεταδιδομενο μηνυμα πριν αυτο αποσταλει σε λιγοτερο σημαντικους Receivers. Η κληση αυτης της μεθοδου ειναι ασυγχρονη, επιστρεφει αμεσα αποτελεσμα και η εκτελεση της εφαρμογης, που διεκπεραιωσε την μεταδοση, συνεχιζει ταυτοχρονα με αυτη των Receivers. Η receiverpermission παραμετρος ειναι προαιρετικη και σκοπος της ειναι να επιβαλει περιορισμο στις επιτρεπομενες αδειες (permissions) που θα πρεπει να δηλωνει ο Receiver στο AndroidManifest.XML αρχειο. sendstickybroadcast(intent intent) Παρεχει την ιδια λειτουργικοτητα με την sendbroadcast(intent) μεθοδο, με τη διαφορα οτι η διαρκεια ζωης της intent παραμετρου συμπιπτει με αυτη του Receiver, περιμενοντας να ολοκληρωθει η broadcast μεταδοση. Με αυτον τον τροπο ο αποστολεας ενος γεγονοτος, που την καλει, μπορει να εχει τη δυνατοτητα ληψης αποτελεσματος, μεσω της registerreceiver(broadcastreceiver, IntentFilter) μεθοδου, οταν εχει ολοκληρωθει η brοadcast αποστολη. -28-

35 3.3 Fragments Ένα Fragment συστατικο, παρομοια με ενα Activity, παρεχει λειτουργικοτητα που σχετιζεται με τη διεπαφη του χρηστη. Έχει πολλες ομοιοτητες με ενα Activity, ομως αποτελει ενα ανεξαρτητο και ευκολα επαναχρησιμοποιησιμο συστατικο, το οποιο περιλαμβανεται μεσα σε ενα Activity. Ένα Activity μπορει να αποτελειται απο ενα συνολο απο Fragments που συνδυαζονται μεταξυ τους, συνθετοντας τη συνολικη διεπαφη του, δημιουργωντας ετσι μια αρθρωτη σχεδιαση. Παρομοιαζοντας ενα Activity με ενα puzzle, τα Fragments αποτελουν τα διαφορα κομματια που το συνθετουν. Καθε Fragment εχει το δικο του κυκλο ζωης, την δικια του αναπαρασταση μιας διεπαφης, λειτουργει σαν αυτονομος δεκτης γεγονοτων και μπορει να προστεθει η να αφαιρεθει σε ενα Activity ενω αυτο εκτελειται. Ο κυκλος ζωης ενος Fragment ειναι αμεσα συνδεδεμενος με τον κυκλο ζωης του Activity που το φιλοξενει και ειναι υποχρεωτικη απαιτηση να ειναι το Fragment ενσωματωμενο σε αυτο. Για παραδειγμα οταν ενα Activity περναει σε αδρανη κατασταση (paused) η τερματιστει, το ιδιο συμβαινει και στα Fragments που περιεχει. Ωστοσο, κατα τη διαρκεια εκτελεσης ενος Activity, υπαρχει η δυνατοτητα να χειριστουμε το καθε Fragment ξεχωριστα, αλλαζοντας την κατασταση λειτουργιας του. Ο χειρισμος των Fragment απο την θυγατρικη Activity επιτυγχανεται με τη χρηση μιας διεπαφης που παρεχεται απο το συστημα, την FragmentManager. Αυτη η διεπαφη επιτρεπει την αλληλεπιδραση των Activities με τα ενσωματωμενα σε αυτα Fragments. Δεν ειναι τυχαιο που η λογικη των Fragments παρουσιαστηκε στην εκδοση 3.0 του Android συστηματος με την ονομασια HoneyComb, που δημιουργηθηκε αποκλειστικα για χρηση σε συσκευες με μεγαλες οθονες (tablets). Χρησιμοποιουνται κυριως για την υποστηριξη μιας δυναμικης και ευελικτης διεπαφης χρηστη κατι που συμβαδιζει με τον τροπο σχεδιασης συστηματων με μεγαλες οθονες. Σχεδιαζοντας ενα αρθρωτο συστημα αποτελουμενο απο μικροτερες και αυτονομες οντοτητες, που αναλαμβανουν τη διαχειριση της διεπαφης με τον χρηστη, ελαχιστοποιειται η πολυπλοκοτητα του συνολικου συστηματος. Επισης καθισταται δυνατη η επαναχρησιμοποιηση συστατικων λογισμικου, που αποτελει κυριο θεμα αυτης της εργασιας. Ειναι σημαντικο κατα τη σχεδιαση του συστηματος, να υλοποιουνται τα Fragments συστατικα ως αυτονομες και επαναχρησιμοποιησιμες -29-

36 μοναδες, εκτελωντας το καθε ενα ως μια ανεξαρτητη διεργασια. Αυτο ειναι επιθυμητο διοτι καθε Fragment οριζει τη δικη του διεπαφη, οπως επισης την συμπεριφορα και τον κυκλο ζωης του και θα μπορουσαμε να χρησιμοποιησουμε το ιδιο συστατικο Fragment σε πολλαπλα Activity. Τελος μια τετοια σχεδιαση βοηθα σημαντικα στην υποστηριξη διαφορετικων συνδυασμων λειτουργιων για διαφορετικα μεγεθη οθονων. Εικόνα 3.6: Παραδειγμα συνδυασμου δυο διεπαφων σε ενα Activity, οριζομενες απο δυο αντιστοιχα Fragment, για σχεδιαση σε tablet και ξεχωριστη τους υλοποιηση σε δυο διαφορετικα Activity, για σχεδιαση σε κινητη συσκευη. Πηγή:

37 3.3.1 Κύκλος ζωής ενός Fragment Ο κυκλος ζωης ενος Fragment συστατικου, ακολουθει την ιδια λογικη με αυτη των Activities και παρουσιαζει αρκετες ομοιοτητες με αυτα. Μια κλαση Fragment οριζει ενα συνολο απο μεθοδους οι οποιες αποτελουν γεγονοτα του κυκλου ζωης της. Καθε μεθοδος του ενεργεια Fragment, πυροδοτειται επειτα απο αλλαγη καταστασης της εφα ρμογης. Μια κλασ η Fragment οριζει τα παρακατω γεγονοτα που αντικατοπτριζουν τον κυκλο ζωης της: onattach(): Καλειται οταν ενα στιγμιοτυπο ενος Fragment συσχετιζεται με ενα στιγμιοτυπο Activity που δεν εχει αρχικοποιηθει ακομα. οncreate(): Καλειται κατα τη δημιουργια ενος Fragment. oncreateview(): Καλειται οταν δημιουργειται η γραφικη αναπαρασταση ενος στιγμιοτυπου Fragment. Η γραφικη αυτη αναπαρασταση αποτελει μερος της διεπαφης του Activity που το περιεχει. onactivitycreated(): Καλειται οταν εχουν δημιουργηθει τα στιγμιοτυπα των Fragment και Activity καθως και οι διεπαφες τους. onresume(): Καλειται οταν το Fragment γινεται ενεργο και ορατο. onpause(): Καλειται οταν ενα Fragment κανει παυση και περναει σε αδρανη κατασταση ενω συνεχιζει να ειναι ορατο. OnStop(): Καλειται οταν ενα Fragment σταματησει να ειναι ορατο. -31-

38 3.3.2 Συμβατότητα με παλαιότερες εκδόσεις Android Τα Fragments δεν αποτελουν μερος των παλαιοτερων Android εκδοσεων πριν την HoneComb εκδοση (3.0) και δεν μπορουν να χρησιμοποιηθουν απο τα Activity συστατικα. Η υποστηριξη τους σε αυτες τις παλαιοτερες εκδοσεις, ειναι δυνατη με την εγκατασταση ενος επιπροσθετου πακετου που ονομαζεται Πακετο Υποστηριξης (Support Package). Το πακετο αυτο οριζει νεα συστατικα, τα FragmentActivity, τα οποια εχουν την ιδια λειτουργικοτητα με τα Activity, με τη διαφορα οτι μπορουν να υποστηριξουν Fragments σε παλαιοτερες εκδοσεις. Αν ενα υπο αναπτυξη εργο υποστηριζει ελαχιστη εκδοση Android, την εκδοση HoneyComb, τοτε συνισταται η χρηση των Activity συστατικων για την ενσωματωση Fragments και οχι των FragmentActivity Επικοινωνία των Fragment με την εφαρμογή Για να επιτευχθει ο μεγιστος βαθμος επαναχρησιμοποιησης των Fragments, θα πρεπει να αποφευγεται η αμεση επικοινωνια μεταξυ τους. Καθε επικοινωνια μεταξυ τους θα πρεπει να συμβαινει μεσω του Activity συστατικου που τα φιλοξενει και τα διαχειριζεται. Για αυτο το σκοπο, θα πρεπει καθε Fragment συστατικο να οριζει μια διεπαφη (interface) και να απαιτει απο το Activity συστατικο που το χρησιμοποιει, να υλοποιει αυτη τη διεπαφη. Έτσι το Fragment δεν θα μπορει και δεν θα χρειαζεται να εχει γνωση για το Activity συστατικο, που το δημιουργησε. -32-

39 3.4 Android Manifest Καθε εφαρμογη σε Android συστημα θα πρεπει να περιεχει ενα αρχειο που ονομαζεται AndroidManifest.XML. Σε αυτο το αρχειο οριζονται βασικα στοιχεια της εφαρμογης που ειναι απαραιτητα για την εκτελεση της και παρεχονται πριν την εκκινηση της, δηλαδη πριν αρχισει να εκτελειται ο κωδικας. Βασικες εργασιες του AndroidManifest αρχειου ειναι: Ονομασια του Java πακετου της εφαρμογης. Το ονομα αυτου του πακετου αποτελει ενα μοναδικο αναγνωριστικο για την εφαρμογη ετσι ωστε να διακρινεται απο τις υπολοιπες. Οριζει και περιγραφει τα βασικα συστατικα της εφαρμογης, τα Activities, Services, Broadcast Receivers, και Content Providers, τα οποια περιγραφτηκαν σε προηγουμενες παραγραφους. Ονομαζει τις κλασεις, οι οποιες υλοποιουν καθε ενα απο τα βασικα αυτα συστατικα και οριζει τις δυνατοτητες τους (capabilities). Μια δυνατοτητα, για παραδειγμα, ειναι τα intent γεγονοτα που ειναι σε θεση να διαχειριστει ενα συστατικο. Αυτες οι δηλωσεις επιτρεπουν στο συστημα να γνωριζει ποια ειναι τα βασικα συστατικα που αποτελουν την εφαρμογη και υπο ποιες συνθηκες ειναι δυνατον να πυροδοτηθουν. Καθοριζει ποιες διεργασιες θα περιλαμβανουν τα βασικα συστατικα της εφαρμογης. Δηλωνει τις απαραιτητες αδειες (permissions) που θα πρεπει να εχει η εφαρμογη, ωστε να της δινεται η προσβαση σε προστατευομενα μερη του android API και να μπορει να αλληλεπιδρα με αλλες εφαρμογες. Δηλωνει επισης τις αδειες που θα πρεπει να εχουν εξωτερικα συστατικα, οπως χρηστες για παραδειγμα, ωστε να χρησιμοποιουν τα συστατικα της εφαρμογης. -33-

40 Παραθετει μια λιστα με τις Instrumentation κλασεις που παρεχουν profiling και αλλες πληροφοριες κατα τη διαρκεια εκτελεσης της εφαρμογης. Χρησιμοποιουνται μονο κατα τη διαρκεια αναπτυξης και ελεγχου της εφαρμογης και αφαιρουνται πριν την παραδοση της. Δηλωνει το ελαχιστο επιπεδο του Android API που απαιτειται για την εγκατασταση της εφαρμογης. Παραθετει τις, απαιτουμενες για την μεταγλωττιση, εξωτερικες βιβλιοθηκες. Στην εικονα που ακολουθει (Εικονα 3.7), παρουσιαζεται η γενικη δομη ενος AndroidManifest αρχειου καθως και καθε στοιχειο που μπορει να περιεχει. Εικόνα 3.7: AndroidManifest.XML Πηγή:

41 3.5 Υποστήριξη Ποικίλων Οθονών To Android λειτουργικο συστημα εχει πλεον γινει μαζικα αποδεκτο απο το μεγαλυτερο ποσοστο κατασκευαστων κινητων συσκευων και οχι μονο. Το μεριδιο της αγορας κινητων συσκευων παγκοσμιως, με εγκατεστημενο το Android λειτουργικο συστημα, ξεπερνα το πενηντα τις εκατο [1], εδραιωνοντας τη θεση του. Έτσι προεκυψε η απαιτηση υποστηριξης ολων αυτων των διαφορετικων συσκευων απο το Android λειτουργικο συστημα, παρεχοντας μια γενικη και αφαιρετικη προσεγγιση σχεδιασης της διεπαφης με τον χρηστη. Η καθε συσκευη διαθετει το δικο της υλικο παρεχοντας ενα πληθος απο ποικιλες οθονες, συμφωνα με τα προτυπα σχεδιασης της, γεγονος που μπορει να δυσκολευει τη διαδικασια αναπτυξης διαλειτουργικων, ανεξαρτητων πλατφορμας εφαρμογων αλλα προσφερει τη δυνατοτητα στους κατασκευαστες κινητων συσκευων να προσαρμοζουν το συνολικο συστημα στις αναγκες τους. Αυτη η προσαρμογη του Android συστηματος σε συσκευες κατασκευαστων ειναι σημαντικη γιατι προσφερει ευελιξια και μπορει να τους καταστησει πιο ανταγωνιστικους, ομως θα μπορουσε να φερει τα εξης μειονεκτηματα: Λιγοτερο διαισθητικα οικοσυστηματα. Αυξηση της πολυπλοκοτητας του συστηματος. Συστηματα επιρρεπη σε σφαλματα και κινδυνους. Συστηματα χαμηλης αποδοσης. Προβληματα ενσωματωσης νεων εκδοσεων Android. Αργη ενσωματωση νεων εκδοσεων Android. Έτσι λοιπον τα πλεονεκτηματα χρησης του Android συστηματος μπορει να αποτελεσουν και μειονεκτηματα υπο ορισμενες συνθηκες. Το Android συστημα ομως προσφερει τη δυνατοτητα αποφυγης ολων των παραπανω, δημοσιευοντας ανανεωμενες εκδοσεις, προσθετες βιβλιοθηκες καθως και μεθοδους σχεδιασης που υποστηριζουν την προσαρμογη της διεπαφης χρηστη σε ποικιλες οθονες. Σε αυτην -35-

42 την παραγραφο θα επικεντρωθουμε στο τελευταιο. Κυριος στοχος ειναι η αναπτυξη αποδοτικων και στερεων εφαρμογων που εχουν τα θεμελια να υποστηριξουν ολα τα σεναρια χρησης σε συσκευες διαφορετικων οθονων, χαρακτηριστικων κατασκευαστη και διαφορετικης εκδοσης Android. Αυτο επιτυγχανεται κυριως διαχωριζοντας τον κωδικα που υλοποιει την λογικη της εφαρμογης απο τον κωδικα υπευθυνο για την αναπαρασταση της λογικης αυτης, στο χρηστη. Αυτο ομως εχει να κανει κυριως με τη σχεδιαση της εφαρμογης, οπως παρουσιαζεται στο [5] Μετρικές Οθόνης Η διαφορετικοτητα των ποικιλων οθονων οριζεται απο τα παρακατω χαρακτηριστικα: Μέγεθος Οθόνης (Screen Size) Το μεγεθος της οθονης καθοριζεται απο το πραγματικο μεγεθος της, οπως μετραται απο την διαγωνιο της, χρησιμοποιωντας ιντσες σαν μοναδα μετρησης. Για απλοτητα, το Android συστημα εχει ομαδοποιησει τα διαφορα μεγεθη οθονων σε τεσσερις γενικες κατηγοριες: μικρη (small), κανονικη (normal), μεγαλη (large), και πολυ μεγαλη (extra large). Εικόνα 3.8: Κατηγοριες μεγεθους οθονης. Πηγή:

43 Πυκνότητα Οθόνης (Screen Density) Η πυκνοτητα της οθονης καθοριζεται απο την ποσοτητα των pixels που υπαρχουν μεσα σε μια περιοχη της οθονης και αναφερεται ως dpi (dots per inch) δηλαδη pixels ανα ιντσα. Για απλοτητα, το Android συστημα εχει ομαδοποιησει τις διαφορες πυκνοτητες οθονων σε τεσσερις γενικες κατηγοριες: χαμηλη (low), μετρια (medium), υψηλη (high), και πολυ υψηλη (extra high). Εικόνα 3.9: Κατηγοριες πυκνοτητας οθονης. Πηγή: Ανάλυση Οθόνης (Resolution) Τα συνολικα pixel της οθονης. Για την υποστηριξη ποικιλων οθονων, οι εφαρμογες δεν χρησιμοποιουν την αναλυση οθονης, παρα μονο το μεγεθος της οθονης και την πυκνοτητα της, οπως οριζονται στις αντιστοιχες ομαδες Σχεδίαση Η πυκνοτητα της οθονης δεν σχετιζεται με το μεγεθος της. Έτσι για παραδειγμα, αν επρεπε να υποστηριξουμε δυο η παραπανω οθονες, ιδιου μεγεθους αλλα διαφορετικης πυκνοτητας σε pixel, τοτε η σχεδιαση του συστηματος θα ηταν ιδιαιτερα δυσκολη και επιρρεπης σε σφαλματα. Σε ενα τετοιο σεναριο χρησης θα επιθυμουσαμε να δουλευουμε με ενα γενικο τροπο, οριζοντας και χρησιμοποιωντας μια μοναδα μετρησης ανεξαρτητης του pixel. Η σχεδιαση της διεπαφης χρηστη με -37-

44 τροπο ανεξαρτητο της πυκνοτητας ειναι σημαντικη, διοτι ενα στοιχειο της εφαρμογης που εμφανιζεται στην οθονη, οπως ενα κουμπι (button) για παραδειγμα, εμφανιζεται μεγαλυτερο σε μια οθονη χαμηλης πυκνοτητας, ενω μικροτερο σε μια υψηλης αναλυσης. Αυτο προκαλει συγχυση στο χρηστη και δεν συμβαδιζει με τους κανονες που αφορουν τη σχεδιαση της εφαρμογης και της εμπειριας του χρηστη απο τη χρηση της. Στις εικονες 3.10 και 3.11 φαινεται η διαφορα αναμεσα σε μια εφαρμογη που δεν παρεχει σχεδιαση ανεξαρτητης πυκνοτητας και σε μια ανεξαρτητης αντιστοιχα. Εικόνα 3.10: Παραδειγμα εφαρμογης χωρις την υποστηριξη για διαφορετικες πυκνοτητες, οπως φαινεται σε οθονες χαμηλης, μετριας και υψηλης πυκνοτητας. Πηγή: Εικόνα 3.11: Παραδειγμα εφαρμογης με υποστηριξη για διαφορετικες πυκνοτητες, οπως φαινεται σε οθονες χαμηλης, μετριας και υψηλης πυκνοτητας. Πηγή: Το Android συστημα παρεχει τη δυνατοτητα για την υλοποιηση γραφικης διεπαφης χρηστη, ανεξαρτητης της πυκνοτητας της οθονης. Αυτο επιτυγχανεται με τους εξης -38-

45 δυο τροπους: Το συστημα παρεχει μια γενικη μοναδα μετρησης των γραφικων συστατικων, ανεξαρτητης των pixel. Αυτη η μοναδα μετρησης ονομαζεται dp (density-independent pixel) και αποτελει μια εικονικη μοναδα που συνισταται να χρησιμοποιειται αντι των pixel κατα τον ορισμο της γραφικης διεπαφης, ετσι ωστε να εκφραζονται οι διαστασεις της η η θεση της με εναν ανεξαρτητο της πυκνοτητας, τροπο. Μια μοναδα dp, εχει οριστει ως ενα pixel σε μια οθονη 160 dpi και κατα την εκτελεση της εφαρμογης, το συστημα την μετατρεπει με διαφανη τροπο, στα αντιστοιχα και πραγματικα pixel της οθονης. Η μετατροπη αυτη γινεται με βαση την εξης εξισωση: px = dp * (dpi / 160) Το συστημα μετατρεπει τα γραφικα συστατικα που ειναι μερος της συνολικης διεπαφης χρηστη στο καταλληλο μεγεθος, με βαση την πυκνοτητα της οθονης. Για να επιτευχθει αυτο, δινεται η δυνατοτητα εισαγωγης ενος γραφικου συστατικου (εικονα bitmap για παραδειγμα), για τις τεσσερις διαφορετικες βασικες πυκνοτητες, χαμηλη (ldpi), μετρια (mdpi), υψηλη (hdpi), πολυ υψηλη ( xhdpi) καθως και μια ακομα μεγαλυτερης πυκνοτητας (xxhdpi). Έτσι μπορουμε να τοποθετησουμε το ιδιο γραφικο συστατικο σε πεντε διαφορετικες αναλυσεις, εισαγοντας το σε καταλληλο φακελο κατω απο την res (resources) κατηγορια, οπως οριζεται απο το συστημα για τη διαχειριση των πορων. Έπειτα, επιλεγεται το καταλληλο συστατικο σε χρονο εκτελεσης, αναλογως την πυκνοτητα της οθονης. Στην εικονα 3.12 παρουσιαζονται οι πεντε αυτοι φακελοι. -39-

46 Εικόνα 3.12: Φακελοι για την χρηση γραφικων συστατικων, διαφορετικης αναλυσης, αναλογως την πυκνοτητα οθονης. To Android συστημα ειναι σχεδιασμενο για την υποστηριξη ολων των ειδων οθονων, προσαρμοζοντας δυναμικα το περιεχομενο που εμφανιζεται στην οθονη της καθε συσκευης. Τα βηματα που θα πρεπει να ακολουθησουμε ωστε να το εκμεταλλευτουμε με τον καλυτερο δυνατο τροπο ειναι τα εξης: Δήλωση των υποστηριζόμενων μεγεθών οθόνης, από την εφαρμογή Δηλωνοντας, στο AndroidManifest αρχειο, τα υποστηριζομενα μεγεθη οθονης, επιτρεπεται η εγκατασταση της εφαρμογης μονο σε συσκευες που πληρουν τις προδιαγραφες αυτες. Επισης μπορει να επηρεασει τον τροπο που διαχειριζεται το συστημα, την σχεδιαση της γραφικης διεπαφης χρηστη σε μεγαλυτερες οθονες. Στην εικονα 3.13 παρουσιαζεται ενα κομματι κωδικα που εκτελει αυτη τη δηλωση, και επισης οριζει οτι επιτρεπονται οθονες οποιασδηποτε πυκνοτητας με την Android:anyDensity= true εντολη, καθως και το ελαχιστο πλατος οθονης Android:requiresSmallestWidthDp= 600 εντολη με την

47 Εικόνα 3.13: Δηλωση των υποστηριζομενων μεγεθων οθονης στο AndroidManifest αρχειο Παροχή διαφορετικών γραφικών διεπαφών για τα διάφορα μεγέθη οθόνης To Android συστημα προσαρμοζει την γραφικη διεπαφη χρηστη και τα συστατικα της, ετσι ωστε να εμφανιζονται με τον ιδιο τροπο σε οθονες διαφορων μεγεθων, με διαφανεια και συνεπεια. Σε πολυ μεγαλες οθονες ομως, οπως αυτες των tablet, θα ηταν πιο αποδοτικο και θα παρειχε καλυτερη εμπειρια χρηστη, αν εκμεταλλευομασταν τον επιπλεον χωρο. Για παραδειγμα σε μια μικροτερη κινητη συσκευη διαιρουμε την επιθυμητη λειτουργικοτητα σε πολλαπλες οθονες, αντιστοιχιζοντας την καθε μια σε ενα Activity συστατικο. Σε μια συσκευη μεγαλυτερης οθονης θα ηταν δυνατο να συμπεριλαβουμε ολες αυτες τις λειτουργικοτητες σε μια μονο οθονη, με χρηση των Fragment συστατικων. Έτσι καθε Fragment θα ηταν υπευθυνο για τη διαχειριση ενος λειτουργικου κομματιου της οθονης και ολα μαζι θα συνεθεταν τη συνολικη γραφικη διεπαφη. Το Android συστημα παρεχει τη δυνατοτητα επιλογης και πυροδοτησης διαφορετικης γραφικης διεπαφης χρηστη, οπως οριζεται μεσα στον layout φακελο, αναλογως το μεγεθος της οθονης. Έτσι για καθε υποστηριζομενο μεγεθος οθονης, θα μπορουσαμε να αναπτυξουμε την γραφικη διεπαφη χρηστη που επιθυμουμε και το συστημα θα αναλαμβανε την πυροδοτηση της καταλληλης, αναλογως του μεγεθους της. -41-

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

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

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel.

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

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Android Grid Application Θωμάς Αντώνιος (3050073) Καραβέλλας Θεμιστοκλής (3050055) 1. Εισαγωγή Το Android αποτελεί ένα λειτουργικό σύστημα για κινητές συσκευές. Το λειτουργικό αυτό

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

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

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

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

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

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

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

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

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

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

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

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

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

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

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη Παπαδόπουλου Κυριάκου Αρ. Μητρώου: 093507 Επιβλέπων καθηγητής: Ηλιούδης Χρήστος Εισαγωγή - Σκοπός Εργασίας Καινοτόμες

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

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

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

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

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

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

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

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

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

2.1 Σύνδεση Εξωτερικής Συσκευής στο IDE

2.1 Σύνδεση Εξωτερικής Συσκευής στο IDE 2.1 Σύνδεση Εξωτερικής Συσκευής στο IDE Κατά την ανάπτυξη μιας εφαρμογής είναι σημαντικό να ελέγχετε την λειτουργικότητά της σε μια συσκευή, πριν την δημοσιεύσετε στους χρήστες. Ένα πολύ βολικό σύστημα,

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 8: Σχεδίαση Συστήματος Σχεδίαση Συστήματος 2 Διεργασία μετατροπής του προβλήματος σε λύση. Από το Τί στο Πώς. Σχέδιο: Λεπτομερής περιγραφή της λύσης. Λύση:

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

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

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

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

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

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

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης

Διπλωματική Εργασία. Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης ΠΜΣ Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Διπλωματική Εργασία Μουσικές Εφαρμογές σε Περιβάλλον Κινητών Συσκευών Android με Χαρακτηριστικά Εξατομίκευσης Ονοματεπώνυμο: Βλάχος Αθανάσιος Επιβλέπων

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

Διοίκηση Παραγωγής και Υπηρεσιών

Διοίκηση Παραγωγής και Υπηρεσιών Διοίκηση Παραγωγής και Υπηρεσιών Εισαγωγή -3 Γιώργος Ιωάννου, Ph.D. Αναπληρωτής Καθηγητής Σύνοψη διάλεξης Σχεδιασμός διαδικασιών ορισμός Συστημική προσέγγιση Μεθοδολογίες σχεδιασμού διαδικασιών Διαγράμματα

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 7: Εισαγωγή στη UML Τι είναι η UML; 2 Βασικό πρόβλημα τεχνολογίας λογισμικού Έλλειψη κοινά αποδεκτής «γλώσσας» για την έκφραση των σχεδίων λογισμικού. Το

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

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

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

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

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

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

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

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAVIS-V1-2012 TRAVIS Λογισμικό Διαχείρισης Παραβάσεων Φωτοεπισήμανσης Το σύστημα διαχείρισης παραβάσεων φωτοεπισήμανσης

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

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

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

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

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

ALERTS ή EDA (Event Driven Actions)

ALERTS ή EDA (Event Driven Actions) ALERTS ή EDA (Event Driven Actions) Το ALERTS είναι ένα ευέλικτο εργαλείο ανοιχτού σχεδιασµού που αναπτύχθηκε µε σκοπό να καλύψει ιδιαίτερες απαιτήσεις διαµόρφωσης ή επέκτασης της λειτουργικότητας όλων

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

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

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

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

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

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

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

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

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 3. Διδακτικοί Στόχοι

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

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

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

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

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

Σενάριο 18: Ραβδογράμματα Πληθυσμού

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

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

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

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

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

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

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ Αριθμ. Πρωτ.: 129334/2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΤΟΥ ΑΡΙΣΤΟΤΕΛΕΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΑΚΟΙΝΩΝΕΙ Τη διενέργεια διαδικασίας ΑΠΕΥΘΕΙΑΣ

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

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Διαδικασίες παραγωγής λογισμικού Περιεχόμενα Παρουσίαση μοντέλων διεργασίας ανάπτυξης λογισμικού Περιγραφή τριών γενικών μοντέλων διεργασίας ανάπτυξης λογισμικού Γενική περιγραφή των διαδικασιών που περιλαμβάνονται

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

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

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

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

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC Αρχιτεκτονική Πλατφόρμας Μπορεί να μοντελοποιηθεί σαν ένα σύνολο από διασυνδεδεμένα κομμάτια: 1. Στοιχεία επεξεργασίας (processing

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

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

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

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 22 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων

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

Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κινητά και Διάχυτα Συστήματα Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

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

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

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

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

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

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

Στις παρακάτω οδηγίες αναλύεται η διαδικασία εισαγωγής δεδομένων μέσω του εργαλείου FastImport.

Στις παρακάτω οδηγίες αναλύεται η διαδικασία εισαγωγής δεδομένων μέσω του εργαλείου FastImport. Fast Import Στις παρακάτω οδηγίες αναλύεται η διαδικασία εισαγωγής δεδομένων μέσω του εργαλείου FastImport. 2 Περιεχόμενα 3. Επιλογή εγκατάστασης λογιστικής και μεθόδου εισαγωγής αρχείου εγγραφών... 4

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

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

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

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

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

Σύστημα διαχείρισης μετακινήσεων στα ΜΜΜ (Μέσα Μαζικής Μετακίνησης) με ειδοποίηση

Σύστημα διαχείρισης μετακινήσεων στα ΜΜΜ (Μέσα Μαζικής Μετακίνησης) με ειδοποίηση ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σύστημα διαχείρισης μετακινήσεων στα ΜΜΜ (Μέσα Μαζικής Μετακίνησης) με ειδοποίηση Του φοιτητή Λαμπρόπουλος Αλέξανδρος Επιβλέπων καθηγητής Ιγνάτιος Δεληγιάννης Αρ. Μητρώου: 08/3319 Θεσσαλονίκη

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ «ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ 1 4.1. Οριςμόσ φνθετων τφπων κλάςεων 2 Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα

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

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

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

Δομημένος Προγραμματισμός

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

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

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

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

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

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

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

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

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

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

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

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

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

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

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

Τεχνολογία Λογισμικού ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα #9: Η σχεδίαση του συστήματος Σταμέλος Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

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

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

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

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

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

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

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 6 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

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

MultiBoot Οδηγός χρήσης

MultiBoot Οδηγός χρήσης MultiBoot Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Οι πληροφορίες στο παρόν έγγραφο μπορεί να αλλάξουν χωρίς προειδοποίηση. Οι μοναδικές εγγυήσεις για προϊόντα και υπηρεσίες

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

Εγχειρίδιο Χρήσης Slide Recorder

Εγχειρίδιο Χρήσης Slide Recorder Εγχειρίδιο Χρήσης Slide Recorder Αναπτύχθηκε στο Κέντρο Λειτουργίας Διαχείρισης Δικτύου, Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Προγραμματιστής: Γιώργος Φράγκος Περιεχόμενα Εγχειρίδιο Χρήσης Slide

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

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

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

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

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

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

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE Βήμα 1, εγκατάσταση VHOPE Η εφαρμογή VHOPE θα πρέπει να εγκατασταθεί στο PC σας προτού μπορείτε να αρχίσετε να χρησιμοποιείτε το υλικό παρουσίασης σε αυτό

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

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος Λογισμικό Συστήματος Λογισμικό 2 Λογισμικό Συστήματος Τα ειδικά εργαλεία χρησιμοποιούνται για την ανάπτυξη λογισμικού εφαρμογών και την εκτέλεση βοηθητικών εργασιών. Το λειτουργικό σύστημα (operating system)

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

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

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

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

Λειτουργικά συστήματα πραγματικού χρόνου

Λειτουργικά συστήματα πραγματικού χρόνου Λειτουργικά συστήματα πραγματικού χρόνου Τι είναι λειτουργικό σύστημα πραγματικού χρόνου; Λειτουργικό Σύστημα Πραγματικού Χρόνου (ΛΣΠΧ) είναι ένα λειτουργικό σύστημα που προορίζεται για εφαρμογές πραγματικού

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

Θεματογράφος (ή ο βοηθός του Καθηγητή)

Θεματογράφος (ή ο βοηθός του Καθηγητή) Θεματογράφος (ή ο βοηθός του Καθηγητή) Τι είναι ο Θεματογράφος; Σύντομη Περιγραφή Ο Θεματογράφος είναι μία εφαρμογή με την οποία ο χρήστης μπορεί εύκολα να δημιουργήσει, να ταξινομήσει και να αποθηκεύσει

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