ΤΕΙ ΑΜΘ Τμήμα Μηχανικών Πληροφορικής. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Διάταξη μαθητών σε Αίθουσα (Windows Phone 8) ΣΠΟΥΔΑΣΤΗΣ ΑΡΑΜΠΑΤΖΗΣ ΠΑΝΤΕΛΗΣ (987)

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

Download "ΤΕΙ ΑΜΘ Τμήμα Μηχανικών Πληροφορικής. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Διάταξη μαθητών σε Αίθουσα (Windows Phone 8) ΣΠΟΥΔΑΣΤΗΣ ΑΡΑΜΠΑΤΖΗΣ ΠΑΝΤΕΛΗΣ (987)"

Transcript

1 2014 ΤΕΙ ΑΜΘ Τμήμα Μηχανικών Πληροφορικής ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Διάταξη μαθητών σε Αίθουσα (Windows Phone 8) ΣΠΟΥΔΑΣΤΗΣ ΑΡΑΜΠΑΤΖΗΣ ΠΑΝΤΕΛΗΣ (987) ΚΑΘΗΓΗΤΗΣ ΛΕΥΤΕΡΗΣ ΜΩΥΣΙΑΔΗΣ

2 Πρόλογος Για κάποιους το κινητό τηλέφωνο είναι μία ενοχλητική αναγκαιότητα. Σε άλλους είναι μία κρίσιμη ανάγκη. Το να είμαστε σε θέση να χρησιμοποιήσουμε ένα τηλέφωνο για να πραγματοποιήσουμε κλήσεις παντού άλλαξε πραγματικά τον τρόπο με τον οποίο επικοινωνούμε. Τα τελευταία χρόνια όμως, οι έξυπνες συσκευές έχουν πάρει έναν άλλο δρόμο. Με την εισαγωγή στις συσκευές Android, iphone και Windows Phone, η καταναλωτική ανάγκη για always-connected συσκευές που αλληλοεπιδρούν με το διαδίκτυο έχουν αλλάξει την σχέση των ανθρώπων με το τηλέφωνό τους. Οι καταναλωτές περιμένουν πλέον από τα τηλέφωνά τους να λειτουργούν και ως GPS, παιχνιδο-μηχανές και ως μέσο διεπαφής του χρήστη με το διαδίκτυο. Για ορισμένους χρήστες, τα τηλέφωνά τους είναι πλέον οι κύριες συνδέσεις τους με αυτό (internet), αντικαθιστώντας για πρώτη φορά τους σταθερούς υπολογιστές και τα laptop. H πρόκληση των προγραμματιστών είναι να βρουν τον καλύτερο τρόπο για να δημιουργήσουν τέτοιες εμπειρίες που χρειάζονται οι χρήστες. [1] Στην παρούσα πτυχιακή εργασία, ο στόχος ήταν η ανάπτυξη μίας τέτοιας εφαρμογής, που θα απευθύνεται σε εκπαιδευτικούς και θα έχει ορισμένες χρήσιμες λειτουργίες για τον χρήστη, με τις οποίες θα μπορεί να αλληλοεπιδράσει κατά την διάρκεια του μαθήματος. Η πλατφόρμα που επιλέχτηκε ήταν για έξυπνα κινητά Windows Phone 8 της Microsoft, και οι γλώσσες που χρησιμοποιήθηκαν οι C# και XAML (extensible Application Markup Language). 2 Σ ε λ ί δ α

3 Περίληψη Σκοπός της παρούσας πτυχιακής εργασίας ήταν η ανάπτυξη μίας εφαρμογής κατηγορίας χρήσιμων εργαλείων (productivity apps), για το λειτουργικό σύστημα έξυπνων κινητών τηλεφώνων της Microsoft, Windows Phone 8. Το παρών κείμενο ξεκινάει αναφέροντας τις λειτουργίες της εφαρμογής, το πώς δουλεύει και το τι προσπαθεί να λύσει. Στην συνέχεια παρουσιάζεται το Windows Phone και τα κύρια χαρακτηριστικά του λειτουργικού συστήματος και οι προδιαγραφές υλικού (hardware) για τις συσκευές που το φιλοξενούν. Περιγράφονται τα εργαλεία ανάπτυξης, αναλύονται οι γλώσσες προγραμματισμού που χρησιμοποιήθηκαν και γίνεται εκτενής αναφορά στην ανάπτυξη εφαρμογών για την πλατφόρμα και στις κύριες λειτουργίες που χρησιμοποιήθηκαν. Τέλος παρουσιάζει την εφαρμογή με στιγμιότυπα φωτογραφιών κατά την λειτουργία της. 3 Σ ε λ ί δ α

4 Ευχαριστίες Στις εκδόσεις SAMS, έναν οίκο εκδόσεων IT (information technology) βιβλίων και συγκεκριμένα τους συγγραφείς Adam Nathan και Daniel Vaughan για τα εξαιρετικά βιβλία τους WPF 4.0 Unleashed και Windows Phone 8 Unleashed των οποίων η μελέτη ήταν απαραίτητη για την υλοποίηση της εφαρμογής. Στον πρώην συνάδελφό μου και γραφίστα Θάνο Γοτόβα που δημιούργησε το εικονίδιο της εφαρμογής. Σε όλα τα μέλη του site ερωτο-απαντήσεων για προγραμματιστές που με βοήθησαν να λύσω προβλήματα που παρουσιάστηκαν κατά την ανάπτυξη. Τέλος, στον καθηγητή μου Λευτέρη Μωυσιάδη, που μέσω της ανάθεσης της πτυχιακής, μου έδωσε την ευκαιρία να ασχοληθώ με τεχνολογίες αιχμής και να επεκτείνω τις γνώσεις και τις δεξιότητές μου γύρω από τις τεχνολογίες λογισμικού της Microsoft. 4 Σ ε λ ί δ α

5 Πίνακας Περιεχομένων ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Τι κάνει η εφαρμογή Πως λειτουργεί Τι λύνει Πως είναι δομημένο το βιβλίο...10 ΚΕΦΑΛΑΙΟ 2 Το Windows Phone Τι είναι το Windows Phone Η ιστορία ανάπτυξης της πλατφόρμα Χαρακτηριστικά του λειτουργικού Ο πυρήνας Ταυτόχρονες εργασίες Office Παιδική Γωνία Επαφές και Δωμάτια OneDrive Data Sense Λειτουργία NFC και το Πορτοφόλι Το Κατάστημα Windows Phone Χαρακτηριστικά του hardware (υλικού) των συσκευών Κουμπιά της συσκευής (Hardware Buttons) Οθόνη Αισθητήρες Χώρος Αποθήκευσης Συνδεσιμότητα...18 ΚΕΦΑΛΑΙΟ 3 Τα Εργαλεία Ανάπτυξης Visual Studio ΝΕΤ Framework Σ ε λ ί δ α

6 3.3 Η Γλώσσα C# Τύποι δεδομένων Κλάσεις και Αντικείμενα Interfaces Αντιπρόσωποι και Γεγονότα (Delegates and Events) Η Γλώσσα XAML Στοιχεία και Χαρακτηριστικά (Elements and Attributes) Στοιχεία Ιδιοτήτων (Property Elements) Μετατροπείς Tύπων (Type Converters) Markup Επεκτάσεις (Markup Extensions) Data Binding και Value Converters (μετατροπείς τιμών) Styles και Templates...32 ΚΕΦΑΛΑΙΟ 4 Ανάπτυξη Εφαρμογών Windows Phone Θεμελιώδεις έννοιες Το αρχείο XAP Η εφαρμογή εγκατάστασης Μοντέλο Δυνατοτήτων Windows Phone Κριτήρια Απόδοσης εφαρμογών Η κλάση Application Εφαρμόζοντας το πρότυπο Model-View-ViewModel σε μία Windows Phone εφαρμογή Το Μοντέλο Εκτέλεσης Εφαρμογών (Application Execution Model) Η Κατάσταση της Εφαρμογής (Application State) Τα γεγονότα κατά τη διάρκειας ζωής μια εφαρμογής (life cycle events) Πλοήγηση Σελίδων (Page Navigation) Προσανατολισμός Σελίδας (Page Orientation) H Μπάρα Εφαρμογής (ApplicationBar) Controls Ταξινόμηση των τύπων Controls Content Controls Items Controls Range Controls Windows Phone Toolkit Controls ListPicker ContextMenu DatePicker Σ ε λ ί δ α

7 4.6.3 LongListSelector Επαφές (Contacts) Launchers και Choosers Επεξεργασία αφής (Touch Input) Η βάση δεδομένων Η εγκατάσταση της βάσης δεδομένων στο τηλέφωνο LINQ to SQL στο Windows Phone Η δημιουργία της βάσης Το Διάγραμμα της Βάσης LiveSDK για το OneDrive Cloud...75 ΚΕΦΑΛΑΙΟ 5 Η εφαρμογή Teacher Assistant...77 Συμπεράσματα...84 Αναφορές Σ ε λ ί δ α

8 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή 1.1 Τι κάνει η εφαρμογή Η εφαρμογή δημιουργήθηκε για κάθε είδους εκπαιδευτικό, που διδάσκει σε μία ή περισσότερες τάξεις μαθημάτων. Η βασική της λειτουργία, είναι η δυνατότητα που δίνει στον χρήστη να έχει μία πλήρη απεικόνιση της κάθε αίθουσας διδασκαλίας, προβάλλοντας τους μαθητές με τις φωτογραφίες τους και τα ονόματά τους, στις θέσεις τις οποίες κάθονται. Λειτουργεί δηλαδή σαν ένα διάγραμμα θέσεων μέσο του οποίου ο χρήστης μπορεί εύκολα: Να εισάγει μαθητές σε κάθε τάξη, είτε μαζικά, είτε κάθε έναν ξεχωριστά στην θέση επιλογής του. Να αλλάξει τη θέση κάποιου μαθητή, τοποθετώντας τον σε κάποια άλλη κενή, ή να εναλλάξει αυτές μεταξύ δύο μαθητών όταν στην θέση προορισμού κάθετε ήδη κάποιος άλλος, με λειτουργία drag and drop. Να κρατήσει αρχείο παρουσιών για τις ημέρες διεξαγωγής των μαθημάτων του, επιλέγοντας τους απόντες και αποθηκεύοντας την ημερομηνία διεξαγωγής. Υπάρχει η δυνατότητα προβολής του αρχείου για όλες της ημέρες που αυτό έχει τηρηθεί και η επεξεργασία του, μεταβάλλοντας την κατάσταση των μαθητών (εάν αυτοί προσήλθαν ή όχι στο μάθημα) ή την ημερομηνία καταγραφής σε περίπτωση που έχει γίνει λάθος κατά την αποθήκευση. Να επιλέξει τυχαία μαθητές κατά την παράδοση του μαθήματος, για συμμετοχή τους σε αυτό. Να δοκιμάσει την γνώσεις του όσον αφορά τους μαθητές, επιλέγοντας να αποκρύψει ή να εμφανίσει τα ονόματα αυτών. Να δει τις πληροφορίες για κάθε έναν που βρίσκεται σε μία τάξη, προβάλλοντας τα στοιχεία του, τις παρουσίες του συγκεντρωτικά Να κρατήσει χρήσιμες σημειώσεις για κάθε μαθητή του, για κάθε τάξη στην οποία αυτός βρίσκεται. Να δημιουργήσει αντίγραφα ασφαλείας τοπικά στην ίδια την εφαρμογή, είτε στην cloud υπηρεσία OneDrive της Microsoft και να επαναφέρει αυτά τα αντίγραφα για να επιστρέψει σε κάποια πρότερη κατάσταση. 1.2 Πως λειτουργεί Ο χρήστης μπορεί να δημιουργήσει όσες τάξεις επιθυμεί, οι οποίες φαίνονται στην λίστα τάξεων, στην αρχική σελίδα της εφαρμογής. Από το κουμπί προσθήκης, μεταφέρεται στη σελίδα εισαγωγής τάξης, όπου του ζητείται να δώσε ένα όνομα, και να επιλέξει τον αριθμό των γραμμών και στηλών από τις οποίες αυτή θα αποτελείται. Υπάρχει η δυνατότητα επεξεργασίας των ήδη αποθηκευμένων τάξεων από το κουμπί επεξεργασίας, επιλέγοντας άλλο όνομα ή καινούριο αριθμό γραμμών ή στηλών. 8 Σ ε λ ί δ α

9 Για να τοποθετηθούν μαθητές σε μία τάξη, πρέπει πρώτα να εισαχθούν στην εφαρμογή. Η εισαγωγή μπορεί να γίνει με δύο τρόπους. Χειροκίνητα, από τη σελίδα προσθήκης μαθητή, δίνοντας το όνομα και το επίθετό ενός μαθητή και επιλέγοντας την φωτογραφία του με την οποία θα απεικονίζεται στο διάγραμμα θέσεων. Η επιλογή της φωτογραφίας μπορεί να γίνει από τις αποθηκευμένες εικόνες που υπάρχουν στην συσκευή, ή από λήψη μιας φωτογραφίας εκείνη τη στιγμή με την κάμερα. Ο δεύτερος τρόπος, αφορά την μαζική εισαγωγή από την λίστα επαφών του τηλεφώνου. Η εφαρμογή εμφανίζει τις επαφές του χρήστη σε μία ομαδοποιημένη λίστα, από τις οποίες καλείται να διαλέξει ποιες θέλει να εισάγει στην εφαρμογή ως μαθητές. Εφόσον έχουν αποθηκευτεί μαθητές στην εφαρμογή, αυτοί μπορούν να τοποθετηθούν σε μία τάξη εύκολα από το μενού που εμφανίζεται στην σελίδα διαγράμματος θέσεων τάξης όπου μεταβαίνουμε πατώντας σε μία από τη λίστα. Επίσης υπάρχει η δυνατότητα εισαγωγής μαθητή σε συγκεκριμένη θέση, πατώντας δύο φορές με το δάχτυλό σας σε μία κενή. Ο χρήστης μπορεί να πάρει παρουσίες από το αντίστοιχο κουμπί στο διάγραμμα θέσεων, επιλέγοντας του απόντες και αποθηκεύοντας την ημερομηνία καταγραφής. Το αρχείο παρουσιών μπορεί να προβληθεί και να επεξεργαστεί από το αντίστοιχο μενού αρχείο παρουσιών. Από το κουμπί τυχαίος μπορούν να επιλεχτούν τυχαία μαθητές για συμμετοχή σε συζητήσεις κατά την διάρκεια του μαθήματος, ενώ από το μενού απόκρυψη ονομάτων ο χρήστης μπορεί να δοκιμάσει τις γνώσεις του όσον αφορά τα ονόματα των μαθημάτων του. Η πληροφορίες του κάθε μαθητή, εμφανίζονται με διπλό χτύπημα του δαχτύλου στην φωτογραφία του. Από εκεί ο χρήστης μπορεί να μεταβάλει τα στοιχεία του, να δει συγκεντρωτικά τις παρουσίες του ή να μεταβάλει την κατάστασή τους και να αποθηκεύσει χρήσιμες πληροφορίες σε μορφή κειμένου για τον μαθητή του, με την ημερομηνία καταγραφής. Τέλος, από το μενού των ρυθμίσεων υπάρχει η δυνατότητα ταξινόμησης και ομαδοποίησης των μαθητών, σε όλες τις λίστες στις οποίες εμφανίζονται, σύμφωνα με το πρώτο αρχικό του ονόματος ή επιθέτου για ευκολότερη πρόσβαση σε αυτές. Για την ασφάλεια των δεδομένων του χρήστη, υπάρχει η δυνατότητα δημιουργίας αντιγράφων ασφαλείας (backup) σε δύο τοποθεσίες, στην ίδια την εφαρμογή τοπικά είτε στην cloud υπηρεσία OneDrive της Microsoft. Τα αντίγραφα, μπορούν να επαναφερθούν ανά πάσα στιγμή, επιστρέφοντας τα δεδομένα της εφαρμογής στην κατάσταση την οποία βρισκόταν κατά την ημερομηνία αποθήκευσης. 1.3 Τι λύνει Υπάρχουν αρκετές λύσεις λογισμικού για εκπαιδευτικούς στην αγορά. Λογισμικά που είχαν αναπτυχθεί παλιότερα στόχευαν σε λειτουργικά συστήματα που τρέχουν σε σταθερούς υπολογιστές και laptop. Αν και αυτά έχουν αρκετές λειτουργίες και αποτελούν πλήρεις λύσεις, το γεγονός ότι οι σταθεροί υπολογιστές δεν μπορούν μετακινηθούν και τα laptop τα οποία τρέχουν το ίδιο λογισμικό με τους σταθερούς υπολογιστές έχουν μεγάλο βάρος κάνει τη χρήση πολύ δύσκολη, έως και αδύνατη κατά την διάρκεια του μαθήματος. 9 Σ ε λ ί δ α

10 Τα τελευταία χρόνια και με την διάδοση των κινητών συσκευών (ταμπλέτες, έξυπνα κινητά) οι εφαρμογές αυτές έχουν μεταφερθεί προς τα λειτουργικά που τρέχουν σε αυτές, δίνοντας την δυνατότητα στους εκπαιδευτικούς να τις χειρίζονται πολύ ποιο εύκολα και να αλληλοεπιδρούν με αυτές σε πραγματικό χρόνο, αφού είναι σχεδιασμένες να χωράνε στις παλάμες των χεριών μας. Η εφαρμογή αναπτύχθηκε έτσι, ούτως ώστε να συγκεντρώνει τις σημαντικότερες από τις λειτουργίες που χρειάζεται ένας εκπαιδευτικός, στον βαθμό που ήταν δυνατό, δεδομένου του χρονικού ορίου εκπόνησης μιας πτυχιακής εργασίας και της ήδη μεγάλης έκτασης της (η εφαρμογή αποτελείται από περίπου γραμμές κώδικα) η οποία μάλλον ξεφεύγει από τα συνηθισμένα πλαίσια μίας τέτοιας εργασίας. Επιπροσθέτως παρατηρήθηκε ότι, ενώ παρόμοιες εφαρμογές που έχουν την δυνατότητα να προβάλουν διαγράμματα θέσεων υπάρχουν για τις συσκευές που τρέχουν λειτουργικά android και ios, στις πλατφόρμες Windows / Windows Phone 8.0 δεν υπήρχε κάτι αντίστοιχο. Αυτό ήταν ένας λόγος που συντέλεσε στην επιλογή πλατφόρμας ανάπτυξης. 1.4 Πως είναι δομημένο το βιβλίο Στο Κεφάλαιο 2 περιγράφεται το Windows Phone 8 και γίνεται αναφορά στα χαρακτηριστικά του λογισμικού και του υλικού (hardware) των αντίστοιχων έξυπνων συσκευών. Στο Κεφάλαιο 3 περιγράφονται τα εργαλεία ανάπτυξης, οι τεχνολογίες και οι γλώσσες προγραμματισμού που χρησιμοποιήθηκαν κατά την ανάπτυξη με παραδείγματα από αποσπάσματα κώδικα της εφαρμογής. Στο Κεφάλαιο 4 εμβαθύνουμε στην ανάπτυξη εφαρμογών για Windows Phone 8 και σε συγκεκριμένες λειτουργίες που χρησιμοποιήθηκαν με παραδείγματα από αποσπάσματα κώδικα της εφαρμογής. Στο Κεφάλαιο 5 παρουσιάζεται η εφαρμογή με εικόνες και σύντομη αναφορά στο τι κάνει κάθε σελίδα της. 10 Σ ε λ ί δ α

11 ΚΕΦΑΛΑΙΟ 2 Το Windows Phone Τι είναι το Windows Phone 8 To Windows Phone 8 είναι η τρίτη γενιά του λειτουργικού συστήματος της Microsoft για έξυπνα κινητά. Κυκλοφόρησε στις 29 Οκτωβρίου, 2012, και όπως και ο προκάτοχός του, διαθέτει το εικονικό περιβάλλον γνωστό και ως Modern UI (πρώην Metro). Το διαδέχτηκε το Windows Phone 8.1, το οποίο παρουσιάστηκε στις 2 Απριλίου, 2014 και δόθηκε για δοκιμή μία εβδομάδα αργότερα σε πιστοποιημένους προγραμματιστές Windows Phone. Η επίσημη διάθεσή του στο κοινό θα γίνει στο τέλος Ιουνίου του Το Windows Phone 8 αντικαθιστά το Windows CE που είχε βάση στην αρχιτεκτονική που χρησιμοποιείται στα Windows Phone 7, με τον πυρήνα των Windows NT που δημιουργήθηκε για τα Windows 8. Οι Windows Phone 7 συσκευές δεν μπορούν να αναβαθμιστούν ή να τρέξουν εφαρμογές του Windows Phone 8. Οι προγραμματιστές μπορούν να διαθέσουν τις εφαρμογές τους στις Windows Phone 7 και Windows Phone 8 συσκευές με στόχευση και στις δύο πλατφόρμες, μέσω των κατάλληλων SDKs (Software Development Kit) στο Visual Studio. [2] 2.2 Η ιστορία ανάπτυξης της πλατφόρμα Στις 20 Ιουνίου 2012, η Microsoft παρουσίασε τα Windows Phone 8 με την κωδική ονομασία Apollo, την τρίτη γενιά του λειτουργικού συστήματος το οποίο θα κυκλοφορούσε αργότερα το 2012 στο ευρύ κοινό. Το Windows Phone 8 αντικαθιστά την παλιότερη Windows CE τεχνολογία στην οποία είναι βασισμένα τα Windows Phone 7, με την αρχιτεκτονική βασισμένη στο πυρήνα των Windows NT και μοιράζεται πολλά στοιχεία με τα Windows 8 επιτρέποντας στους προγραμματιστές να μεταφέρουν ποιο εύκολα εφαρμογές ανάμεσα στις δύο πλατφόρμες. Το Windows Phone 8, επιτρέπει συσκευές με μεγαλύτερες αναλύσεις οθόνης (" WVGA :09 ", " WXGA :09 ", " 720p :9", " 1080p 1920x : 9 ") από ότι ο προκάτοχός του, πολυπύρηνους επεξεργαστές, λειτουργία NFC (η οποία μπορεί να χρησιμοποιηθεί κυρίως για ανταλλαγή περιεχομένου και εκτέλεση πληρωμών), συμβατότητα με εφαρμογές ανεπτυγμένες για τα Windows Phone 7, βελτιωμένη υποστήριξη για αφαιρούμενα μέσα αποθήκευσης, επανασχεδιασμένη αρχική οθόνη που ενσωματώνει την δυνατότητα αλλαγής του μεγέθους πλακιδίων στην αρχική οθόνη, Πορτοφόλι (για την ενσωμάτωση NFC πληρωμών) και ενσωμάτωση εφαρμογών VoIP (Voice over IP). Επιπλέον, περιλαμβάνει περισσότερες δυνατότητες με στόχο την αγορά επιχειρήσεων, με την δυνατότητα δημιουργίας ιδιωτικού Marketplace για την διανομή των εφαρμογών μιας επιχείρησης στους υπαλλήλους της με ασφάλεια. [2] 11 Σ ε λ ί δ α

12 2.3 Χαρακτηριστικά του λειτουργικού Παρακάτω βλέπουμε τα κύρια χαρακτηριστικά του λειτουργικού συστήματος Windows Phone. Στιγμιότυπο της αρχικής οθόνης στα Windows Phone Ο πυρήνας Το Windows Phone 8 είναι το πρώτο λειτουργικό σύστημα της Microsoft για κινητά που χρησιμοποιεί τον πυρήνα Windows NT, που είναι ο ίδιος πυρήνας που τρέχει στα Windows 8. Το λειτουργικό σύστημα έχει βελτιωμένο σύστημα αρχείων, οδηγούς συσκευών και στοίβα δικτύου, και παρέχει περισσότερη ασφάλεια και υποστήριξη γραφικών. Χρησιμοποιώντας τον πυρήνα NT, μπορεί να υποστηρίξει πλέον πολυπύρηνους επεξεργαστές έως και 64 πυρήνες, καθώς και οθόνες ανάλυσης και pixels, εκτός από τη βάση , ανάλυση ήδη διαθέσιμη για τα Windows Phone 7. Επίσης, το Windows Phone 8 προσθέτει υποστήριξη για κάρτες MicroSD, που χρησιμοποιούνται συνήθως για να προσθέσετε επιπλέον χώρο αποθήκευσης για τα τηλέφωνα. Υποστήριξη για οθόνες 1080p προστέθηκε τον Οκτώβριο του 2013 με την ενημερωμένη έκδοση GDR3. Λόγω της μετατόπισης στον πυρήνα NT, το Windows Phone 8 υποστηρίζει επίσης κρυπτογράφηση 128-bit BitLocker και Secure Boot Ταυτόχρονες εργασίες Σε αντίθεση με τον προκάτοχό του, το Windows Phone 8 μπορεί να εκτελέσει ταυτόχρονα εργασίες, επιτρέποντας στους προγραμματιστές να δημιουργήσουν εφαρμογές που μπορούν να τρέχουν στο παρασκήνιο. Ένας χρήστης μπορεί να επιλέξει μεταξύ των ενεργών εφαρμογών κρατώντας πατημένο το 12 Σ ε λ ί δ α

13 κουμπί Πίσω, με την υποσημείωση ότι οι υπόλοιπες εφαρμογές της λίστας μπορεί να ανασταλούν ή να τερματιστούν, κάτω υπό ορισμένες προϋποθέσεις, όπως είναι η σύνδεση με το δίκτυο, ή όταν η κατανάλωση της μπαταρίας είναι μεγάλη. Μια εφαρμογή που τρέχει στο παρασκήνιο μπορεί να ανασταλεί αυτόματα, αν ο χρήστης δεν την ανοίξει για μεγάλο χρονικό διάστημα Office Το λειτουργικό ενσωματώνει την χρήση εγγράφων Word, Excel και PowerPoint για εύκολη και γρήγορη επεξεργασία από την συσκευή του τηλεφώνου. Τα έγγραφα μπορούν να συγχρονιστούν σε όλες τις Windows 8 συσκευές (Windows 8 για σταθερούς υπολογιστές ή ταμπλέτες και Windows Phone 8) μέσω της cloud υπηρεσίας OneDrive, επίσης ενσωματωμένης στο λειτουργικό Παιδική Γωνία Η Παιδική Γωνιά, λειτουργεί ως ένα είδος "λειτουργίας επισκέπτη". Ο χρήστης επιλέγει ποιες εφαρμογές και ποια παιχνίδια εμφανίζονται στην Γωνιά των παιδιών. Όταν είναι ενεργοποιημένη, οι εφαρμογές και τα παιχνίδια που είναι εγκατεστημένα στη συσκευή μπορούν να χρησιμοποιηθούν χωρίς να μεταβάλουν τα δεδομένα του κύριου χρήστη που είναι συνδεδεμένος στη συσκευή Επαφές και Δωμάτια Οι επαφές συνδέονται από τα μέσα κοινωνικής δικτύωσης και τα βιβλία διευθύνσεων του χρήστη. Η αποστολή SMS, η πραγματοποίηση κλήσεων και άλλες λειτουργίες επικοινωνίας μπορούν να γίνουν όλα από ένα πρακτικό μέρος. Τα δωμάτια είναι μία λειτουργία για την ομαδοποίηση μηνυμάτων και γενικά της επικοινωνίας μέσω του τηλεφώνου. Χρησιμοποιώντας την, οι χρήστες μπορούν να δουν ενημερώσεις και να επικοινωνήσουν μέσω του Facebook και του Twitter, μόνο με τα μέλη μιας ομάδας, τα οποία μπορούν επίσης να μοιραστούν άμεσα μηνύματα και φωτογραφίες από το εσωτερικό του δωματίου OneDrive Το OneDrive είναι η cloud υπηρεσία της Microsoft, η οποία προσφέρει δωρεάν χώρο αποθήκευσης στο internet, δίνοντας την δυνατότητα αποθήκευσης φωτογραφιών, βίντεο και εγγράφων Office Data Sense To Data Sense επιτρέπει στους χρήστες να θέσουν όρια χρήσης δεδομένων με βάση το ατομικό τους σχέδιο. Η λειτουργία μπορεί να περιορίσει τα δεδομένα παρασκηνίου όταν ο χρήστης βρίσκεται κοντά στο όριο (ένα εικονίδιο καρδιάς χρησιμοποιείται για να ειδοποιεί το χρήστη όταν οι εργασίες παρασκηνίου σταματάνε αυτόματα). 13 Σ ε λ ί δ α

14 2.3.8 Λειτουργία NFC και το Πορτοφόλι Η λειτουργία NFC επιτρέπει τη μεταφορά δεδομένων μεταξύ δύο συσκευών Windows Phone, ή μεταξύ μιας συσκευής Windows Phone, και υπολογιστή ή ταμπλέτας Windows 8, χρησιμοποιώντας μια δυνατότητα που ονομάζεται "Πάτημα & Αποστολή". Σε ορισμένες χώρες, η υποστήριξη NFC μπορεί να χρησιμοποιηθεί για τη διεξαγωγή πρόσωπο με πρόσωπο συναλλαγών μέσω πιστωτικών και χρεωστικών καρτών που είναι αποθηκευμένες στο τηλέφωνο μέσω της εφαρμογής Πορτοφόλι. Εκτός από την υποστήριξη NFC για συναλλαγές, το πορτοφόλι μπορεί επίσης να χρησιμοποιηθεί για να αποθήκευση πιστωτικών καρτών για αγορές από το Windows Phone Store και άλλες αγορές μέσα σε μία εφαρμογή και μπορεί να χρησιμοποιηθεί για την αποθήκευση κουπονιών Το Κατάστημα Windows Phone To Windows Phone έχει το δικό του ηλεκτρονικό κατάστημα, ένα αποκλειστικό μέρος στο οποίο δημοσιεύονται οι εφαρμογές που αναπτύσσουν οι προγραμματιστές για την πλατφόρμα. Οι εφαρμογές αυτές διατίθενται στο κοινό δωρεάν, ή επί πληρωμής. Όσον αφορά τους προγραμματιστές, υπάρχουν συγκεκριμένες προδιαγραφές προκειμένου μία εφαρμογή να δημοσιευτεί στο κατάστημα. Για να μπορέσει κάποιος να δημοσιεύσει εφαρμογές, απαιτείται ετήσια συνδρομή προγραμματιστή, με την οποία μπορεί να ξεκλειδώσει τη συσκευή του για να δοκιμάσει εφαρμογές που αναπτύσσει οι οποίες δεν έχουν ακόμα δημοσιευτεί στο κατάστημα. Οι εφαρμογές περνάνε κάποιους ελέγχους πιστοποίησης, ούτως ώστε να διαπιστωθεί η ορθή λειτουργία τους, πριν εγκριθεί η δημοσίευσή τους. To Windows Phone Store 14 Σ ε λ ί δ α

15 2.4 Χαρακτηριστικά του hardware (υλικού) των συσκευών H Microsoft έχει θέσει συγκεκριμένες προδιαγραφές προς τους κατασκευαστές κινητών τηλεφώνων με τις οποίες συνεργάζεται ούτως ώστε τα τηλέφωνά τους να τρέχουν το λειτουργικό σύστημα κατά τον ίδιο τρόπο, ανεξάρτητα από την ισχύ της συσκευής το μέγεθός της. Συσκευές Windows Phone Κουμπιά της συσκευής (Hardware Buttons) Υπάρχουν 6 κουμπιά πάνω σε μία συσκευή Windows Phone 8. Τα τρία από αυτά είναι κουμπιά αφής ενσωματωμένα στην οθόνη και τρία βρίσκονται πλάγια του τηλεφώνου. Τα κουμπιά αφής από αριστερά προς τα δεξιά κοιτώντας μια συσκευή, είναι το κουμπί Πίσω, το κουμπί Έναρξη και το κουμπί Αναζήτησης. Το πρώτο χρησιμοποιείται για πλοήγηση στην προηγούμενη σελίδα που βρισκόταν ο χρήστης πριν μεταβεί στην τρέχουσα. Η προηγούμενη σελίδα μπορεί να αφορά σελίδα της ίδιας ή άλλης εφαρμογής. Πατώντας παρατεταμένα το κουμπί Πίσω, εμφανίζεται η λίστα των εφαρμογών που τρέχουν στο παρασκήνιο όπου ο χρήστης μπορεί να μεταφερθεί σε μία από αυτές. Το μεσαίο κουμπί Έναρξη, μεταφέρει γρήγορα τον χρήστη στην αρχική σελίδα του λειτουργικού, απενεργοποιώντας την τρέχουσα εφαρμογή αλλά προσθέτοντας την στη λίστα των ενεργών, ούτως ώστε ο χρήστης να μπορεί να μεταφερθεί πίσω στην προηγούμενη σελίδα. Τέλος, με το κουμπί Αναζήτηση, ο χρήστης μεταφέρεται στην ενσωματωμένη εφαρμογή του λειτουργικού Internet Explorer όπου μπορεί να εκτελεστεί οποιαδήποτε αναζήτηση μέσω της μηχανής αναζήτησης Bing, της Microsoft. Τα υπόλοιπα κουμπιά που βρίσκονται στην δεξιά πλευρά του τηλεφώνου είναι από πάνω προς τα κάτω, το κουμπί Έντασης Ήχου, με το οποίο αυξομειώνεται η ένταση των ήχων του τηλεφώνου, το κουμπί Κλειδώματος, το οποίο κλειδώνει την συσκευή και απενεργοποιεί την οθόνη της, και το κουμπί της Κάμερας, που ενεργοποιεί την ενσωματωμένη εφαρμογή της κάμερας του τηλεφώνου για λήψη φωτογραφιών. 15 Σ ε λ ί δ α

16 Τα κουμπιά της συσκευής Οθόνη H οθόνες αφής και υψηλής ακρίβειας παρέχουν πλούσια γραφικά και ευανάγνωστο κείμενο. Όσο μεγαλύτερη είναι η ανάλυση της συσκευής τόσο καλύτερη είναι η εμπειρία του χρήστη αλληλοεπιδρώντας με την συσκευή. Οι υποστηριζόμενες αναλύσεις είναι οι εξής: Όνομα Ανάλυση Λόγος διάστασης WVGA 480 x :9 WXGA 768 x :9 720p 720 x :9 1080p 1080 x :9 Οι οθόνες έχουν την δυνατότητα προβολής σε κάθετο (portrait) και οριζόντιο (landscape) προσανατολισμό. Αυτό που τις ξεχωρίζει από τις συσκευές για άλλα λειτουργικά, είναι η δυνατή φωτεινότητα κάτι που κάνει την χρήση δυνατή ακόμη και στον ήλιο. Τέλος η οθόνες είναι multi-touch και αποτελούν αισθητήρες αφής που μπορούν να ανιχνεύσουν μέχρι και τέσσερα σημεία αφής ταυτόχρονα. 16 Σ ε λ ί δ α

17 2.4.3 Αισθητήρες Εκτός από τους αισθητήρες αφής που έχει η οθόνη, το Windows Phone 8 υποστηρίζει και άλλους αισθητήρες που επιτρέπουν σε εφαρμογές να καθορίσουν τον προσανατολισμό και την κίνηση της συσκευής. Αυτοί οι αισθητήρες επιτρέπουν την ανάπτυξη των εφαρμογών, όπου η ίδια η φυσική συσκευή είναι ένα μέσο της εισόδου του χρήστη. Τυπικές χρήσεις για αυτή τη λειτουργία περιλαμβάνουν την ελεγχόμενη κίνηση σε παιχνίδια και σε εφαρμογές επαυξημένης πραγματικότητας (augmented reality). [3] Τοποθεσία Με τη βοήθεια των αισθητήρων τοποθεσίας μπορεί εύκολα και γρήγορα να βρεθεί η θέση της συσκευής στον χώρο. Αυτό μπορεί να γίνει με διαφορετικούς τρόπους. Ο ένας είναι το Παγκόσμιο Σύστημα Εντοπισμού θέσης (GPS Global Positioning System), όπου ο δέκτης της συσκευής λαμβάνει το δορυφορικό σήμα που εκπέμπεται από τους δορυφόρους της γης για να υπολογίσει θέση του στον παγκόσμιο χάρτη. Άλλος τρόπος είναι η χρήση του κυψελοειδούς δικτύου κινητής τηλεφωνίας. Επιταχυνσιόμετρο Το επιταχυνσιόμετρο μετρά τις δυνάμεις που εφαρμόζονται στη συσκευή σε μια χρονική στιγμή. Αυτές οι δυνάμεις μπορούν να χρησιμοποιηθούν για να προσδιοριστεί προς ποια κατεύθυνση κινείτε η συσκευή. Η τιμή της επιτάχυνσης εκφράζεται ως τρισδιάστατο διάνυσμα που αντιπροσωπεύει τις συνιστώσες επιτάχυνσης στους άξονες Χ, Υ, και Ζ. Πυξίδα Η πυξίδα, ή μαγνητόμετρο, είναι αισθητήρας που μπορεί να χρησιμοποιηθεί για τον προσδιορισμό της γωνίας κατά την οποία η συσκευή περιστρέφεται σε σχέση με το μαγνητικό βόρειο πόλο της Γης. Μια εφαρμογή μπορεί να χρησιμοποιήσει τα ακατέργαστα δεδομένα του μαγνητόμετρου για την ανίχνευση μαγνητικών δυνάμεων γύρω από τη συσκευή. Γυροσκόπιο Το γυροσκόπιο χρησιμοποιείται για τον προσδιορισμό της ταχύτητας περιστροφής της συσκευής σε κάθε άξονα. Μπορείτε να χρησιμοποιήσετε τις τιμές που λαμβάνονται από τον αισθητήρα γυροσκόπιο για να προσδιοριστεί ο προσανατολισμός της συσκευής στο χώρο. 2.5 Χώρος Αποθήκευσης Για την αποθήκευση των δεδομένων του χρήστη υπάρχουν δύο μέσα αποθήκευσης, η μόνιμη μνήμη αποθήκευσης της συσκευής και η μνήμη RAM στην οποία τρέχει το λειτουργικό και οι διάφορες εφαρμογές που εκτελούνται. Οι μνήμες RAM ξεκινάνε από 512 MB σε χωρητικότητα και φτάνουν μέχρι τα 4 GB. Στην μνήμη της συσκευής αποθηκεύονται όλα τα δεδομένα του χρηστή (επαφές, , έγγραφα, εικόνες βίντεο, 17 Σ ε λ ί δ α

18 κ.τ.λ.) και των εφαρμογών. Οι περισσότερες εφαρμογές καταλαμβάνουν κάποιο χώρο στη μνήμη αποθηκεύοντας αρχεία απαραίτητα για τη λειτουργία τους. Αυτός ο χώρος είναι ξεχωριστός για κάθε εφαρμογή και ονομάζεται Isolated Store. Θα αναφερθούμε εκτενέστερα σε αυτόν στα επόμενα κεφάλαια. Ορισμένες συσκευές, μπορούν να επεκτείνουν την μόνιμη μνήμη αποθήκευσης, χρησιμοποιώντας αφαιρούμενες MicroSD κάρτες. Σε αυτές μπορούν να αποθηκευτούν έγγραφα, εικόνες και βίντεο μόνο. 2.6 Συνδεσιμότητα Ένα χαρακτηριστικό στοιχείο των έξυπνων συσκευών είναι η δυνατότητά τους να είναι συνέχεια συνδεμένες στο διαδίκτυο. Οι συσκευές Windows Phone 8, μπορούν να συνδεθούν στο internet και με άλλες συσκευές με αρκετούς τρόπους με τα ποιο σύγχρονα πρότυπα ασύρματης μετάδοσης. Όταν ο χρήστης περιηγείται στο διαδίκτυο ή στέλνει , το τηλέφωνο στέλνει και λαμβάνει δεδομένα χρησιμοποιώντας σύνδεση Wi-Fi, κυψελοειδής σύνδεση κινητής τηλεφωνίας ή σύνδεση μεταξύ υπολογιστή τηλεφώνου. Η συσκευή επιλέγει να συνδεθεί κατά προτεραιότητα, σε ένα δίκτυο Wi-Fi όποτε αυτό είναι διαθέσιμο παρά σε ένα κυψελοειδές δίκτυο κινητής τηλεφωνίας το οποίο επιφέρει χρεώσεις ανάλογα με τα δεδομένα που αποστέλλονται και λαμβάνονται. Όταν είναι συνδεδεμένη σε ένα υπολογιστή μέσω καλωδίου USB, επιλέγει την σύνδεση δικτύου του υπολογιστή από τους άλλους δύο τρόπους σύνδεσης. [4] 18 Σ ε λ ί δ α

19 ΚΕΦΑΛΑΙΟ 3 Τα Εργαλεία Ανάπτυξης Η Microsoft παρέχει μία ολοκληρωμένη συλλογή εργαλείων και υπηρεσιών για την ανάπτυξη εφαρμογών που στοχεύουν την πλατφόρμα Windows Phone. Το Windows Phone 8 SDK επιτρέπει την δημιουργία εφαρμογών χρησιμοποιώντας μια ποικιλία γλωσσών και εργαλείων. Οι εφαρμογές δημιουργούνται χρησιμοποιώντας την γλώσσα XAML για την σχεδίαση του γραφικού περιβάλλοντός τους (UI) και μία εκ των C# ή Visual Basic για τις λειτουργίες που τρέχουν πίσω από αυτό. Για μεγαλύτερη ευελιξία και απόδοση υπάρχει η δυνατότητα χρησιμοποίησης και της C++ η οποία χρησιμοποιείτε κυρίως για παιχνίδια γραμμένα με τη γλώσσα UI, Direct3D [5]. To Visual Studio είναι το περιβάλλον ανάπτυξης (ΙDE Interface Development Environment), το οποίο ενσωματώνει όλα αυτά τα εργαλεία. Μέσω ενός web installer, οι προγραμματιστές μπορούν να λάβουν το πακέτο Windows Phone Developer Tools το οποίο περιέχει το Visual Studio 2012 Express και το Windows Phone 8 SDK με όλα όσα χρειάζονται για την ανάπτυξη εφαρμογών και παιχνιδιών [6]. Το πακέτο περιέχει συγκεκριμένα τα: Microsoft Visual Studio Express 2012 για Windows Phone το περιβάλλον ανάπτυξης. Εξομοιωτή (Windows Phone Emulator) ένας εξομοιωτής για την δοκιμή των εφαρμογών που αναπτύσσονται. Το Microsoft Expression Blend για Windows Phone ένα επαγγελματικό περιβάλλον σχεδίασης για τη δημιουργία του γραφικού περιβάλλοντος (UI - user interface) των εφαρμογών. Για την εγκατάσταση του Windows Phone 8 SDK, ο υπολογιστής πρέπει να συναντά ορισμένες προδιαγραφές. Αυτές είναι οι παρακάτω: [7] Υποστηριζόμενα λειτουργικά συστήματα: Windows 8, Windows 8 Pro, Windows 8 64-bit (x64) Hardware: 4 GB ελεύθερου χώρου στο σκληρό δίσκο, 4 GB RAM, 64-bit (x64) CPU Windows Phone 8 Emulator: Windows 8 Pro έκδοση ή μεγαλύτερη, ένας επεξεργαστής που υποστηρίζει Second Address Level Translation (SLAT) 3.1 Visual Studio Όντας η μεγαλύτερη εταιρία λογισμικού, η Microsoft παρέχει το Visual Studio, το ποιο ολοκληρωμένο πρόγραμμα (IDE) για ανάπτυξη λογισμικού που στοχεύει στις τεχνολογίες της. Χρησιμοποιείται στην ανάπτυξη προγραμμάτων για την οικογένεια των λειτουργικών συστημάτων Microsoft Windows, ιστοσελίδων, εφαρμογών που τρέχουν στο internet και web υπηρεσιών (services). Χρησιμοποιεί διάφορες πλατφόρμες που εστιάζουν σε διαφορετικές τεχνολογίες, όπως τα Windows API, Windows Forms, WPF, Windows Store και Silverlight. Μπορεί να παράγει τόσο εγγενή κώδικα (ο κώδικας της γλώσσας στην οποία είναι γραμμένο το λειτουργικό) όσο και διαχειριζόμενο (managed) κώδικα που τρέχει από το.νετ Framework. 19 Σ ε λ ί δ α

20 To Visual Studio Περιλαμβάνει έναν επεξεργαστή κώδικα, που υποστηρίζει το Intellisense, μία έξυπνη λειτουργία που βοηθάει στη μείωση των τυπογραφικών λαθών, και την ολοκλήρωση κώδικα (intelligent code completion). Διαθέτει επίσης ένα ολοκληρωμένο πρόγραμμα εντοπισμού σφαλμάτων (debugger). Άλλα ενσωματωμένα εργαλεία είναι η σχεδίαση φορμών για ανάπτυξη εφαρμογών με γραφικό περιβάλλον (GUI), η σχεδίασης ιστοσελίδων μέσω του web designer, σχεδίαση κλάσεων και η σχεδίαση σχεσιακών βάσεων δεδομένων. Το Visual Studio υποστηρίζει διάφορες γλώσσες προγραμματισμού. Οι ενσωματωμένες γλώσσες είναι η C, C++, C++/CLI (Visual C++), VB.NET (Visual Basic), C# και F#. Υπάρχει η δυνατότητα υποστήριξης και άλλων γλωσσών, όπως η Python και Ruby ανάμεσα σε άλλες, εφόσον εγκατασταθούν οι αντίστοιχες υπηρεσίες γλωσσών (language services). Επίσης υποστηρίζει τις γλώσσες XML/XSLT, HTML/XHTML, JavaScript και CSS για ανάπτυξη ιστοσελίδων και όχι μόνο. [8] 3.2.ΝΕΤ Framework To.NET Framework είναι ένα πλαίσιο λογισμικού (software framework) που αναπτύχθηκε από την Microsoft και τρέχει κυρίως στα Microsoft Windows. Περιέχει μια τεράστια βιβλιοθήκη και παρέχει δια λειτουργικότητα (interoperability) στις υποστηριζόμενες γλώσσες (κάθε γλώσσα μπορεί να χρησιμοποιήσει κώδικα γραμμένο 20 Σ ε λ ί δ α

21 σε άλλες). Τα προγράμματα που είναι γραμμένα με το.net Framework εκτελούνται σε ένα περιβάλλον λογισμικού γνωστό ως Common Language Runtime (CLR), μια εφαρμογή εικονικής μηχανής που παρέχει υπηρεσίες όπως η ασφάλεια, η διαχείριση μνήμης και ο χειρισμός των εξαιρέσεων (exception handling). Η βιβλιοθήκη των κλάσεων και το CLR αποτελούν το.net Framework. Η βιβλιοθήκη των κλάσεων παρέχει δυνατότητα δημιουργίας user interface, πρόσβασης σε δεδομένα, σύνδεσης με βάσεις δεδομένων, κρυπτογραφία, ανάπτυξη εφαρμογών web, αριθμητικούς αλγορίθμους και επικοινωνία δικτύων. Οι προγραμματιστές παράγουν λογισμικό συνδυάζοντας τον δικό τους κώδικα με το.νετ Framework και άλλες βιβλιοθήκες. Μερικά από τα κύρια χαρακτηριστικά του είναι: [9] Διαλειτουργικότητα. Επειδή τα συστήματα υπολογιστών συνήθως απαιτούν αλληλεπίδραση μεταξύ νέων και παλιών εφαρμογών, το.net Framework παρέχει τα μέσα για πρόσβαση στις λειτουργίες που εφαρμόζονται σε νεότερα και παλαιότερα προγράμματα που εκτελούνται έξω από το περιβάλλον.net. Μηχανή Κοινής Γλώσσας Εκτέλεσης (CLR). Το Common Language Runtime (CLR) χρησιμεύει ως η μηχανή εκτέλεσης του NET Framework. Όλα τα NET προγράμματα εκτελούνται υπό την εποπτεία του CLR, εξασφαλίζοντας ορισμένες ιδιότητες και τις συμπεριφορές στους τομείς της διαχείρισης της μνήμης, την ασφάλεια και το χειρισμό εξαιρέσεων. Ανεξαρτησία Γλώσσας. Το.NET Framework συστήνει το Kοινό Σύστημα Τύπων (Common Type System - CTS) μια προδιαγραφή που ορίζει όλους τους πιθανούς τύπους δεδομένων και δομών προγραμματισμού που υποστηρίζονται από το CLR για όλες τις γλώσσες Βιβλιοθήκη Κλάσεων (Framework Class Library). To FCL είναι μία βιβλιοθήκη λειτουργιών που διατίθενται σε όλες τις γλώσσες της πλατφόρμας. Παρέχει κλάσεις που ενσωματώνουν μια σειρά από κοινές λειτουργίες, συμπεριλαμβανόμενης της ανάγνωσης και γραφής σε αρχεία, απόδοση γραφικών (graphics rendering), αλληλεπίδρασης βάσεων δεδομένων, χειραγώγησης αρχείων XML και άλλα. Αποτελείται από κλάσεις και interfaces επαναχρησιμοποιούμενων τύπων ενσωματωμένες στο CLR. 3.3 Η Γλώσσα C# H C# είναι η πιο ευρέως διαδεδομένη γλώσσα προγραμματισμού ανάμεσα στις υποστηριζόμενες γλώσσες του.net Framework. Η βασική της σύνταξη μοιάζει πολύ με αυτή της Java, ωστόσο δεν είναι κλώνος της αφού και οι δύο είναι μέλη της οικογενείας γλωσσών C (C, Objective-C, C++). Πολλές από τις συντακτικές δομές της C#, προέρχονται από την Visual Basic και την C++. Για παράδειγμα, όπως και η VB.NET, υποστηρίζει την έννοια των ιδιοτήτων κλάσεων (σε αντιδιαστολή με τις παραδοσιακές μεθόδους get set) και των προαιρετικών παραμέτρων. Όπως και η C++, επιτρέπει την υπερφόρτωση μεθόδων (method overloading), την δημιουργία δομών (structures), enumerations, και τη λειτουργία επανακλήσεων μέσω αντιπροσώπων (callback functions via delegates). Υποστηρίζει μια σειρά από χαρακτηριστικά τα οποία συναντώνται παραδοσιακά σε διάφορες λειτουργικές γλώσσες (π.χ. LISP ή Haskell), όπως οι εκφράσεις λάμδα (lamda expressions) και οι ανώνυμοι τύποι. Επιπλέον με την έλευση της LINQ (Language Integrated Query) υποστηρίζει ένα μοναδικό σύνολο δομών στο 21 Σ ε λ ί δ α

22 πεδίο του προγραμματισμού. Λόγω του ότι η C# είναι ένα υβρίδιο διάφορων γλωσσών, αποτελεί μία γλώσσα που είναι συντακτικά καθαρή όσο και η Java, απλή όπως η Visual Basic και παρέχει σχεδόν την ίδια δύναμη και ευελιξία που παρέχει η C++. Παρακάτω βλέπουμε μία λίστα των βασικών χαρακτηριστικών της C#: Αυτόματη διαχείριση μνήμης μέσω της συλλογής απορριμμάτων (garbage collection). Ως εκ τούτου η C#, δεν χρησιμοποιεί δείκτες μνήμης εφόσον δεν υπάρχει άμεση ανάγκη διαχείρισής τους. Η ικανότητα υπερφόρτωσης χειριστών (operator overloading) για προσαρμοσμένους τύπους, χωρίς πολυπλοκότητα. Υποστήριξη για προγραμματισμό βασισμένο σε χαρακτηριστικά (attribute-based programming). Αυτή η μέθοδος προγραμματισμού επιτρέπει τη διακόσμηση τύπων και μεθόδων με χαρακτηριστικά, προσδίδοντάς τους συγκεκριμένη συμπεριφορά. Για παράδειγμα, όταν μία μέθοδος διακοσμηθεί με το χαρακτηριστικό [Obsolete] ο προγραμματιστής ενημερώνεται ότι η μέθοδος είναι απαρχαιωμένη και δεν πρέπει να χρησιμοποιηθεί. Δυνατότητα κατασκευής γενικών (generics) τύπων και μελών. Χρησιμοποιώντας τα generics μπορεί να γραφτεί αποτελεσματικότερος και ασφαλή-τύπου (type-safe) κώδικας ορίζοντας σύμβολα κράτησης θέσης (placeholders) που καθορίζονται κατά τη διάρκεια αλληλεπίδρασης με το generic αντικείμενο. Υποστήριξη για ανώνυμες μεθόδους, οι οποίες επιτρέπουν την παροχή ενσωματωμένων συναρτήσεων οπουδήποτε απαιτείται ένας αντιπρόσωπος (delegate). Δυνατότητα ορισμού ενός τύπου, σε πολλαπλά αρχεία χρησιμοποιώντας την λέξη κλειδί partial. Υποστήριξη strongly-typed ερωτημάτων (LINQ queries) χρησιμοποιούνται για αλληλεπίδραση με διάφορες μορφές δεδομένων. Υποστήριξη ανώνυμων τύπων, που επιτρέπουν τη μοντελοποίηση ενός τύπου, παρά την συμπεριφορά του. Δυνατότητα επέκτασης της λειτουργικότητας ενός υφιστάμενου τύπου (χωρίς τη χρησιμοποίηση υποκλάσεων) χρησιμοποιώντας μεθόδους επέκτασης (extension methods). Χρησιμοποίηση των φορέων λάμδα (lamda operators) που απλοποιούν ακόμα περισσότερο την εργασία με αντιπροσώπους (delegate types). Υποστήριξη για προαιρετικές παραμέτρους μεθόδων. Υποστήριξη για δυναμική αναζήτηση μελών κατά το χρόνο εκτέλεσης μέσω της λέξης-κλειδί dynamic. Απλοποιημένη ανάπτυξη ασύγχρονου, multithreaded κώδικα με τις λέξεις-κλειδιά async και await. 22 Σ ε λ ί δ α

23 [10] Τύποι δεδομένων Οι περισσότεροι τύποι δεδομένων της C# αναφέρονται με ειδικές λέξεις-κλειδιά που αποτελούν συντομεύσεις των πραγματικών τους ονομάτων όπως αυτά ορίζονται στο Common Language Runtime. Για παράδειγμα ο τύπος bool είναι συντομογραφία του Boolean, ο τύπος int συντομογραφία του Int32 κλπ. Οι τύποι δεδομένων χωρίζονται σε δύο κατηγορίες, στους τύπους τιμών (value types) και στους τύπους αναφοράς (reference types). Οι μεταβλητές τύπου τιμών, αποθηκεύουν τα δεδομένα τους στην στοίβα της μνήμης η οποία απελευθερώνεται όταν δεν χρησιμοποιείται. Οι τύποι τιμών είναι οι εξής: int, uint, long, ulong, short, ushort, byte, sbyte, float, double, decimal, bool και char. Οι μεταβλητές τύπου αναφοράς, αποθηκεύουν μία αναφορά ή ένα δείκτη προς τα δεδομένα που αποθηκεύονται στον σωρό της μνήμης για την μεταβλητή και υπόκεινται σε περισυλλογή απορριμμάτων (garbage collection) κατά τον χρόνο εκτέλεσης του προγράμματος, όταν ποια δεν χρησιμοποιούνται. Οι τύποι αναφορών είναι οι κλάσεις, τα strings, όλοι οι πίνακες δεδομένων ανεξάρτητα αν ο τύπος τους είναι τύπος τιμής και οι αντιπρόσωποι (delegates). [11] Κλάσεις και Αντικείμενα Σε ό,τι αφορά την πλατφόρμα.net, η πιο θεμελιώδης δομή προγραμματισμού είναι ο τύπος κλάσης ή τάξης. Τυπικά μία κλάση είναι ένας τύπος που ορίζεται από τον χρήστη, που αποτελείται από δεδομένα πεδίου (field data - συχνά αποκαλούνται μεταβλητές μελών) και τα μέλη που λειτουργούν σε αυτά τα δεδομένα (κατασκευαστές (constructors), ιδιότητες (properties), μεθόδους (methods), γεγονότα (events), κλπ.). Συλλογικά, το σύνολο των δεδομένων πεδίου αντιπροσωπεύει την κατάσταση ενός στιγμιότυπου (instance) μιας κλάσης. H δύναμη των αντικειμενοστραφών γλωσσών προγραμματισμού, προέρχεται από την δυνατότητα ομαδοποίησης δεδομένων και σχετικών με τα δεδομένα λειτουργιών, σε μία ενιαία μονάδα, την κλάση όπου μπορεί να αναπαραστήσει το λογισμικό σαν οντότητες του πραγματικού κόσμου. [12] Ένα παράδειγμα μιας απλής κλάσης με τα χαρακτηριστικά που αναφέρθηκαν παραπάνω είναι η παρακάτω κλάση η οποία μοντελοποιεί ένα αυτοκίνητο: 23 Σ ε λ ί δ α

24 class Car // δεδομένα πεδίου public string carname; public int currspeed; // Δημιουργός public Car() carname = "Chuck"; currspeed = 10; // Δημιουργός με παράμετρο public Car( string pn ) carname = pn; // Δημιουργός με παράμετρο public Car( string pn, int cs ) carname = pn; currspeed = cs; // Δημόσιες Ιδιότητες public string CarName get return carname; set carname = value; public int CurrentSpeed get return currspeed; set currspeed = value; // Μεθοδος εκτύπωσης ονόματος και τρέχουσας ταχύτητας public void PrintState() Console.WriteLine("0 is going 1 MPH.", carname, currspeed); // Μεθοδος αύξησης ταχύτητας public void SpeedUp( int delta ) currspeed += delta; Interfaces Ένα interface δεν είναι τίποτα παραπάνω από ένα σύνολο αφηρημένων μελών. Με τον όρο αφηρημένο εννοούμε μία μέθοδο η οποία δεν έχει υλοποίηση. Τα μέλη που ορίζει ένα interface, εξαρτώνται από την συμπεριφορά την οποία θέλουν να μοντελοποιήσουν, ή αλλιώς, ένα interface εκφράζει τη συμπεριφορά που μία κλάση θέλει να υποστηρίξει. Επιπροσθέτως, μία κλάση μπορεί να υλοποιήσει απεριόριστο αριθμό interfaces, με αποτέλεσμα να υποστηρίζει πολλές συμπεριφορές. Το.NET Framework έχει εκατοντάδες τέτοια 24 Σ ε λ ί δ α

25 interfaces που υλοποιούνται από διάφορες κλάσεις και δομές. Παρακάτω βλέπουμε ένα δείγμα κώδικα που ορίζει ένα απλό interface με ένα μόνο μέλος και μία κλάση που το υλοποιεί. [13] public interface IPointy byte Points get; class Triangle : IPointy public Triangle() // Yλοποίηση του μέλους IPointy public byte Points get return 3; Αντιπρόσωποι και Γεγονότα (Delegates and Events) Ιστορικά, το Windows API έκανε συχνή χρήστη των τύπου-c δεικτών που δείχνουν σε μεθόδους στη μνήμη, για να δημιουργήσουν οντότητες που τις ονομάζουν λειτουργίες επανάκλησης (callbacks). Με τα callbacks οι προγραμματιστές, έδιναν την δυνατότητα σε μια συνάρτηση να επιστρέψει πίσω σε (call back) μία άλλη συνάρτηση. Με αυτή τη μέθοδο, ήταν σε θέση να χειριστούν το κλικ ενός κουμπιού, την κίνηση του ποντικιού, την επιλογή από ένα μενού και γενικά οποιαδήποτε αμφίδρομη επικοινωνία μεταξύ δύο οντοτήτων στην μνήμη. Το πρόβλημα με τις τυπικές τύπου-c συναρτήσεις, είναι ότι αντιπροσωπεύουν κάτι παραπάνω από ακατέργαστα δεδομένα στη μνήμη. Στο.ΝΕΤ Framework, αυτή η λειτουργία επιτυγχάνεται με πολύ ποιο ασφαλή και αντικειμενοστραφή τρόπο, χρησιμοποιώντας αντιπροσώπους (delegates). Στην ουσία οι αντιπρόσωποι είναι ασφαλή-τύπου αντικείμενα που δείχνουν σε άλλες μεθόδους (ή μια λίστα μεθόδων), που μπορούν να κληθούν σε μεταγενέστερο χρόνο. Συγκεκριμένα ένας αντιπρόσωπος διατηρεί τρία σημαντικά κομμάτια πληροφοριών: 1. Τη διεύθυνση στην μνήμη της μεθόδου που καλεί 2. Τις παραμέτρους της μεθόδου (αν υπάρχουν) 3. Τον τύπο επιστροφής της μεθόδου (αν υπάρχει) Για τη δημιουργία αντιπροσώπων στην C#, χρησιμοποιείται η λέξη-κλειδί delegate. Το όνομά του μπορεί να είναι οποιοδήποτε. Ωστόσο, o ορισμός του πρέπει να συνάδει με την μέθοδο. Για παράδειγμα, ο ακόλουθος τύπος αντιπροσώπου, (BinaryOp) μπορεί να δείχνει σε κάθε μέθοδο που επιστρέφει τύπο int και παίρνει δύο παραμέτρους του ίδιου τύπου. Παρακάτω βλέπουμε ένα παράδειγμα αντιπροσώπου και πώς χρησιμοποιείται: 25 Σ ε λ ί δ α

26 namespace SimpleDelegate // μπορεί να δείχνει σε όποια μέθοδο επιστρέφει int // και πέρνει 2 παράμετρους int public delegate int BinaryOp(int x, int y); // Κλάση που περιέχει μεθόδους που θα κληθούν από τον αντιπρόσωπο public class SimpleMath public static int Add(int x, int y) return x + y; public static int Subtract(int x, int y) return x - y; class Program static void Main(string[] args) // Δημιουργία του αντιπροσώπου που δείχνει στην μέθοδο Αdd() BinaryOp b = new BinaryOp(SimpleMath.Add); // Κλήση της Αdd() μεθόδου μέσω του αντιπροσώπου MessageBox.Show(string.Format(" = 0", b(10, 10))); Οι αντιπρόσωποι είναι πολύ ενδιαφέρουσες δομές, δεδομένου ότι επιτρέπουν στα αντικείμενα που βρίσκονται στην μνήμη να συμμετάσχουν σε μια αμφίδρομη συνομιλία. Ωστόσο δουλεύοντας με αντιπροσώπους, καταλήγουμε εύκολα σε επαναλαμβανόμενο κώδικα (boilerplate code) συνέχεια καθορίζοντας τον αντιπρόσωπο, δηλώνοντας τις απαραίτητες μεταβλητές και δημιουργώντας προσαρμοσμένες μεθόδους εγγραφής και διαγραφής για να διατηρήσουμε την ενθυλάκωση. Ως συντόμευση και για να μην δημιουργούμε συνέχεια μεθόδους που προσθέτουν και αφαιρούν μεθόδους από την λίστα κλήσης του αντιπροσώπου, χρησιμοποιείται η λέξη-κλειδί event. Όταν ο compiler επεξεργάζεται την συγκεκριμένη λέξη, παρεχόμαστε αυτόματα με μεθόδους εγγραφής/διαγραφής, καθώς και με όλες τις απαραίτητες μεταβλητές-μέλη, για τους αντιπροσώπους. Η λέξη event μπορεί να απλοποιήσει τον τρόπο με τον οποίο μία προσαρμοσμένη κλάση, στέλνει ειδοποιήσεις σε εξωτερικά αντικείμενα. Ο καθορισμός ενός event, είναι διαδικασία δύο σταδίων. Κατ αρχάς πρέπει να ορίσουμε έναν τύπο αντιπροσώπου που θα κρατήσει την λίστα των μεθόδων κλήσης, όταν το event τρέξει. Έπειτα, ορίζουμε ένα event με τους όρους του αντιπροσώπου. Παρακάτω βλέπουμε ένα απλό παράδειγμα: [14] 26 Σ ε λ ί δ α

27 public class Car public int CurrentSpeed get; set; public int MaxSpeed get; set; public string PetName get; set; private bool carisdead; public Car() MaxSpeed = 100; public Car( string name, int maxsp, int currsp ) CurrentSpeed = currsp; MaxSpeed = maxsp; PetName = name; // 1) Ορισμός του αντιπροσώπου public delegate void CarEngineHandler( string msgforcaller ); // Ορισμός των events public event CarEngineHandler Exploded; public event CarEngineHandler AboutToBlow; public void Accelerate( int delta ) // αν το αυτοκίνητο έχει χαλάσει if (carisdead) if (Exploded!= null) Exploded("Sorry, this car is dead..."); else CurrentSpeed += delta; // Είναι έτοινο να χαλάσει if (10 == MaxSpeed CurrentSpeed && AboutToBlow!= null) AboutToBlow("Careful buddy! Gonna blow!"); // Ακόμη OK! if (CurrentSpeed >= MaxSpeed) carisdead = true; else Console.WriteLine("CurrentSpeed = 0", CurrentSpeed); 3.4 Η Γλώσσα XAML H XAML είναι μία σχετικά απλή και γενικής χρήσης, δηλωτική γλώσσα προγραμματισμού για την κατασκευή και αρχικοποίηση αντικειμένων. Είναι παρόμοια με την XML, αλλά με ένα σύνολο κανόνων σχετικά με τα στοιχεία και χαρακτηριστικά της και την αντιστοίχισή τους σε αντικείμενα, της ιδιότητές τους και τις τιμές αυτών των ιδιοτήτων. Αποτελείται από κανόνες για το πώς οι compilers πρέπει να αναλύσουν την XML και έχει λέξεις-κλειδιά, αλλά δεν καθορίζει κάποια ενδιαφέρονται στοιχεία από μόνη της. Με άλλα λόγια, όταν μιλάμε για XAML χωρίς ένα Framework όπως το Windows Phone SDK, είναι σαν να μιλάμε για C# χωρίς το.net Framework. Η Microsoft έχει τυποποιήσει την έννοια των XAML λεξιλογίων που καθορίζουν το σύνολο των έγκυρων στοιχείων για ένα συγκεκριμένο τομέα, όπως για παράδειγμα, τι διαφορές έχουν τα WPF XAML 27 Σ ε λ ί δ α

28 αρχεία, με τα Windows Phone XAML αρχεία. Αν και η XAML αρχικά σχεδιάστηκε για την τεχνολογία WPF, πλέον χρησιμοποιείται και από άλλες τεχνολογίες (Silverlight, Windows 8, Windows Phone 8). [15] Στοιχεία και Χαρακτηριστικά (Elements and Attributes) Οι προδιαγραφές της XAML, ορίζουν τους κανόνες που αντιστοιχίζουν.net τύπους, ιδιότητες και events, σε XML τύπους, ιδιότητες και events. Αυτό μπορούμε να το δούμε στο παρακάτω παράδειγμα που συγκρίνει ένα XAML button με ένα σε C#. XAML: <Button xmlns=" Content="OK"/> C#: System.Windows.Controls.Button b = new System.Windows.Controls.Button(); b.content = "OK"; Η δήλωση ενός στοιχείου XML στην XAML (γνωστό και ως στοιχείο αντικειμένου), είναι ισοδύναμο με την αρχικοποίηση ενός.νετ αντικειμένου μέσω ενός δημιουργού στην C#. Δίνοντας μια τιμή σε ένα χαρακτηριστικό, είναι σαν να δίνουμε τιμή στην αντίστοιχη ιδιότητα με το ίδιο όνομα του αντικειμένου, ή σαν να προσθέτουμε στη λίστα κλήσεων μεθόδων του button για το click, ένα event με το ίδιο όνομα. [16] Για παράδειγμα: XAML: <Button xmlns=" Content="OK" Click="button_Click"/> C#: System.Windows.Controls.Button b = new System.Windows.Controls.Button(); b.click += new System.Windows.RoutedEventHandler(button_Click); b.content = "OK"; Στοιχεία Ιδιοτήτων (Property Elements) Η ΧΑΜL είναι γλώσσα προγραμματισμού πλούσια σε σύνθεση επειδή ακριβώς μπορούμε να προσθέσουμε σαν περιεχόμενο στα λεγόμενα Content Controls οποιοδήποτε αυθαίρετο αντικείμενο. Στο παρακάτω παράδειγμα προσθέτουμε ένα μαύρο τετράγωνο στο button, για να προσομοιώσουμε το πλήκτρο stop σε ένα μέσο αναπαραγωγής. 28 Σ ε λ ί δ α

29 XAML: <Button xmlns=" Background="White"> <Button.Content> <Rectangle Height="40" Width="40" Fill="Black"/> </Button.Content> </Button> C#: Button b = new Button(); b.content = "OK"; b.background = new SolidColorBrush(Colors.White); Η ιδιότητα Content του button, είναι τύπου object της βασικής κλάσης ολόκληρου του.net Framework της οποίας τις ιδιότητες αποκτούν όλες οι υπόλοιπες αφού την κληρονομούν, με αποτέλεσμα τα Controls με την ιδιότητα Content να μπορούν να φιλοξενήσουν οποιοδήποτε αντικείμενο. [17] Μετατροπείς Tύπων (Type Converters) Αυτό που μπορεί να αναρωτηθεί κανείς, είναι το πώς το White στο προηγούμενο δείγμα κώδικα XAML είναι το αντίστοιχο με τον τύπο SolidColorBrush που προέρχεται από τον τύπο Brush, στον κώδικα C#. Πράγματι αυτό το παράδειγμα εκθέτει μια λεπτότητα με το να χρησιμοποιούμε strings για να ορίζουμε ιδιότητες στην XAML οι οποίες είναι διαφορετικού τύπου από string. Σ αυτές τις περιπτώσεις, o compiler της XAML πρέπει να κοιτάξει για ένα μετατροπέα τύπου ο οποίος γνωρίζει πώς να μετατρέψει το string στον επιθυμητό τύπο δεδομένων. Το Windows Phone SDK από μόνο του παρέχει πολλούς μετατροπείς τύπων για τους ποιο συνηθισμένους τύπους ιδιοτήτων (Brush, Color, FontWeight, Point κλπ.). [18] Markup Επεκτάσεις (Markup Extensions) Οι markup επεκτάσεις, όπως και οι μετατροπείς τύπων, δίνουν την δυνατότητα να επεκτείνουμε την εκφραστικότητα της XAML. Μπορούν και οι δυο να αξιολογήσουν μία string ιδιότητα κατά τον χρόνο εκτέλεσης και παράγουν ένα κατάλληλο αντικείμενο βασισμένο στην τιμή του string. Όπως και με τους μετατροπείς τύπων, υπάρχουν και πολλές markup επεκτάσεις ενσωματωμένες στο.νετ Framework. Σε αντίθεση όμως με τους μετατροπείς, οι επεκτάσεις καλούνται από XAML κώδικα με σαφή και συνεπή σύνταξη. Για αυτό τον λόγο, η χρησιμοποίηση των markup extensions είναι η προτιμώμενη προσέγγιση για την επέκταση της XAML. Επιπλέον, με τις markup extensions δίνεται η δυνατότητα να ξεπεραστεί ο περιορισμός στη χρησιμοποίηση μόνο των προ-εγκατεστημένων μετατροπέων τύπων, ορίζοντας δικών μας. 29 Σ ε λ ί δ α

30 Κάθε φορά που η τιμή ενός χαρακτηριστικού περικλείεται σε άγκιστρα (), ο XAML compiler το αντιμετωπίζει ως markup extension και όχι σαν string. Το ακόλουθο Button χρησιμοποιεί τρεις διαφορετικές τιμές ως markup extension, για τρεις διαφορετικές ιδιότητές του: Το πρώτο αναγνωριστικό σε κάθε σύνολο από άγκιστρα είναι το όνομα της κλάσης markup extension, το οποίο πρέπει να κληρονομείται από την κλάση MarkupExtension. Σε αυτό το παράδειγμα, οι κλάσεις NullExtension (x:null) και StaticExtension (x:static) είναι κλάσεις που βρίσκονται στο namespace System.Windows.Markup, οπότε το πρόθεμα x πρέπει να χρησιμοποιηθεί για να βρεθούν. Το Binding που δεν έχει κατάληψη Extension) βρίσκεται στο System.Windows.Data namespace και μπορεί να βρεθεί από το προεπιλεγμένο XML namespace. Αν μία markup extension μπορεί να υποστηρίξει παραμέτρους, μπορούν να καθοριστούν, οριοθετημένοι με κόμματα. Οι παράμετροι θέσης (όπως το SystemParameters.IconHeight) αντιμετωπίζονται ως string παράμετροι για τον κατάλληλο δημιουργό της markup extension κλάσης. Οι παράμετροι ονόματος (Path και Relative) δίνουν την δυνατότητα να ορίσουμε τις ιδιότητες με ονόματα ίδια με αυτά του markup extension αντικειμένου. Οι τιμές αυτών των ιδιοτήτων μπορούν να είναι και οι ίδιες markup extensions, χρησιμοποιώντας ένθετα άγκιστρα (όπως με την τιμή RelativeSource), ή κανονικές τιμές που θα προσδιοριστούν με τον συνηθισμένο τρόπο μέσω τροποποίησης τύπων. [19] Data Binding και Value Converters (μετατροπείς τιμών) Ο όρος data (δεδομένα) χρησιμοποιείται γενικά για να περιγράψει ένα αυθαίρετο.net αντικείμενο. Μπορεί να εννοούμε μια συλλογή αντικειμένων, ένα αρχείο XML, μια web υπηρεσία (web service), ένα πίνακα μια βάσης δεδομένων, ένα προσαρμοσμένο αντικείμενο (custom object), ή ακόμη και ένα control όπως το Βutton. Το data binding είναι ένας τρόπος να δέσουμε αυθαίρετα.νετ αντικείμενα. Ένα κλασικό παράδειγμα, είναι η προβολή στο UI (user interface, σε ένα control τύπου ListBox πχ.) στοιχείων ενός XML αρχείου, ή των εγγραφών ενός πίνακα μιας βάσης δεδομένων, ή μιας συλλογής αντικειμένων που βρίσκεται στην μνήμη. Όταν έχουμε να κάνουμε με ItemsControls (το ListBox και μια σειρά από άλλα controls κληρονομούν/είναι ItemsControls), τα οποία θέλουμε να δέσουμε με ένα DataSource (πηγή δεδομένων) το οποίο μπορεί να είναι μια λίστα δεδομένων, αντί να διαβάζουμε ένα ένα τα αντικείμενα της πηγής και να προσθέτουμε κάθε φορά ένα αντικείμενο τύπου ListBoxItem στο ListbBox, θα ήταν προτιμότερο να μπορούσαμε να του πούμε να δημιουργήσει αυτόματα όλα τα αντικείμενα τύπου ListBoxItem που χρειάζεται για να προβάλει στο UI τα αντικείμενα της DataSource. To data binding εξυπηρετεί ακριβώς αυτό τον σκοπό. 30 Σ ε λ ί δ α

31 Η κλάση System.Windows.Data.Binding είναι το αντικείμενο στο.net που συνδέει δύο ιδιότητες και κρατάει ανοιχτό ένα κανάλι επικοινωνίας μεταξύ τους. Υπάρχει η δυνατότητα να ορίσουμε ένα Binding μία φορά το οποίο φροντίζει να κρατήσει συγχρονισμένα τα δεδομένα της πηγής με αυτά του Control για όσο η εφαρμογή τρέχει. Για να χρησιμοποιήσουμε την κλάση στην XAML, μπορούμε να ορίσουμε με ένα αντικείμενο Binding την ιδιότητα του Control που θα είναι ο στόχος και να χρησιμοποιήσουμε markup extensions για να δώσουμε μια τιμή σε αυτή την ιδιότητα. Το παρακάτω δείγμα κώδικα, με την βοήθεια της κλάσης Binding, δίνει τιμή στην ιδιότητα Text του TextBlock ίδια με αυτή της ιδιότητας Text του επιλεγμένου στοιχείου ενός άλλου control με το όνομα listbox: <TextBlock x:name="textblock" Text="Binding ElementName=listBox, Path=SelectedItem.Text" FontSize="16" /> Η κλάση Binding έχει πολύ μεγάλη ευελιξία στο πως μπορούμε να την χρησιμοποιήσουμε, θέτοντας ιδιότητες της για να πετύχουμε το επιθυμητό αποτέλεσμα και χρησιμοποιείται κατά κόρον σε όλες τις XAML τεχνολογίες. To Data Context είναι μια έννοια που επιτρέπει στα XAML στοιχεία να κληρονομούν πληροφορίες από τα στοιχεία-πατέρες τους, σχετικά με την πηγή δεδομένων (data source) που χρησιμοποιούν στο binding. Κάθε CLR αντικείμενο μπορεί να αποτελέσει το data context ενός στοιχείου, με τα bindings να αξιολογούν τις ιδιότητες αυτού του αντικειμένου. Στην XAML, η ιδιότητα DataContext ορίζεται μέσω μιας δήλωσης binding. Οι μετατροπείς τιμών (value converters) μπορούν να μορφοποιήσουν τα δεδομένα από τον τύπο της πηγής σε ένα άλλο τύπο. Χρησιμοποιούνται για να συνδυάσουν μία πηγή και ένα στόχο που είναι διαφορετικού τύπου. Για παράδειγμα, θα μπορούσαμε να αλλάξουμε το φόντο (Background - είναι τύπου Brush) ενός στοιχείου, βασισμένοι στην τιμή μιας πηγής που δεν είναι τύπου Brush. Για να δημιουργήσουμε ένα ValueConverter πρέπει να γράψουμε μία κλάση που να υλοποιεί το interface IValueConverter. To interface έχει δύο απλές μεθόδους, την Convert() που μέσω παραμέτρου την τροφοδοτούμε με την τιμή του τύπου δεδομένων της πηγής (datasource) για να την μετατρέψει στον τύπο που περιμένει ο στόχος και την ConvertBack() που κάνει το αντίθετο. Στην εφαρμογή που αναπτύχθηκε εφαρμόστηκαν σε πολλές περιπτώσεις οι value converters. Παρακάτω βλέπουμε ένα παράδειγμα χρησιμοποίησης ενός ValueConverter που μετατρέπει μια τιμή τύπου bool σε μια τιμή τύπου Visibility, ιδιότητα που ελέγχει την ορατότητα των UI στοιχείων. [20] <TextBlock Name="nameTextBlock" Text="Binding Student.FirstName, Mode=TwoWay" FontSize="15" HorizontalAlignment="Center" Margin="0,0,0,4" VerticalAlignment="Bottom" Visibility="Binding ElementName=classLayoutPage, Path=DataContext.ShowNames, Converter=StaticResource BooleanToVisibilityConverter, ConverterParameter=Visible"/> 31 Σ ε λ ί δ α

32 Η υλοποίηση της κλάσης BooleanToVisibilityConverter φαίνεται στο επόμενο απόσπασμα κώδικα: public class BooleanToVisibilityConverter : IValueConverter public object Convert(object value, Type targettype, object parameter, CultureInfo culture) var paramvalue = (string)parameter; if (value == null (bool)value) return paramvalue == "Collapsed"? Visibility.Collapsed : Visibility.Visible; return paramvalue == "Collapsed"? Visibility.Visible : Visibility.Collapsed; public object ConvertBack(object value, Type targettype, object parameter, CultureInfo culture) var paramvalue = (string)parameter; if (value == null (Visibility)value == Visibility.Visible) return paramvalue!= "Collapsed"; return paramvalue == "Collapsed"; Styles και Templates Το ποιο διάσημο χαρακτηριστικό της XAML, είναι αναμφισβήτητα η ικανότητα να δίνει σε ένα γραφικό περιβάλλον (User Interface) μια ριζικά διαφορετική όψη, χωρίς να χρειάζεται να εγκαταλείψει όλες τις ενσωματωμένες λειτουργίες που παρέχει. Ακόμη και στην HTML με τα Cascading Styles Sheets (CSS), δεν υπάρχει τόσο μεγάλη δυνατότητα διαφοροποίησης και αυτός είναι ο λόγος για τον οποίο τα περισσότερα website, χρησιμοποιούν φωτογραφίες για να αναπαραστήσουν κουμπιά και όχι πραγματικά HTML κουμπιά. Φυσικά είναι αρκετά εύκολο να προσομοιωθεί η συμπεριφορά ενός κουμπιού με μια εικόνα, αλλά τι γίνεται όταν θέλουμε να δώσουμε διαφορετική μορφή σε ένα SELECT element (η HTML έκδοση του.net ComboBox); H XAML ενσωματώνει την έννοια των Styles και Templates. Τα Styles είναι ένας απλός μηχανισμός για την διαφοροποίηση των τιμών των ιδιοτήτων (property values) από τα στοιχεία του γραφικού περιβάλλοντος (user interface elements). Τα Styles είναι επίσης θεμελιώδη, για τον μηχανισμό των Templates. Ένα style αναπαρίσταται από την κλάση System.Windows.Style. Η κυρίαρχη λειτουργία του, είναι να ομαδοποιήσει τιμές ιδιοτήτων, που σε άλλη περίπτωση θα θέτονταν μία, μία, ξεχωριστά. Ο στόχος είναι ο διαμοιρασμός αυτής της ομαδοποίησης τιμών και η εφαρμογή τους σε πολλά στοιχεία του UI. Παρακάτω βλέπουμε ένα παράδειγμα, όπου εμφανίζουμε δύο TextBlocks και εφαρμόζουμε 32 Σ ε λ ί δ α

33 στο δεύτερο από αυτά, ένα style που έχουμε ορίσει, αφήνοντας το πρώτο με τις προεπιλεγμένες τιμές του για τις συγκεκριμένες ιδιότητες. <phone:phoneapplicationpage.resources> <Style x:key="textblockstyle" TargetType="TextBlock"> <Setter Property="Foreground" Value="StaticResource PhoneAccentBrush"/> <Setter Property="FontSize" Value="40"/> </Style> </phone:phoneapplicationpage.resources>... <TextBlock Text="This is the default TextBlock"/> <TextBlock Style="StaticResource textblockstyle" Text="This is a Styled TextBlock"/> Παρακάτω φαίνεται το αποτέλεσμα: Τα controls έχουν πολλές ιδιότητες που μπορούν να χρησιμοποιηθούν για να προσαρμόσουμε το πώς μοιάζουν. Για παράδειγμα στο button, μπορούμε να ρυθμίσουμε τις ιδιότητες Background και Foreground. Οι ιδιότητες όμως δεν μας επιτρέπουν να παρέμβουμε πολύ. Ένα template, αντιθέτως επιτρέπει να αντικαταστήσουν ολόκληρο το οπτικό δέντρο (visual tree) ενός control, με ότι μπορούμε να φανταστούμε, κρατώντας παράλληλα όλες τις λειτουργίες που εκτελεί ανέπαφες. Κάθε control, έχει ένα προεπιλεγμένο template, για να προβάλει τα στοιχεία του. Ο πηγαίος κώδικας κάθε control, βρίσκεται σε ξεχωριστό μέρος από ότι το template του και δεν επηρεάζεται από αυτό. Τα template, είναι η επιθυμία να ξεχωρίσουμε το γραφικό κομμάτι από την λογική και τις λειτουργίες ενός control. Τα templates παριστάνονται από την κλάση ControlTemplate που κληρονομεί την αυθαίρετη κλάση FrameworkTemplate. Το σημαντικό κομμάτι μιας ControlTemplate κλάσης είναι η ιδιότητα Content του γραφικού του δέντρου, που περιέχει το δέντρο των στοιχείων που ορίζει το πώς θα μοιάζει. Αφού ορίσουμε ένα ControlTemplate μπορούμε να το εφαρμόσουμε σε κάθε Control θέτοντας την ιδιότητα Template. [21] Παρακάτω βλέπουμε ένα παράδειγμα με το πώς φαίνεται ένα button με το default template του και πως με αυτό που έχουμε ορίσει 33 Σ ε λ ί δ α

34 <Page.Resources> <ControlTemplate x:key="custombuttontemplate"> <Grid> <Ellipse Width="100" Height="100"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Offset="0" Color="Blue"/> <GradientStop Offset="1" Color="Red"/> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <Ellipse Width="80" Height="80"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Offset="0" Color="White"/> <GradientStop Offset="1" Color="Transparent"/> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <TextBlock Foreground="White" Text="Circle Button" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14"/> </Grid> </ControlTemplate> </Page.Resources> <Grid> <StackPanel VerticalAlignment="Center"> <Button VerticalAlignment="Center" HorizontalAlignment="Center" Content="Default Button"/> <Button Template="StaticResource custombuttontemplate" HorizontalAlignment="Center"/> </StackPanel> </Grid> Το αποτέλεσμα βλέπουμε παρακάτω: ΚΕΦΑΛΑΙΟ 4 Ανάπτυξη Εφαρμογών Windows Phone 8 34 Σ ε λ ί δ α

35 Η βιομηχανία κινητής τηλεφωνίας είναι ιδιαίτερα ανταγωνιστική. Μετά από σκληρό ανταγωνισμό με άλλες εταιρίες η Microsoft, προσπάθησε να επανενταχθεί στην αγορά, δίνοντας ιδιαίτερη έμφαση στο λογισμικό, το hardware και τις υπηρεσίες που προσφέρει. Το Windows Phone 8 βασίζεται στο Windows Phone 7 και αντιπροσωπεύει τον διαχωρισμό από το παρελθόν. Ως συνέπεια, οι εφαρμογές για Windows Mobile 6.5 δεν είναι συμβατές με το Windows Phone. [22] 4.1 Θεμελιώδεις έννοιες Το αρχείο XAP Όταν κάνουμε build ένα Windows Phone 8 project, το Visual Studio παράγει αρκετά αρχεία που μπορεί να είναι βιβλιοθήκες, εικόνες, config αρχεία, manifest αρχεία κλπ. Ένα αρχείο XAP περιέχει όλα αυτά τα απαραίτητα αρχεία του project ομαδοποιημένα, έτοιμα για εγκατάσταση. Είναι ένα συμπιεσμένο zip αρχείο που περιέχει τα παραγόμενα αρχεία του project και δύο manifest αρχεία. Το AppManifest.xml και το WMAAppManifest.xml Η εφαρμογή εγκατάστασης Τα XAP αρχεία μπορούμε να τα εγκαταστήσουμε για να τα δοκιμάσουμε σε μια ξεκλείδωτη συσκευή προγραμματιστή με την Εφαρμογή Εγκατάστασης (Application Deployment) που βρίσκεται στο Windows Phone SDK Μοντέλο Δυνατοτήτων Windows Phone 35 Σ ε λ ί δ α

36 Η Microsoft χρησιμοποιεί ένα μοντέλο ασφάλειας που απαιτεί από τον χρήστη να δώσει την συγκατάθεσή του ώστε μια εφαρμογή να μπορέσει να έχει πρόσβαση σε συγκεκριμένες λειτουργίες, που ονομάζεται δυνατότητες. Μια δυνατότητα είναι ένας πόρος του τηλεφώνου που όταν χρησιμοποιηθεί από την εφαρμογή, μπορεί να φέρει θέματα προστασίας ιδιωτικών δεδομένων και ασφάλειας, ή μπορεί να επιφέρει ένα κόστος, πράγματα τα οποία πρέπει να γνωρίζουν οι χρήστες. Παραδείγματα δυνατοτήτων περιλαμβάνουν την κάμερα, τις υπηρεσίες γεωγραφικής θέσης, το μικρόφωνο και τα SMS. Οι δυνατότητες είναι ένας τρόπος να ενημερώνονται οι χρήστες για το τι προσβάσεις έχει μία εφαρμογή στη συσκευή. Φαίνονται στους υποψήφιους χρήστες, αυτούς που σκέφτονται να κατεβάσουν την εφαρμογή από το Κατάστημα Windows Phone (Marketplace). Οι δυνατότητες ορίζονται στο αρχείο WMAppManifest.xml Κριτήρια Απόδοσης εφαρμογών Η απόδοση των εφαρμογών είναι σημαντική για τη διασφάλιση της ευχάριστης εμπειρίας του χρήστη. Γι αυτό το λόγο η Microsoft έχει ορίσει κάποια κριτήρια που πρέπει να τηρούν οι εφαρμογές για να λάβουν την πιστοποίηση δημοσίευσης της εφαρμογής για το Windows Phone Marketplace. Η πιστοποίηση περιλαμβάνει μία σειρά από κριτήρια που αφορούν την απόδοση της εφαρμογής όπως: Αν μια εφαρμογή εκτελεί μία λειτουργία που διαρκεί πάνω από τρία δευτερόλεπτα και την κάνει να φαίνεται ότι δεν ανταποκρίνεται, πρέπει να παρουσιάζεται μία οπτική πρόοδος ή ένας απασχολημένος δείκτης (busy indicator). Μια εφαρμογή πρέπει να εμφανίζει την αρχική οθόνη σε 5 δευτερόλεπτα. Μία εφαρμογή πρέπει να ανταποκρίνεται στην αλληλεπίδραση με τον χρήστη, μέσα σε 20 δευτερόλεπτα από την εκκίνηση. Μια εφαρμογή μπορεί να καταναλώνει από 150MB (για τις συσκευές που έχουν 512 MB RAM) μέχρι 300 ΜΒ (για συσκευές με μεγαλύτερη RAM) μνήμης. H δυνατότητα ID_FUNCCAP_EXTEND_MEM, μπορεί να προστεθεί στο αρχείο WMAppManifest.xml για να παραχωρήσει περισσότερη μνήμη στην εφαρμογή Η κλάση Application Οι XAML εφαρμογές, βασίζονται στην παρουσία της κλάσης System.Windows.Application για την εκτέλεση της εκκίνηση των δραστηριοτήτων της εφαρμογής. Το template δημιουργίας μιας Windows Phone εφαρμογής δημιουργεί μία κλάση App που την κληρονομεί. Η κλάση App, αποτελείται από ένα αρχείο App.xaml.cs για C# κώδικα και ένα XAML αρχείο App.xaml. Το XAML αρχείο επιτρέπει να ορίσουμε του πόρους της εφαρμογής (styles, templates κλπ.) που χρησιμοποιούνται κατά την διάρκεια λειτουργίας της. Παρακάτω βλέπουμε το αρχείο App.xaml μιας καινούριας εφαρμογής. 36 Σ ε λ ί δ α

37 <Application x:class="helloworld.app" xmlns=" xmlns:x=" xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone"> <!--Application Resources--> <Application.Resources> <local:localizedstrings xmlns:local="clr-namespace:helloworld" x:key="localizedstrings"/> </Application.Resources> <Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:phoneapplicationservice Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/> </Application.ApplicationLifetimeObjects> </Application> Μέσα στο αρχείο App.xaml η κλάση PhoneApplicationService, χρησιμοποιείται για την εγγραφή events που τρέχουν κατά την διάρκεια λειτουργίας της εφαρμογής. Παρακάτω θα δούμε το Μοντέλο Εκτέλεσης Εφαρμογών. Οι μέθοδοι χειρισμού των events βρίσκονται στην κλάση App. Η κλάση χρησιμοποιείται για να εκτελέσουμε λειτουργίες πριν εμφανιστεί το γραφικό περιβάλλον. Δημιουργεί ένα στιγμιότυπο της κλάσης PhoneApplicationFrame, που φιλοξενεί όλες τις σελίδες που ανοίγει η εφαρμογή κατά τη λειτουργία, η οποία είναι ανάλογη με έναν web browser που χειρίζεται την πλοήγηση από σελίδα σε σελίδα. H κλάση App ορίζει ένα event το οποίο εκτελείται για ανεπίλυτες εξαιρέσεις. Όταν μια εξαίρεση προκληθεί οπουδήποτε στην εφαρμογή και δεν χειριστεί κατάλληλα, το event Application.UnhandledException τρέχει παρέχοντας την δυνατότητα να καταγράψουμε την εξαίρεση για επίλυσή της σε μελλοντική αναβάθμιση ή να ενημερώσουμε τον χρήστη με ένα μήνυμα. Στην εφαρμογή που αναπτύχθηκε, χρησιμοποιούμε την κλάση ExceptionLogger που αναλαμβάνει να καταγράψει τυχών τέτοιες εξαιρέσεις σε ένα αρχείο. Σε κάθε εκκίνηση της εφαρμογής, η ίδια κλάση ελέγχει το αρχείο και αν υπάρχει κάποια εξαίρεση, εμφανίζει ένα μήνυμα στον χρήστη, όπου τον προτρέπει να στείλει μια αναφορά της εξαίρεσης στον προγραμματιστή για την επίλυσή της. Παρακάτω βλέπουμε το event που καταγράφει την εξαίρεση: // Code to execute on Unhandled Exceptions private void Application_UnhandledException( object sender, ApplicationUnhandledExceptionEventArgs e) // Report exception. This will save the exception // and display a message to the user // next time the app lanches on whether to report the exception or not ExceptionLogger.ReportException(e.ExceptionObject); 37 Σ ε λ ί δ α

38 4.1.6 Εφαρμόζοντας το πρότυπο Model-View-ViewModel σε μία Windows Phone εφαρμογή Ένα κυρίαρχο πρότυπο που έχει προκύψει για τις τεχνολογίες δημιουργίας γραφικού περιβάλλοντος με την XAML, είναι το Model-View-ViewModel (MVVM). Το MVVM είναι ένα πρότυπο αρχιτεκτονικής, που διαχωρίζει την λογική του γραφικού περιβάλλοντος από την λογική των υπόλοιπων λειτουργιών της εφαρμογής που τρέχουν πίσω από αυτό. Το πρότυπο αξιοποιεί της ισχυρές δυνατότητες του data binding στις τεχνολογίες XAML και επιτρέπει την χαλαρή σύνδεση (loose coupling) μεταξύ του View και του ViewModel, έτσι ώστε το ViewModel να μην χρειάζεται να χειριστεί άμεσα το View. Το γεγονός αυτό σχεδόν εξαλείφει την ανάγκη ύπαρξης κώδικα, στο C# αρχείο που υπάρχει πίσω από κάθε σελίδα XAML της εφαρμογής. Παρακάτω βλέπουμε τα βασικά στοιχεία του προτύπου MVVM: Model Το μοντέλο είναι υπεύθυνο για την διαχείριση και την παροχή των δεδομένων. View Η όψη είναι υπεύθυνη για την παρουσίαση των δεδομένων. Είναι συνήθως ένα UI στοιχείο και στην περίπτωση των XAML εφαρμογών για Windows Phone, είναι μία κλάση UserControl, η PhoneApplicationPage. ViewModel Η γέφυρα επικοινωνίας μεταξύ του μοντέλου και της όψης. Το ViewModel είναι σχεδιασμένο έτσι ώστε να ανταποκρίνεται σε διαταγές (Commands) που είναι συνδεδεμένες με UI στοιχεία της όψης. Μπορούμε να φανταστούμε το ViewModel ως το μοντέλο της όψης. Υπάρχουν πολλά οφέλη από τη χρησιμοποίηση του προτύπου. Μπορεί να βελτιώσει τον τρόπο με τον οποίο τεστάρουμε τις εφαρμογές, αφού μας επιτρέπει να τεστάρουμε τον κώδικα με Unit Tests χωρίς πραγματικά δεδομένα. Τοποθετώντας την λογική της αλληλεπίδρασης σε ένα ViewModel, καθιστούμε ευκολότερο τον επανασχεδιασμό (redesign) μιας εφαρμογής, μειώνοντας την ανάγκη να επανασχεδιάσουμε την λογική αλληλεπίδρασης. Περιστασιακά μπορεί να θέλουμε να επαναχρησιμοποιήσουμε την λογική του γραφικού περιβάλλοντος σε διαφορετικές εφαρμογές, ή σε μικρότερο βαθμό, σε εφαρμογές που στοχεύουν σε διαφορετικές πλατφόρμες όπως για WPF εφαρμογές, Silverlight εφαρμογές, Windows 8 εφαρμογές κλπ. Η αποσύνδεση της λογικής αλληλεπίδρασης, από κάθε τεχνολογία γραφικού περιβάλλοντος μας επιτρέπει να στοχεύουμε σε πολλαπλές πλατφόρμες. Το MVVM βασίζεται στην ανάθεση ενός ViewModel στην ιδιότητα DataContext ενός View. Αυτό συνήθως γίνεται στον δημιουργό (constructor) του View: public partial class MainPage : PhoneApplicationPage /// <summary> /// Constructor /// </summary> public MainPage() InitializeComponent(); this.datacontext = new MainPageViewModel(this.State);... Με την ανάθεση του ViewModel στο DataContext του View, μπορούμε να χρησιμοποιήσουμε της ιδιότητες του ως binding εκφράσεις στην XAML της κάθε σελίδας. 38 Σ ε λ ί δ α

39 Η κλάση ViewModelBase την οποία κληρονομούν όλα τα ViewModels που χρησιμοποιεί η εφαρμογή, συγκεντρώνει και μοιράζει σε αυτά, κοινό κώδικα και λειτουργίες που χρησιμοποιούνται ανάμεσα σε όλα τα ViewModels για την αποφυγή επαναλαμβανόμενου κώδικα (η λεγόμενη αρχή DRY Don t Repeat Yourself). Μια τέτοια λειτουργία είναι η Ειδοποίηση Αλλαγής Ιδιοτήτων (Property Change Notification). Αποτελεί σημείο κλειδί για την εφαρμογή του MVVM και σχετίζεται με τα data bindings. Επιτρέπει σε ένα αντικείμενο πηγής (source object) να ενημερώσει ένα στοιχείο του UI το οποίο έχει binding με μία ιδιότητά του, ότι η τιμή του χρειάζεται ενημέρωση στο γραφικό περιβάλλον. Αυτό γίνεται μέσω της υλοποίησης του interface INotifyPropertyChanged, το οποίο έχει ένα μοναδικό μέλος, το event PropertyChanged. Η υλοποίηση του γίνεται ως εξής: public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged( [CallerMemberName] string propertyname = null) PropertyChangedEventHandler tempevent = PropertyChanged; if (tempevent!= null) tempevent(this, new PropertyChangedEventArgs(propertyName)); Για την ενημέρωσης αλλαγής τιμής μιας ιδιότητας απλά καλούμε την μέθοδο OnPropertyChanged() στην set πρόσβαση της ιδιότητας, όπως φαίνεται παρακάτω: string foo; public string Foo get return foo; set if (foo!= value) foo = value; OnPropertyChanged(); Με την χρήση του ViewModelBase, η κλήση γίνεται μέσω της μεθόδου Assign() που κληρονομούν τα ViewModels από αυτήν, η οποία περιέχει την υλοποίηση του παραπάνω event. string foo; public string Foo get return foo; set Assign(ref foo, value); 39 Σ ε λ ί δ α

40 Παρακάτω βλέπουμε το ViewModel της σελίδας που εμφανίζει την λίστα μαθητών της εφαρμογής. public class StudentsListViewModel : ViewModelBase #region Private Fields readonly IDictionary<string, object> _transientstatedictionary; const string transientstatekey = "StudentsListViewModel_StudentsGroupings"; private bool _loaded; private int _studentscount; private List<ObservableStudentGrouping<Student>> _studentgroupings; #endregion /// <summary> /// Constructor /// </summary> public StudentsListViewModel( IDictionary<string, object> paramtransientstatedictionary) this._transientstatedictionary = ArgumentValidator.AssertNotNull( paramtransientstatedictionary, "transientstatedictionary"); if (_studentgroupings!= null) return; LoadStudents(); // Load Students from database #region Properties public bool Loaded get return _loaded; set Assign(ref _loaded, value); public int StudentsCount get return _studentscount; set Assign(ref _studentscount, value); public List<ObservableStudentGrouping<Student>> StudentGroupings get return _studentgroupings; set Assign(ref _studentgroupings, value); #endregion /// <summary> /// Loads all Students into groups /// </summary> public void LoadStudents() var linq2sql = new LinqToSqlUtility(); var students = linq2sql.getallstudents(); StudentsCount = students.count; StudentGroupings = ObservableStudentGrouping<Student>.CreateGroups(students); 40 Σ ε λ ί δ α

41 #region Transient State public void LoadTransientState() object transientstate; if (_transientstatedictionary.trygetvalue( transientstatekey, out transientstate)) _studentgroupings = transientstate as List<ObservableStudentGrouping<Student>>; StudentsCount = 0; if (_studentgroupings!= null) foreach (ObservableStudentGrouping<Student> studentgroupingold in from studentgrouping in StudentGroupings from student in studentgrouping.where( s => s!= null) select studentgrouping) StudentsCount++; if (_studentgroupings!= null) Loaded = true; public void SaveTransientState() _transientstatedictionary[transientstatekey] = _studentgroupings; #endregion 4.2 Το Μοντέλο Εκτέλεσης Εφαρμογών (Application Execution Model) Η κατανόηση των γεγονότων (events) της κλάσης App, κατά τη διάρκεια ζωής μιας εφαρμογής είναι κρίσιμη για την παροχή βέλτιστης εμπειρίας στον χρήστη. Το μοντέλο μονής εκτέλεσης εφαρμογών, μπορεί να διακοπεί ή να τερματιστεί ανά πάσα στιγμή. Η αποθήκευση της κατάστασης μιας εφαρμογής, όταν για κάποιο λόγο διακοπεί και η επαναφορά της στην κατάσταση την οποία βρισκόταν πριν διακοπεί όταν ξανά ενεργοποιηθεί, είναι ευθύνη των προγραμματιστών. Αν και το λειτουργικό σύστημα Windows Phone, υποστηρίζει την δυνατότητα γρήγορης εναλλαγής εφαρμογών, όπου η εφαρμογές αποθηκεύονται στην μνήμη και τα threads της αποβάλλονται, υπάρχει η ανάγκη να διατηρήσουμε την κατάσταση της εφαρμογής στην μνήμη. Η διατήρηση της κατάστασης, δεν πρέπει να αναβάλλεται και αποτελεί μία από τις μεγαλύτερες προκλήσεις στην ανάπτυξη εφαρμογών για Windows Phone. Το μοντέλο εκτέλεσης εφαρμογών, είναι σχεδιασμένο έτσι ώστε να κάνει το κινητό να ανταποκρίνεται, όσο το δυνατόν καλύτερα και να μεγιστοποιήσει την διάρκεια ζωής της μπαταρίας του. Ένας τρόπος για να επιτευχθεί αυτό, είναι ο περιορισμός των εφαρμογών που τρέχουν ταυτόχρονα σε μία. Όταν πολλαπλές 41 Σ ε λ ί δ α

42 εφαρμογές τρέχουν στο παρασκήνιο, μπορούν να επιβραδύνουν την λειτουργία της εφαρμογής που βρίσκεται στο προσκήνιο, να μπλοκάρουν τον επεξεργαστή και να καταναλώσουν πολύ ενέργεια (= μπαταρία). Εκτός από την καλύτερη ανταπόκριση και την εκτεταμένη διάρκεια ζωής της μπαταρίας, το μοντέλο εκτέλεσης παρέχει στους χρήστες μια συνεπή εμπειρία πλοήγησης μεταξύ των εφαρμογών. Οι χρήστες μπορούν να ξεκινήσουν μια εφαρμογή από την Λίστα Εφαρμογών, ή από ένα πλακίδιο (tile) στην αρχική οθόνη. To touch κουμπί της οθόνη Πίσω, επιτρέπει την περιήγηση προς τα πίσω, ανάμεσα στις σελίδες της εφαρμογής που τρέχει ή στην στοίβα των εφαρμογών που έτρεχαν προηγουμένως. Ο στόχος της παροδικής διατήρησης και αποκατάστασης της μνήμης είναι να παρέχει στον χρήστη μία προσομοιωμένη εμπειρία πολλαπλών εφαρμογών, αφήνοντας τον με την εντύπωση ότι οι προηγούμενες εφαρμογές που χρησιμοποίησε τρέχουν στο παρασκήνιο. [23] Η Κατάσταση της Εφαρμογής (Application State) Υπάρχουν δύο ειδών καταστάσεις, η παροδική και η μόνιμη κατάσταση. Η μόνιμη υπάρχει όταν μια εφαρμογή ξεκινά. Αποθηκεύεται σε ένα ιδιωτικό χώρο αποθήκευσης που ονομάζεται Isolated Storage και μπορεί να περιέχει δεδομένα όπως τις ρυθμίσεις της εφαρμογής ή διάφορα αρχεία που αυτή χρησιμοποιεί. Η παροδική κατάσταση, αποβάλλεται όταν μια εφαρμογή κλείνει. Αποθηκεύεται στο επίπεδο της εφαρμογής, σε μια συλλογή ΙDictionary την Microsoft.Phone.Shell.PhoneApplicationService.State, ή στο επίπεδο της κάθε σελίδας στην συλλογή PhoneApplicationPage.State του ίδιου τύπου. Υπάρχει μόνο ένα στιγμιότυπο του PhoneApplicationService για όλη την εφαρμογή, ενώ μια ξεχωριστή κατάσταση δημιουργείτε για κάθε σελίδα η οποία πρέπει να προτιμάται αντί του PhoneApplicationService.State όπου είναι δυνατόν. [23] Τα γεγονότα κατά τη διάρκειας ζωής μια εφαρμογής (life cycle events) Η κλάση Microsoft.Phone.Shell.PhoneApplicationService εκθέτει τέσσερα events που εκτελούνται κατά την διάρκεια ζωής μιας εφαρμογής, που επιτρέπουν την αποθήκευση ή την φόρτωση της μόνιμης κατάστασης. 42 Σ ε λ ί δ α

43 Όταν ο χρήστης τρέχει μια εφαρμογή, η κατάστασή της γίνεται από σταματημένη, ενεργή. Το Launching event είναι το μέρος οπού πρέπει να αποκαταστήσουμε την μόνιμη κατάσταση από το Isolated Storage η οποία δεν έχει να κάνει με μία συγκεκριμένη σελίδα. Το event τρέχει μόλις η κλάση App αρχικοποιηθεί, και πριν τη δημιουργία της κεντρικής σελίδας της εφαρμογής. Τα event Launching και Activated είναι αλληλοαποκλειόμενα, που σημαίνει ότι μόνο ένα τρέχει κάθε φορά που ξεκινάει η εφαρμογή. Το ίδιο ισχύει και για τα Closing και Deactivated. Με την είσοδο σε κατάσταση λειτουργίας, μία εφαρμογή πρέπει να υποστηρίζει σωστά μια πιθανή διακοπή της. Κάθε διακοπή τρέχει το Deactivated event. H εφαρμογή εισέρχεται σε μια κατάσταση αδράνειας, όπου παραμένει στην μνήμη, με τα threads της όμως να διακόπτονται. Όταν μια εφαρμογή επανενεργοποιείται από την κατάσταση αδράνειας, δεν υπάρχει ανάγκη επαναφοράς της προσωρινής μνήμης, κάτι που μειώνει τον χρόνο φόρτωσης. Η ανίχνευση του πότε μια εφαρμογή επιστρέφει από κατάσταση αδράνειας μπορεί να βρεθεί στο event Activated χρησιμοποιώντας την ιδιότητα IsApplicationInstancePreserved μιας παραμέτρου της. Όταν μια εφαρμογή απενεργοποιηθεί, το λειτουργικό σύστημα γνωρίζει ότι μπορεί να ξανά ενεργοποιηθεί. Όταν η κατάσταση γίνεται από απενεργοποιημένη, ενεργή, τα αντικείμενά του αρχικοποιούνται και οι καταστάσεις της εφαρμογής (μόνιμη και προσωρινή) πρέπει να αποκατασταθούν. [23] Πλοήγηση Σελίδων (Page Navigation) Το σύστημα πλοήγησης στις XAML Windows Phone εφαρμογές βασίζεται στο μοντέλο πλοήγησης του web browser του Silverlight. Ωστόσο το μοντέλο της κλάσης πλοήγησης διαφέρει στο SDK του τηλεφώνου. Το Windows Phone αντί για τις κλάσεις του Silverlight, Frame και Page, χρησιμοποιεί δύο υπό-κλάσεις, PhoneApplicationFrame και PhoneApplicationPage, αντίστοιχα. Η πλοήγηση δουλεύει σχεδόν όπως και στον web browser, συντονίζοντας μεταβάσεις σελίδων μέσα στην εφαρμογή. Γραφική αναπαράσταση του PhoneApplicationFrame και PhoneApplicationPage 43 Σ ε λ ί δ α

44 Η κλάση PhoneApplicationFrame είναι ο οικοδεσπότης για PhoneApplicationPages και δεσμεύει χώρο για το system tray και το application bar. Η υποδομή της λειτουργίας της πλοήγησης διατηρεί ένα ιστορικό με τις σελίδες που έχουν φορτωθεί. Κάθε φορά που μια εφαρμογή πλοηγείται σε μια άλλη σελίδα η μέθοδος της τρέχουσας σελίδας OnNavigatedFrom() καλείται και η σελίδα τοποθετείται στην στοίβα του ιστορικού. Για να πλοηγηθούμε σε μια σελίδα μπορούμε να χρησιμοποιήσουμε την κλάση NavigationService της οποίας η μέθοδος Navigate φορτώνει κάποια άλλη σελίδα στην PhoneApplicationFrame. NavigationService.Navigate( new Uri("/Views/ClassLayoutView.xaml", UriKind.Relative)); Η αποθήκευση της προσωρινής μνήμη της κάθε σελίδας, γίνεται στην μέθοδο OnNavigatedFrom() η οποία εκτελείται κάθε φορά που φεύγουμε από μια σελίδα. Αντίθετα, η μέθοδος OnNavigatedTo(), που εκτελείται κάθε φορά που πλοηγούμαστε σε μια σελίδα μας επιτρέπει να φορτώσουμε την προσωρινή μνήμη, αν αυτή υπάρχει. [23] Παρακάτω βλέπουμε ένα απόσπασμα κώδικα της εφαρμογής, με τις μεταβλητές και τις μεθόδους που χρησιμοποιούνται για να χειριστούμε την προσωρινή μνήμη. Και οι μεταβλητές και οι μέθοδοι αποθήκευσης και αποκατάστασης της προσωρινής μνήμης είναι μέλη της MainPageViewModel για την συγκεκριμένη σελίδα: public class MainPageViewModel : ViewModelBase readonly IDictionary<string, object> transientstatedictionary; // transient state key const string _tskclassrooms = "MainPageViewModel_Classrooms"; Σ ε λ ί δ α

45 #region Transient State public void LoadTransientState() object transientstate; if (transientstatedictionary.trygetvalue( _tskclassrooms, out transientstate)) _classrooms = transientstate as ObservableCollection<Classroom>; if (_classrooms!= null) Loaded = true; public void SaveTransientState() transientstatedictionary[_tskclassrooms] = _classrooms; #endregion Οι παραπάνω μέθοδοι καλούνται όπως είπαμε, στις μεθόδους OnNavigatedFrom() και OnNavigatedTo() μιας σελίδας PhoneApplicationPage για να αποθηκεύσουν και να φορτώσουν την προσωρινή μνήμη. Για να μπορέσουμε να έχουμε πρόσβαση στις παραπάνω μεθόδους της MainPageViewModel από την σελίδα PhoneApplicationPage, ορίζουμε μια public ιδιότητα του τύπου ViewModel στην κλάση όπως παρακάτω. public partial class MainPage : PhoneApplicationPage... /// <summary> /// ViewModel instance accessed from the View /// </summary> MainPageViewModel ViewModel get return (MainPageViewModel)DataContext;... Την ιδιότητα χρησιμοποιούμε στις μεθόδους πλοήγησης, για να αποθηκεύσουμε και να επαναφέρουμε την προσωρινή μνήμη. 45 Σ ε λ ί δ α

46 #region Navigation Events protected override void OnNavigatedTo(NavigationEventArgs e) Debug.WriteLine("MainPageView OnNavigatedTo"); base.onnavigatedto(e); if (!loaded) DataContext = new MainPageViewModel(this.State); loaded = true; ViewModel.LoadTransientState(); protected override void OnNavigatedFrom(NavigationEventArgs e) Debug.WriteLine("MainPageView OnNavigatedFrom"); base.onnavigatedfrom(e); ViewModel.SaveTransientState(); #endregion 4.3 Προσανατολισμός Σελίδας (Page Orientation) Η κλάση PhoneApplicationPage περιλαμβάνει δύο ιδιότητες σχετικά με τον προσανατολισμό της, τις SupportedOrientations και Orientation. Οι τιμές που μπορεί να έχουν οι δύο ιδιότητες είναι οι εξής: Landscape, LandscapeLeft, LandscapeRight για οριζόντια προβολή. Portrait, PortraitUp για κάθετη προβολή. Η ιδιότητα SupportedOrientations επιτρέπει να περιορίσουμε τον προσανατολισμό της σελίδας και όταν η τιμή της είναι Portrait ή Landscape εμποδίζει την αλλαγή του προσανατολισμού όταν η συσκευή περιστρέφεται. Εάν η σελίδα είναι σχεδιασμένη να υποστηρίζει και τους δύο προσανατολισμούς μπορούμε να θέσουμε την τιμή της σε PortraitOrLandscape η οποία επιτρέπει την αυτόματη αλλαγή του προσανατολισμού όταν η συσκευή περιστρέφεται. Η ιδιότητα Orientation δείχνει το πραγματικό προσανατολισμό μιας σελίδας και μπορεί να οριστεί μόνο κατά την διάρκεια του σχεδιασμού, όχι κατά την διάρκεια λειτουργίας. Οι προεπιλεγμένες τιμές όταν δημιουργείται μια καινούρια σελίδα PhoneApplicationPage είναι Portrait και για τις δύο ιδιότητες. Η κλάση PhoneApplicationPage ορίζει την μέθοδο OnOrientationChanged() η οποία επιτρέπει να ανιχνεύσουμε αλλαγές στον προσανατολισμό της σελίδας. Στην εφαρμογή μας, χρησιμοποιούμε τη μέθοδο στην σελίδα προβολής των τάξεων, όπου η σελίδα παρουσιάζεται σε κάθετο προσανατολισμό όταν οι γραμμές είναι περισσότερες και σε οριζόντιο προσανατολισμό, όταν οι στήλες είναι περισσότερες. Στην υλοποίηση της μεθόδου εκτελούμε ένα animation, 46 Σ ε λ ί δ α

47 όταν ο προσανατολισμός αλλάζει από LandscapeLeft σε LandscapeRight ή το αντίθετο, για να παρουσιάσουμε την μετάβαση στον καινούριο προσανατολισμό ποιο ομαλά. [24] Παρακάτω βλέπουμε την υλοποίηση: private void ClassLayoutView_OnOrientationChanged(object sender, OrientationChangedEventArgs e) PageOrientation neworientation = e.orientation; Debug.WriteLine("New orientation: " + neworientation); // Orientations are (clockwise) 'PortraitUp', 'LandscapeRight', 'LandscapeLeft' var transitionelement = new RotateTransition(); switch (neworientation) case PageOrientation.Landscape: case PageOrientation.LandscapeRight: // Come here from PortraitUp (i.e. clockwise) or LandscapeLeft? transitionelement.mode = _lastorientation == PageOrientation.PortraitUp? RotateTransitionMode.In90Counterclockwise : RotateTransitionMode.In180Clockwise; ViewModel.ClassPresenterMargin = new Thickness(72, 0, 0, 0); break; case PageOrientation.LandscapeLeft: // Come here from LandscapeRight or PortraitUp? transitionelement.mode = _lastorientation == PageOrientation.LandscapeRight? RotateTransitionMode.In180Counterclockwise : RotateTransitionMode.In90Clockwise; ViewModel.ClassPresenterMargin = new Thickness(0, 0, 72, 0); break; case PageOrientation.Portrait: case PageOrientation.PortraitUp: // Come here from LandscapeLeft or LandscapeRight? transitionelement.mode = _lastorientation == PageOrientation.LandscapeLeft? RotateTransitionMode.In90Counterclockwise : RotateTransitionMode.In90Clockwise; break; default: break; 47 Σ ε λ ί δ α

48 // Execute the transition var phoneapplicationpage = (PhoneApplicationPage) (((PhoneApplicationFrame)Application.Current.RootVisual)).Content; ITransition transition = transitionelement.gettransition(phoneapplicationpage); transition.completed += delegate transition.stop(); // Refresh the intersectionhelperslist with the new students // positions after the change of screen orientation GetIntersectionHelpersList(); ; transition.begin(); _lastorientation = neworientation; προβολή τάξεων σε Portrait και Landscape Orientation. 4.4 H Μπάρα Εφαρμογής (ApplicationBar) Η μπάρα εφαρμογής (ApplicationBar) παρέχει ένα πρότυπο τρόπο πρόσβασης σε κοινές εργασίες που εκτελούνται στις σελίδες των εφαρμογών και κάνει ευκολότερο τον χειρισμό για τους χρήστες, αξιοποιώντας την εξοικείωση με ένα control που χρησιμοποιείτε σε όλες τις εφαρμογές. Έτσι οι χρήστες μπορούν να επικεντρωθούν στο περιεχόμενο, χωρίς να χρειάζεται να μάθουν ένα διαφορετικό κάθε φορά, γραφικό περιβάλλον (UI) από εφαρμογή σε εφαρμογή. Η μπάρα παίζει τον ίδιο ρόλο με ένα συνδυασμό μιας εργαλειοθήκης και ενός μενού, σε μια εφαρμογή desktop ή web. Επιτρέπει να οριστούν ένα σύνολο κουμπιών και/ή επιλογών μενού, τα οποία όταν πατηθούν μπορούν να τρέξουν events. [25] Για να χρησιμοποιήσουμε την μπάρα, πρέπει να δηλώσουμε πρώτα το namespace στο οποίο βρίσκεται. 48 Σ ε λ ί δ α

49 <phone:phoneapplicationpage x:class="teacherassistant.views.classroominfoview" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone"... > H XAML για να την ορίσουμε: <phone:phoneapplicationpage.applicationbar> <shell:applicationbar IsVisible="True" IsMenuEnabled="True"> <shell:applicationbariconbutton Text="Button 1" IconUri="/Images/ApplicationBar.Check.png" /> <shell:applicationbariconbutton Text="Button 2" IconUri="/Images/ApplicationBar.Cancel.png" /> <shell:applicationbar.menuitems> <shell:applicationbarmenuitem Text="MenuItem 1"/> <shell:applicationbarmenuitem Text="MenuItem 2"/> </shell:applicationbar.menuitems> </shell:applicationbar> </phone:phoneapplicationpage.applicationbar> Το γραφικό περιβάλλον: 4.5 Controls Το Windows Phone 8 SDK, παρέχει ένα πλούσιο σύνολο από controls, από controls διάταξης μέχρι πολυμέσων, από στοιχεία κατάλληλα για την δημιουργία επαγγελματικών εφαρμογών μέχρι controls υποστήριξης εικόνων πολλαπλών κλιμάκων (deep zoom). Αυτό κατέστη δυνατό με την αξιοποίηση των υφιστάμενων controls από την ώριμη πλέον πλατφόρμα για τον browser, Silverlight στην οποία είναι βασισμένο το Windows Phone. 49 Σ ε λ ί δ α

50 Το να χρησιμοποιηθεί η τεχνολογία Silverlight στο τηλέφωνο δεν ήταν μικρό επίτευγμα και η ομάδα του Silverlight αντιμετώπισε προκλήσεις κατά την προσαρμογή των controls, τα οποία σχεδιάστηκαν κατά κύριο λόγο στοχεύοντας στα προγράμματα περιήγησης στο web. Στην πλατφόρμα του κινητού ήταν απαραίτητο να προσαρμοστούν με τις διαφορές στο μέγεθος και την ανάλυση της οθόνης και την υποστήριξη της αφής. Ευτυχώς, το ίδιο το Silverlight σχεδιάστηκε με κατά τα φαινόμενα αξιόλογο επίπεδο πρόβλεψης, επιτρέποντας σε αρκετά controls να υιοθετηθούν στο Windows Phone Framework Class Library (FCL) για τις XAML εφαρμογές μόνο με μικρές αλλαγές των template τους. Επιπλέον η Microsoft, προσφέρει ένα ακόμα πακέτο controls, που περιέχονται στο Windows Phone Toolkit, το οποίο δεν ανήκει στο Windows Phone SDK 8, το οποίο θα δούμε στη συνέχεια. [26] Ταξινόμηση των τύπων Controls Η κατανόηση των βιβλιοθηκών που χρησιμοποιούμε και η ιεραρχία των κλάσεων μέσα σε αυτές βοηθάει τους προγραμματιστές να γίνουν ποιο παραγωγική και είναι ένα καλό σημείο εκκίνησης για την βαθύτερη κατανόηση του πως δουλεύει ένα software Framework. Η κλάση FrameworkElement παρέχει ένα σύνολο από APIs για αντικείμενα που συμμετέχουν στην διάταξη του γραφικού περιβάλλοντος. Ορίζει μέλη που συνδέονται με το data binding, το οπτικό δέντρο και την διάρκεια ζωής των αντικειμένων. Είναι επίσης η κλάση-πατέρας για τα περισσότερα controls. Τα στοιχεία ψηλότερα στην ιεραρχία στο Windows Phone FCL για XAML εφαρμογές 50 Σ ε λ ί δ α

51 Σε αυτή την ενότητα θα μιλήσουμε για τα controls που κληρονομούν την κλάση Control, συγκεκριμένα τις κλάσεις ContentControl, ItemsControl, RangeBase. Οι τύποι των Controls στο FCL (Framework Class Library) Content Controls Τα controls που κληρονομούν την κλάση ContentControl είναι ικανά να φιλοξενήσουν ένα αντικείμενο ως περιεχόμενό τους. Τέτοια είναι το Button, το ListboxItem, το PhoneApplicationFrame, το ScrollViewer και άλλα. Τα ContentControl έχουν μία ιδιότητα Content, της οποία η τιμή μπορεί να είναι οποιουδήποτε τύπου. Για να καταλάβουμε καλύτερα την ιδιότητα, βλέπουμε παρακάτω ένα Button. <Button Content="Tap me!" /> <Button> <TextBlock Text="Tap me!"/> </Button> Buttons Τα Buttons είναι τα ποιο συνηθισμένα controls που δέχονται αλληλεπίδραση με τον χρήστη. Όταν τα πατάει, ξεκινάνε μία διαδικασία μέσα από τα events Click ή Tap τα οποία μπορούμε να θέσουμε. 51 Σ ε λ ί δ α

52 private void Button_OnClick(object sender, RoutedEventArgs e) private void Button_OnTap(object sender, GestureEventArgs e) Άλλα είδη Buttons είναι τα: HyperlinkButton, RepeatButton, ToggleButton, RadioButton. CheckBox To CheckBox control, δηλώσει μια δυαδική κατάσταση (0 false 1 true) και χρησιμοποιείται σε group πολλαπλών επιλογών, από τις οποίες ο χρήστης μπορεί να επιλέξει Items Controls Όπως το ContentControl φιλοξενεί ένα control σαν παιδί του, τα ItemsControl μπορούν να έχουν πολλά παιδιά. Τέτοια είναι το ComboBox και το ListBox το ποιο διαδεδομένο από αυτά. Ένα ItemsControl μας επιτρέπει να δημιουργήσουμε τα παιδιά του, μέσω data binding χρησιμοποιώντας την ιδιότητά του ItemsSource. ListBox To ListBox είναι ένα ItemsControl που σημαίνει ότι μπορεί να φιλοξενήσει στοιχεία που περιέχουν κείμενο ή άλλα controls. Κληρονομεί την κλάση Selector, που δίνει την λειτουργία επιλογής ανάμεσα στα στοιχεία του. Είμαι προεπιλεγμένο να επιλέγει ένα στοιχείο, αλλά με την τιμή Multiple της ιδιότητας του ListBox.SelectionMode μπορούμε να το κάνουμε να επιλέξει πολλά. Κάθε στοιχείο του είναι ένα ListBoxItem 52 Σ ε λ ί δ α

53 control. Είναι εξαιρετικά ευέλικτο και μας επιτρέπει να ορίζουμε οτιδήποτε ως περιεχόμενο, αφού κάθε ListBoxItem είναι ένα ContentControl που παίρνει ως περιεχόμενο οποιοδήποτε αντικείμενο. Παρακάτω βλέπουμε ένα απόσπασμα κώδικα XAML της εφαρμογής με ένα ListBox control που εμφανίζει τις σημειώσεις που έχουν αποθηκευτεί για ένα μαθητή σε μια συγκεκριμένη τάξη: <ListBox x:name="noteslistbox" SelectionMode="Single" ItemsSource="Binding Notes, Mode=TwoWay" Visibility="Binding Notes.Count, Converter=StaticResource LengthToVisibilityConverter, ConverterParameter=Visible"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <Grid x:name="grid" Margin="24,6,0,6" > <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <TextBlock x:name="dottextblock" Grid.Column="0" Margin="0,10,0,0" FontSize="17" LineStackingStrategy="BlockLineHeight" FontFamily="Wingdings" Foreground="StaticResource PhoneForegroundBrush"> <Run Text=" " /> </TextBlock> <TextBlock x:name="textblocknote" Grid.Column="1" VerticalAlignment="Top" TextWrapping="Wrap" Margin="12,4" Foreground="StaticResource PhoneSubtleBrush" Text="Binding Text, Mode=TwoWay"> </TextBlock> <TextBlock x:name="textblockdate" Grid.Column="2" Margin="0,4,0,0" FontSize="20" VerticalAlignment="Top" Text="Binding Date, Converter=StaticResource ToShortDateStringConverter"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </ListBox.ItemContainerStyle> </ListBox> 53 Σ ε λ ί δ α

54 Για να αλλάξουμε την εμφάνιση κάθε ListBoxItem ορίζουμε την ιδιότητα του ListBox.ItemContainerStyle όπου ορίζουμε ένα Style της επιλογής μας και δίνουμε ένα Template για κάθε ListBoxItem. Παρακάτω βλέπουμε το αποτέλεσμα: Range Controls Τα RangeControls αναπαριστούν controls με αριθμητικές τιμές μέσα σε ένα εύρος. Έχουν την ιδιότητα value την οποία παρακολουθούν άλλες ιδιότητες εύρους και events. Κληρονομούν την κλάση RangeBase και ανάμεσά τους είναι τα ProgressBar, το Slider και το ScrollBar. 54 Σ ε λ ί δ α

55 4.6 Windows Phone Toolkit Controls Το Windows Phone Toolkit είναι μία ανοιχτού κώδικα εργαλειοθήκη της Microsoft, που προσφέρει στους προγραμματιστές ένα πρόσθετο σύνολο από controls και άλλες λειτουργίες, σχεδιασμένα να ταιριάζουν με την πλούσια εμπειρία του χρήστη και την αισθητική Modern UI του Windows Phone. Το toolkit διευρύνει τα ήδη υπάρχοντα εργαλεία για προγραμματιστές Windows Phone. Με την πάροδο του χρόνου, καινούρια εργαλεία δημιουργήθηκαν και λόγω του ότι ο κύκλος επανάληψης του toolkit είναι μικρότερος από τον κύκλο των επίσημων εργαλείων, μπορούν να διατίθενται ανά μικρότερα χρονικά διαστήματα στο κοινό. Το toolkit βρίσκεται στο το οποίο είναι site αφιερωμένο σε λογισμικό ανοιχτού κώδικα. Για να το εγκαταστήσουμε σε ένα project επιλέγουμε από το μενού του Visual Studio Tools/Library Package Manager/Package Manager Console. Στο command line γράφουμε την εντολή: Install-Package WPToolkit Η οποία εγκαθιστά τα απαραίτητα αρχεία της τελευταίας έκδοσης του Toolkit στην εφαρμογή. Για να χρησιμοποιήσουμε τα controls από μια σελίδα XAML πρέπει να δηλώσουμε το namespace: xmlns:toolkit="clr-namespace: Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" Σ αυτή την ενότητα θα εξετάσουμε τα controls του Windows Phone toolkit που χρησιμοποιήθηκαν στην εφαρμογή. [27] ListPicker Λόγο του μικρού σχετικά μεγέθους της οθόνης του τηλεφώνου, μπορεί να είναι δύσκολο να παρουσιαστεί μια μεγάλη λίστα από επιλογές για τον χρήστη, χωρίς να καταφεύγουμε στη χρήση δεύτερης σελίδας. Το ListPicker control, λύνει ακριβώς αυτό το πρόβλημα. Μπορεί να εμφανίσει μια λίστα από επιλογές, είτε προβάλλοντας μια επί τόπου επεκτάσιμη λίστα επιλογών όταν αυτές είναι λίγες, ή με μία λίστα πλήρης οθόνης όταν ο αριθμός των επιλογών είναι μεγάλος. Είναι επίσης εξαιρετικά προσαρμόσιμο, αφού επιτρέπει την χρήση προσαρμοσμένων data templates για προβολή των λιστών. Παρακάτω βλέπουμε τον XAML κώδικα για το ListPicker που χρησιμοποιήθηκε στην σελίδα του αρχείου παρουσιών για κάθε τάξη, για την επιλογή προβολής αρχείου συγκεκριμένης ημερομηνίας: 55 Σ ε λ ί δ α

56 <DataTemplate x:key="listpickeritemtemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Image Height="40" Width="40" Source="/Toolkit.Content/Date.png"/> <TextBlock Grid.Column="1" Margin="12,2,0,0" FontSize="StaticResource PhoneFontSizeMedium" Text="Binding Date, Converter=StaticResource StudentDateAttendanceToStringConverter"/> </Grid> </DataTemplate> <toolkit:listpicker Grid.Row="0" x:name="listpickerattendances" ExpansionMode="FullScreenOnly" CacheMode="BitmapCache" Header="Binding Path=LocalizedResources.class_attendance_view_date, Source=StaticResource LocalizedStrings" ItemsSource="Binding Attendances, Mode=TwoWay" FullModeHeader="Binding Path=LocalizedResources.class_attendance_view_dates, Source=StaticResource LocalizedStrings" ItemTemplate="StaticResource ListPickerItemTemplate" IsEnabled="Binding Attendances.Count, Converter=StaticResource LengthToEnabledConverter, ConverterParameter=Enabled, Mode=TwoWay"> <toolkit:listpicker.fullmodeitemtemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="0,21,0,20"> <Image Width="50" Height="50" Source="/Toolkit.Content/Date.png"/> <TextBlock Margin="16,0,0,0" VerticalAlignment="Center" Text="Binding Date, Converter=StaticResource StudentDateAttendanceToStringConverter"/> </StackPanel> </DataTemplate> </toolkit:listpicker.fullmodeitemtemplate> </toolkit:listpicker> Η σελίδα με το ListPicker control και η λίστα πλήρης οθόνης κατά την επέκταση 56 Σ ε λ ί δ α

57 4.6.2 ContextMenu Το ContextMenu είναι ένα επεκτάσιμο μενού που εμφανίζεται όταν ο χρήστης πατάει και κρατάει ένα FrameworkElement. Μπορεί να προστεθεί σε ένα FrameworkElement, χρησιμοποιώντας την ιδιότητα ContextMenu της κλάσης ContextMenuService. Παρακάτω βλέπουμε τον κώδικα του ContextMenu της αρχικής οθόνης της εφαρμογής. <toolkit:contextmenuservice.contextmenu> <toolkit:contextmenu> <toolkit:menuitem Header="Binding Path=LocalizedResources.contextmenu_edit, Source=StaticResource LocalizedStrings" Click="ContextMenuItemEditOnClick"/> <toolkit:menuitem Header="Binding Path=LocalizedResources.contextmenu_delete, Source=StaticResource LocalizedStrings" CommandParameter="Binding" Command="Binding DataContext.DeleteClassroomCommand, ElementName=page"/> </toolkit:contextmenu> </toolkit:contextmenuservice.contextmenu> Το ContextMenu που εμφανίζεται πατώντας κρατημένη μία τάξη της αρχικής λίστας DatePicker Το DatePicker control, μας επιτρέπει να εισάγουμε μια ημερομηνία χωρίς να χρησιμοποιήσουμε το πληκτρολόγιο. Προβάλει την ημερομηνία με μορφή σύμφωνα με την επιλεγμένη γλώσσα του τηλεφώνου και 57 Σ ε λ ί δ α

58 χρησιμοποιεί ένα TextBox για να εμφανίσει την ημερομηνία. Όταν ο χρήστης πατήσει το TextBox εμφανίζεται μια σελίδα με τρία controls κυκλικής κύλισης. Παρακάτω βλέπουμε τον κώδικα στην σελίδα προβολής των σημειώσεων του μαθητή. <toolkit:datepicker x:name="datepicker" Margin="0,-12,-12,-12" Padding="0" BorderThickness="0" VerticalAlignment="Stretch" Background="StaticResource PhoneAccentBrush" ValueStringFormat="Binding Path=LocalizedResources.notes_view_date_format, Source=StaticResource LocalizedStrings"/> To TextBox ημερομηνίας με το πράσινο φόντο και η σελίδα με τα control κυκλικής κίνησης του DatePicker LongListSelector To LongListSelector control, είναι όπως το ListBox και επιτρέπει την ομαδοποίηση των αντικειμένων του. Είναι αποδοτικό για μεγάλες λίστες επειδή επιτρέπει την εύκολη πλοήγηση μεταξύ των ομαδοποιημένων αντικειμένων του. Μπορεί να προβάλει απλές και ομαδοποιημένες λίστες. Στην ομαδοποίηση, ο χρήστης μπορεί να πηδήξει μεταξύ των ομάδων, μέσω ενός γραφικού περιβάλλοντος που επικαλύπτει την λίστα. Ο κώδικας του LongListSelector που εμφανίζει του αποθηκευμένους μαθητές στην εφαρμογή είναι ο παρακάτω. 58 Σ ε λ ί δ α

59 <phone:longlistselector x:name="longlistselectorstudents" Background="Transparent" IsGroupingEnabled="True" HideEmptyGroups="True" ItemsSource="Binding StudentGroupings, Mode=TwoWay" Visibility="Binding StudentsCount, ConverterParameter=Visible, Converter=StaticResource lengthtovisibilityconverter"> </phone:longlistselector> Για να ορίσουμε το Template που θα έχουν τα αντικείμενα τις λίστας δίνουμε ένα DataTemplate στην ιδιότητα του LongListSelector.ItemTemplate όπως βλέπουμε παρακάτω: <!-- Item Template --> <phone:longlistselector.itemtemplate> <DataTemplate> <Grid toolkit:tilteffect.istiltenabled="true" Margin="0,5,0,5" Tap="StudentOnTap"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Image Grid.Column="0" Margin="0,0,0,0" Width="65" Height="65" VerticalAlignment="Center" Source="Binding ImageUrl, Converter=StaticResource pathtoimagesourceconverter"/> <TextBlock Grid.Column="1" TextTrimming="WordEllipsis" Style="StaticResource PhoneTextTitle2Style" Text="Binding DisplayName" Margin="12,0,0,0" VerticalAlignment="Center"/> </Grid> </DataTemplate> </phone:longlistselector.itemtemplate> 59 Σ ε λ ί δ α

60 Αντίστοιχα, η ιδιότητα LongListSelector.GroupHeaderTemplate μας δίνει την δυνατότητα να ορίσουμε το Template για τα group, στην προκειμένη περίπτωση, τα κουτάκια με τα γράμματα της αλφαβήτου με βάση τα οποία είναι ομαδοποιημένοι οι μαθητές: <!-- GroupHeader Template --> <phone:longlistselector.groupheadertemplate> <DataTemplate> <Border Background="Transparent" Margin="0,5,0,5"> <Border Width="65" Height="65" HorizontalAlignment="Left" Background="StaticResource PhoneAccentBrush"> <TextBlock Text="Binding Key" VerticalAlignment="Bottom" Foreground="StaticResource PhoneForegroundBrush" Style="StaticResource PhoneTextExtraLargeStyle"/> </Border> </Border> </DataTemplate> </phone:longlistselector.groupheadertemplate> Όταν η κεφαλή κάθε ομάδας πατηθεί, μας παρουσιάζεται το GroupItemPanel το οποίο ορίζεται με την ιδιότητα LongListSelector.JumpListStyle που επιτρέπει στον χρήστη να πηδήξει απευθείας σε κάποια ομάδα. <phone:longlistselector.jumpliststyle> <Style TargetType="phone:LongListSelector"> <Setter Property="GridCellSize" Value="113,113"/> <Setter Property="LayoutMode" Value="Grid" /> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Border Background="Binding Converter=StaticResource BackgroundConverter" Width="113" Height="113" Margin="6"> <TextBlock Text="Binding Key" FontSize="48" Padding="6" VerticalAlignment="Center" Foreground="Binding Converter=StaticResource ForegroundConverter" FontFamily="StaticResource PhoneFontFamilySemiBold" /> </Border> </DataTemplate> </Setter.Value> </Setter> </Style> </phone:longlistselector.jumpliststyle> 60 Σ ε λ ί δ α

61 4.7 Επαφές (Contacts) ΕLan Η κλάση Contacts επιτρέπει να ψάξουμε στις επαφές του τηλεφώνου με βάση κάποια κριτήρια αναζήτησης από το enumeration FilterKind το οποίο μπορεί να έχει τις τιμές: None Προεπιλεγμένη τιμή, επιστρέφει όλες τις επαφές του τηλεφώνου. DisplayName Επιστρέφει επαφές με βάση το όνομα τους Address Επιστρέφει επαφές με βάση το . PhoneAddress Επιστρέφει επαφές με βάση το τηλέφωνο. PinnedToStart Επιστρέφει τις επαφές που είναι καρφιτσωμένες στην αρχική οθόνη. Στην εφαρμογή χρησιμοποιείται η συγκεκριμένη κλάση για να διαβάσει και να εμφανίσει τις επαφές του τηλεφώνου σε μια σελίδα της, δίνοντας την δυνατότητα στον χρήστη να επιλέξει ποιες από αυτές θέλει να εισάγει στην εφαρμογή ως μαθητές. Για το διάβασμα των επαφών χρησιμοποιούμε την εξής μέθοδο: private void LoadContacts() var contacts = new Contacts(); contacts.searchcompleted += HandleSearchCompleted; contacts.searchasync("", FilterKind.DisplayName, null); To event Contacts.SearchCompleted τρέχει όταν το διάβασμα των επαφών τελειώσει. Τότε εισάγουμε τις επαφές που έχουν επιστρέψει, στην ομαδοποιημένη συλλογή ContactsGrouping του βοηθητικού τύπου ContactItem, που έχει μέλη το όνομα της κάθε επαφής και την φωτογραφία του, για να τις εμφανίσουμε στην οθόνη. 61 Σ ε λ ί δ α

62 void HandleSearchCompleted(object sender, ContactsSearchEventArgs e) if (e.results == null) return; foreach (Contact contact in e.results) _contactslist.add(new ContactItem(contact)); ContactsGrouping = ObservableContactGrouping<ContactItem>.CreateGroups(ContactsList); Loaded = true; Η άδεια για πρόσβαση στις επαφές του τηλεφώνου πραγματοποιείται προσθέτοντας την δυνατότητα (capability - για τις δυνατότητες μιλήσαμε προηγουμένως) ID_CAP_CONTACTS στο αρχείο WMAppManifest.xaml Launchers και Choosers Οι Windows Phone εφαρμογές λειτουργούν μέσα σε ένα κλειστό κουτί (sandbox), χωρίς να έχουν πρόσβαση σε λειτουργίες του τηλεφώνου, όπως τα , και τα sms. Τα Launchers και Choosers επιτρέπουν σε μία εφαρμογή να λειτουργήσει έξω από το κλειστό κουτί της, με έναν ασφαλή και φιλικό προς το σύστημα τρόπο, δίνοντας έμμεσα πρόσβαση σε μια σειρά από ενσωματωμένες εφαρμογές του συστήματος. Οι Launchers και Choosers είναι θεμελιώδη για την ανάπτυξη σε Windows Phone. Επιτρέπουν στους χρήστες να εκτελούν κοινές εργασίες με τον ίδιο τρόπο σε όλες τις εφαρμογές, παρέχοντας μια συνεπή εμπειρία στον χρήστη. Βρίσκονται στο namespace Microsoft.Phone.Tasks, στην βιβλιοθήκη Microsoft.Phone.dll Μοιράζονται δύο κοινά χαρακτηριστικά, την μέθοδο Show(), η οποία ξεκινάει μια εφαρμογή του συστήματος και το γεγονός ότι κάνουν την κατάσταση της εφαρμογής απενεργοποιημένη, αφού μας μεταφέρουν σε μια άλλη, πράγμα που σημαίνει ότι πρέπει να αποθηκεύσουμε την προσωρινή μνήμη της σελίδας πριν ανοίξει η εφαρμογή συστήματος και να την επαναφέρουμε όταν επιστρέψουμε. [28] Παρακάτω βλέπουμε την λίστα των Launchers και Choosers. BingMapsDirectionsTask BingMapsTask MapDownloaderTask MapsTask MapsDirectionsTask ConnectionSettings MarketplaceDetailTask MarketPlaceHubTask Launchers Λειτουργίες που έχουν να κάνουν με την εφαρμογή Χάρτες Bing. Ανοίγει τις ρυθμίσεις σύνδεσης. Λειτουργίες που έχουν να κάνουν με το κατάστημα Windows Phone Marketplace. 62 Σ ε λ ί δ α

63 MarketplaceReviewTask MarketplaceSearchTask ComposeTask MediaPlayerLauncher PhoneCallTask SaveAppointmentTask SearchTask ShareLinkTask ShareMediaTask ShareStatusTask SmsComposeTask WebBrowserTask Μεταφέρει στην εφαρμογή δημιουργίας και αποστολής . Ανοίγει τον media player για να παίξει ένα αρχείο. Πραγματοποιεί μία κλήση. Αποθηκεύει ένα ραντεβού στην ενσωματωμένη εφαρμογή Ημερολόγιο. Εκτελεί μια αναζήτηση στο Bing. Λειτουργίες που έχουν να κάνουν με πλατφόρμες κοινωνικής δικτύωσης. Στέλνει ένα sms. Ανοίγει τον Internet Explorer. AddressChooserTask CameraCaptureTask AddressChooserTask GameInviteTask PhoneNumberChooserTask PhotoChooserTask SaveContactTask Save AddressTask SavePhoneNumberTask SaveRingtoneTask Choosers Ανοίγει τις επαφές για να επιλέξει ο χρήστης την διεύθυνση μιας επαφής του. Ανοίγει την εφαρμογή Κάμερα. Ανοίγει τις επαφές για να επιλέξει ο χρήστης ένα μιας επαφής του. Στέλνει προσκλήσεις για παιχνίδια σε άλλους χρήστες Ανοίγει τις επαφές για να επιλέξει ο χρήστης ένα τηλ. νούμερο από μια επαφή. Ανοίγει την εφαρμογή Επιλογή Φωτογραφίας Αποθηκεύει μια επαφή στην συσκευή Αποθηκεύει ένα για μία επαφή. Αποθηκεύει ένα νούμερο τηλέφωνου για μία επαφή. Αποθηκεύει έναν ήχο κλήσης. Στην εφαρμογή χρησιμοποιήσαμε τον Launcher WebBroserTask, στην σελίδα πληροφοριών όπου μεταφερόμαστε στην σελίδα του τμήματος πατώντας την εικόνα του λογότυπου του ΤΕΙ ΑΜΘ μέσω του Tap event. private void TeiLogoImage_OnTap(object sender, GestureEventArgs e) var task = new WebBrowserTask Uri = new Uri(" UriKind.Absolute) ; task.show(); 63 Σ ε λ ί δ α

64 Τον ComposeTask για να στείλουμε ένα αναφοράς στον προγραμματιστή όταν μία εξαίρεση που δεν διαχειρίστηκε κατά την εκτέλεση της εφαρμογής παρουσιαστεί. var = new ComposeTask To = "pantelis.ar@hotmail.com ", Subject = "Classroom Manager UnhandledException", Body = contents ; .show(); 64 Σ ε λ ί δ α

65 Τον Chooser PhotoChooserTask που χρησιμοποιούμε στην σελίδα εισαγωγής μαθητή με τον οποίο ανοίγουμε τις αποθηκευμένες φωτογραφίες ή την εφαρμογή κάμερα για να διαλέξουμε μια εικόνα πατώντας στο πλαίσιο της φωτογραφίας. private readonly PhotoChooserTask photochoosertask = new PhotoChooserTask(); // Register PhotoChooserTask chooser TaskCompleted Event photochoosertask.completed += PhotoChooserTaskCompleted; SaveTransientState(); var settings = new AppSettings(); photochoosertask.pixelheight = settings.photochooserdimensionssetting; photochoosertask.pixelwidth = settings.photochooserdimensionssetting; photochoosertask.showcamera = true; photochoosertask.show(); private void PhotoChooserTaskCompleted(object sender, PhotoResult e) if (e.taskresult == TaskResult.OK) var settings = new AppSettings(); photochoosertask.pixelheight = photochoosertask.pixelwidth = settings.photochooserdimensionssetting; StudentImage = new BitmapImage(); StudentImage.SetSource(e.ChosenPhoto); _imagechanged = true; 65 Σ ε λ ί δ α

66 4.9 Επεξεργασία αφής (Touch Input) Οι Windows Phone συσκευές είναι εξοπλισμένες με οθόνες που προσφέρουν ομαλή, με ακρίβεια εμπειρία πολλαπλών σημείων επαφής. Με την προσθήκη υποστήριξης λειτουργιών αφής η εμπειρία του χρήστη βελτιώνεται σημαντικά. Στην εφαρμογή που δημιουργήθηκε, τέτοιες λειτουργίες χρησιμοποιήθηκαν στην σελίδα προβολής τάξεων, όπου με λειτουργίες drag and drop, ο χρήστης μπορεί να μεταφέρει εύκολα τους μαθητές μέσα στην τάξη για να τους αλλάξει θέση. Για υλοποιηθεί αυτό χρησιμοποιήθηκαν τα events Χειραγώγησης (Manipulation) τα οποία εδραιώνουν δραστηριότητες ενός ή δύο δαχτύλων. Τα events συνδυάζουν πληροφορίες για ξεχωριστά σημεία επαφής και τις μεταφράζουν σε ένα API με πληροφορίες ταχύτητας, κλιμάκωσης και απόστασης από την αρχική θέση. Τα events μεταχείρισης μπορούν να τεθούν σε οποιοδήποτε UIElement και είναι τα παρακάτω: ManipulationStarted Εκτελείται όταν ο χρήστης ακουμπάει ένα UIElement ManipulationDelta Εκτελείται όταν το σημείο αφής αλλάξει θέση. Το event εκτελείται πολλές φορές κατά την διάρκεια χειραγώγησης. ManipulationCompleted - Εκτελείται όταν μια χειραγώγηση τελειώσει όταν ο χρήστης αφήσει το UIElement. Οι παράμετροι των events μοιράζονται της παρακάτω ιδιότητες: OriginalSource Αυτό είναι το αντικείμενο που προκάλεσε το event 66 Σ ε λ ί δ α

67 ManipulationContainer Είναι το UIElement που βρίσκεται στην επιφάνεια της οθόνης. Τα σημεία αφής σε διαφορετικά UIElements παρέχουν ξεχωριστές διαδοχές χειραγώγησης, οι οποίες ξεχωρίζουν με την ιδιότητα ManipulationContainer. Η ιδιότητες OriginalSource και ManipulationContainer είναι στις περισσότερες περιπτώσεις η ίδια. ManipulationOrigin Είναι ιδιότητα τύπου Point, που υποδεικνύει την θέση του σημείου επαφής σε σχέση με την πάνω αριστερή γωνία του στοιχείου ManipulationContainer. Handled Ιδιότητα τύπου bool που υποδεικνύει ότι το event χειρίστηκε. Όταν μια χειραγώγηση ξεκινήσει, εκτελείται το ManipulationStarted event. Κατά την διάρκεια της χειραγώγησης το event ManipulationDelta εκτελείται όταν ένα καινούριο σημείο επαφής προστεθεί στο ManipulationContainer ή όταν η θέση του τρέχοντος σημείου επαφής αλλάξει. Η μία του παράμετρος, τύπου ManipulationDeltaEventArgs παρέχει τα ποιο πρόσφατα δεδομένα χειραγώγησης. Για την κίνηση των μαθητών στο διάγραμμα θέσεων, χρησιμοποιούμε συγκεκριμένα την ιδιότητα DeltaManipulation η οποία ορίζει ένα Point του οποίου οι τιμές Χ και Y μετρούν την μετατόπιση από την αρχική θέση. Συγκεκριμένα οι DeltaManipulation.Translation.X και DeltaManipulation.Translation.Y. Τις τιμές αυτές της μετατόπισης τις προσθέτουμε στην αρχική θέση του αντικειμένου που μετακινείται (τη φωτογραφία του μαθητή) για να την μετακινήσουμε στο σημείο που είναι το δάχτυλο. Τέλος το ManipulationCompleted event εκτελείται όταν ο χρήστης σηκώσει το δάχτυλο από την οθόνη και η παράμετρος ManipulationCompletedEventArgs περιέχει τις τελικές τιμές των ταχυτήτων και συνολικά των δεδομένων χειραγώγησης. [29] Τα τρία events χειραγώγησης ορίζονται ως εξής: private void DragGrid_OnManipulationStarted( object sender, ManipulationStartedEventArgs e) private void DragGrid_OnManipulationDelta( object sender, ManipulationDeltaEventArgs e) private void DragGrid_OnManipulationCompleted( object sender, ManipulationCompletedEventArgs e) 4.10 Η βάση δεδομένων Μιλήσαμε στο προηγούμενο κεφάλαιο για το πώς οι κινητές συσκευές χρησιμοποιούνται κυρίως για να αλληλοεπιδρούν με το διαδίκτυο. Αυτή η αλληλεπίδραση γίνεται με always-connected υπηρεσίες cloud (cloud services) που επιτρέπουν να αποθηκεύουμε και να διαβάζουμε δεδομένα μέσω αυτών. Για αυτές τις 67 Σ ε λ ί δ α

68 λειτουργίες, η συσκευή πρέπει να είναι συνδεδεμένη στο διαδίκτυο. Σε ορισμένες βέβαια περιπτώσεις, οι εφαρμογές φωνάζουν για αποθήκευση δεδομένων τοπικά στο τηλέφωνο. Στην εφαρμογή που αναπτύχθηκε, υπήρχε αυτή η ανάγκη για την γρήγορη αποθήκευση και διάβασμα των δεδομένων. Με την κυκλοφορία του Windows Phone 7.5, η Microsoft εισήγαγε ένα σύστημα σχεσιακών βάσεων δεδομένων, επιτρέποντας την τοποθέτηση μιας τοπικής βάσης στο Isolated Storage ή στο αρχείο XAP κάθε εφαρμογής. Οι Windows Phone 8 εφαρμογές χρησιμοποιούν την τεχνολογία LINQ to SQL για όλες τις λειτουργίες σχετικά με την βάση δεδομένων, με την οποία οι προγραμματιστές μπορούν να ορίσουν το προσχέδιο της βάσης (database schema), και για να διαβάσουν, να εισάγουν, να ενημερώσουν και να διαγράψουν δεδομένα από αυτή. Η τεχνολογία LINQ to SQL παρέχει μια αντικειμενοστραφή προσέγγιση για να δουλέψουμε με τα δεδομένα και αποτελείται από ένα μοντέλο αντικειμένων και την υποδομή που επιτρέπει αυτού του είδους τις λειτουργίες. Η βάση που χρησιμοποιείται στο τηλέφωνο είναι βασισμένη στην SQL Server Compact Edition (SQL CE). Η SQL CE μοιράζεται ένα κοινό API με άλλες εκδόσεις της Microsoft SQL Server. Κάθε SQL CE βάση, είναι ένα αρχείο με κατάληξη.sdf το οποίο μπορεί να είναι μέχρι 4GB σε μέγεθος. [30] Η εγκατάσταση της βάσης δεδομένων στο τηλέφωνο Το αρχείο XAP (για τα XΑP αρχεία μιλήσαμε στην αρχή του προηγούμενου κεφαλαίου), το οποίο παράγει το Visual Studio όταν κάνουνε build ένα project, είναι στην ουσία ένα αρχείο zip που περιέχει όλα τα απαραίτητα αρχεία για την εγκατάσταση μιας εφαρμογής στη συσκευή. Κατά την εγκατάσταση, τα αρχεία αποσυμπιέζονται από το zip αρχείο σε ένα φάκελο εγκατάστασης της εφαρμογής, αλλά λόγω του ότι αυτός ο φάκελος είναι προσβάσιμος μόνο για ανάγνωση, δεν μπορούμε να κάνουμε οποιαδήποτε αλλαγή εκεί. Στην εφαρμογή επίσης εκχωρείται και ένας ακόμη φάκελος για τα δεδομένα της, ο οποίος είναι προσβάσιμος και για ανάγνωση και για γραφή. 68 Σ ε λ ί δ α

69 Μια τοπική βάση δεδομένων, μπορεί να τοποθετηθεί είτε στον φάκελο εγκατάστασης, είτε στο Isolated Storage κάθε εφαρμογής. Το που θα τοποθετηθεί η βάση είναι σημαντικό για δύο λόγους. Όπως αναφέραμε προηγουμένως, οι βάσεις στον φάκελο εγκατάστασης είναι προσβάσιμες μόνο για ανάγνωση, που σημαίνει ότι δεν μπορούμε να αποθηκεύσουμε παραπάνω δεδομένα και καλούμαστε να δουλέψουμε μόνο με αυτά τα οποία έχει προ-αποθηκευμένα. Επιπροσθέτως όταν δημοσιεύουμε ένα update για μια εφαρμογή, τα αρχεία του φακέλου εγκατάστασης αντικαθίστανται από αυτά της αναβαθμισμένης έκδοσης. Οι ποιο κοινή τοποθεσία για μια βάση λοιπόν είναι το Isolated Storage κάθε εφαρμογής, αφού μπορούμε και να γράψουμε σε αυτή, αλλά και διατηρείται ανέπαφη μετά από κάθε update της εφαρμογής LINQ to SQL στο Windows Phone Η ανάκτηση και αποθήκευση των δεδομένων σε μία τοπική βάση γίνεται εξ ολοκλήρου με LINQ to SQL η οποία παρέχει δυνατότητες σχεσιακής χαρτογράφησης αντικειμένων (ORM object relational mapping επιτρέποντας να γράψουμε C# κώδικα για κάθε είδους επικοινωνία με την βάση. Η LINQ to SQL αντιστοιχίζει το μοντέλο των αντικειμένων, το οποίο θα δούμε παρακάτω πως ορίζεται, σε μία βάση δεδομένων. Όταν μια εφαρμογή τρέχει, η LINQ to SQL μεταφράζει τα ενσωματωμένα queries της γλώσσας, σε Transact-SQL και τα στέλνει στην βάση για εκτέλεση. Όταν η βάση επιστρέφει αποτελέσματα, η LINQ to SQL τα μεταφράζει πίσω σε αντικείμενα τα οποία μπορούμε να διαχειριστούμε στην εφαρμογή. Η LINQ to SQL κάνει εκτεταμένη χρήση της κλάσης System.Data.Linq.DataContext η οποία παίζει τον ρόλο του ενδιάμεσου για την επικοινωνία με την βάση, επιτρέποντας να την προσπελάσουμε μέσω Table αντικειμένων που αντιπροσωπεύουν πίνακές της. Κάθε Table μέλος της DataContext επιτρέπει την αποθήκευση και ανάκτηση αντικειμένων οντοτήτων (object entities στην τεχνολογία LINQ to SQL μία οντότητα αντιπροσωπεύει ένα πίνακα μια βάσης δεδομένων). Κάθε στιγμιότυπο μία οντότητας αντιπροσωπεύει μία σειρά (table row) του πίνακα. 69 Σ ε λ ί δ α

70 Αναπαράσταση αντιστοίχισης του DataContext σε μια βάση Κάθε οντότητα (entity) αντιπροσωπεύεται από ένα αντικείμενο, και διακοσμείται με τον χαρακτηριστικό System.Data.Linq.Mapping.Table. Άλλα χαρακτηριστικά που προσδίδονται στις entity κλάσεις, ορίζουν την αντιστοίχιση μεταξύ του μοντέλου αντικειμένων και του προσχεδίου της βάσης και ορίζουν την δομή της Η δημιουργία της βάσης Υπάρχουν δύο προσεγγίσεις για την δημιουργία του μοντέλου δεδομένων. Ο πρώτος αφορά την δημιουργία του μέσω κώδικα (code-first), όπου γράφουμε τις κλάσεις που το αντιπροσωπεύουν και τις χρησιμοποιούμε για να δημιουργηθεί η βάση. Αντίθετα, στην προσέγγιση database-first, δημιουργούμε πρώτα την δομή της βάσης (πίνακες, σχέσεις, queries, stored procedures κλπ.) και χρησιμοποιούμε ένα εργαλείο για να δημιουργήσουμε το μοντέλο δεδομένων από αυτή. Η εφαρμογή που αναπτύχθηκε στηρίχθηκε στην πρώτη προσέγγιση code-first και για αυτή θα μιλήσουμε παρακάτω. Για να δημιουργήσουμε το μοντέλο και την βάση πρέπει να ακολουθήσουμε τα παρακάτω βήματα. Ορίζουμε τις κλάσεις που αντιπροσωπεύουν της οντότητες του μοντέλου. Ορίζουμε μια κλάση που κληρονομεί την DataContext, με ιδιότητες που αντιπροσωπεύουν τους πίνακες της βάσης. Όταν αρχικοποιούμε την κλάση, παρέχουμε το connection string με την τοποθεσία (path) στην οποία βρίσκεται το αρχείο.sdf στο Isolated Storage. Αυτή είναι υπεύθυνη για την δημιουργία της βάσης με τις σχέσεις πινάκων (relationships) που υπάρχουν στο μοντέλο αντικειμένων. Μετά την δημιουργία, είμαστε να αλληλοεπιδράσουμε με την βάση χρησιμοποιώντας LINQ to SQL. Για να αποθηκεύσουμε αλλαγές στη βάση χρησιμοποιούμε την μέθοδο DataContext.SubmitChanges(). Παρακάτω βλέπουμε τον ορισμό της κλάσης ClassroomSeat που αντιπροσωπεύει την οντότητα που χαρακτηρίζει την θέση ενός μαθητή σε μία τάξη. 70 Σ ε λ ί δ α

71 [Table] public class ClassroomSeat : NotifyPropertyChangeBase // Fields private int classroomseatid; private int rowdefid; private int columndefid; private int classroomid; private int studentid; private EntityRef<Classroom> classroom; private EntityRef<Student> student; private EntityRef<RowDefinition> rowdefinition; private EntityRef<ColumnDefinition> columndefinition; 71 Σ ε λ ί δ α

72 [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int ClassroomSeatID get return classroomseatid; set Assign(ref classroomseatid, value); [Column(CanBeNull = false)] public int RowDefID get return rowdefid; set Assign(ref rowdefid, value); [Column(CanBeNull = false)] public int ColumnDefID get return columndefid; set Assign(ref columndefid, value); [Column(CanBeNull = false)] public int ClassroomID get return classroomid; set Assign(ref classroomid, value); [Column(CanBeNull = true)] public int StudentID get return studentid; set Assign(ref studentid, value); [Association( Storage = "rowdefinition", ThisKey = "RowDefID", IsForeignKey = true)] public RowDefinition RowDefinition get return rowdefinition.entity; set rowdefinition.entity = value; [Association(Storage = "columndefinition", ThisKey = "ColumnDefID", IsForeignKey = true)] public ColumnDefinition ColumnDefinition get return columndefinition.entity; set columndefinition.entity = value; [Association(Storage = "classroom", ThisKey = "ClassroomID", IsForeignKey = true, DeleteRule = "CASCADE")] public Classroom Classroom get return classroom.entity; set classroom.entity = value; 72 Σ ε λ ί δ α

73 [Association( Storage = "student", ThisKey = "StudentID", IsForeignKey = true)] public Student Student get return student.entity; set student.entity = value; Όπως αναφέραμε, το χαρακτηριστικό [Table] το οποίο διακοσμεί την κλάση, χρησιμοποιείται για προσδιορίσει ότι η κλάση αποτελεί μία οντότητα του μοντέλου η οποία θα μεταφραστεί σε πίνακα στη βάση δεδομένων μας. Κάθε ιδιότητα της κλάσης, διακοσμείται με το χαρακτηριστικό [Column] το οποίο λέει στο DataContext ότι η ιδιότητα αποθηκεύεται σε μία στήλη του πίνακα. Το χαρακτηριστικό έχει μια σειρά από ιδιότητες: DbType ορίζει τον τύπο της στήλης. CanBeNull ορίζει αν κάποια στήλη του πίνακα επιτρέπει τιμές null. IsPrimaryKey υποδηλώνει ότι ένα μέλος μιας οντότητας αποτελεί το πρωτεύον κλειδί του πίνακα. IsDbGenerated μέλη της οντότητας με την συγκεκριμένη ιδιότητα συγχρονίζονται αμέσως μετά την εισαγωγή των δεδομένων στην βάση, δηλαδή μετά την κλήση της SubmitChanges(). Η κατάσταση μιας οντότητας, παρακολουθείται από το data context. Αυτό πραγματοποιείται με κοινοποίηση αλλαγών (change notifications) που παρέχονται από τα events των interfaces INotifyPropertyChanging.PropertyChanging και INotifyPropertyChanged.PropertyChanged τα οποία καλούνται στους setters των ιδιοτήτων όπως βλέπουμε στο απόσπασμα κώδικα, μέσω της μεθόδου Assign(). Οι σχέσεις one-to-many ανάμεσα στις οντότητες του μοντέλου, ορίζονται διακοσμώντας ιδιότητες με το χαρακτηριστικό [Association]. Δύο οντότητες που συμμετέχουν σε μία σχέση one-to-many χρησιμοποιούν ιδιότητες της κλάσης Association για να υποδείξουν σε ποια πλευρά της σχέσης ανήκουν. Οι σχέσεις one-to-many αντιπροσωπεύονται ως ξένα κλειδιά (foreign keys) στην βάση. [Association(Storage = "classroom", ThisKey = "ClassroomID", IsForeignKey = true, DeleteRule = "CASCADE")] public Classroom Classroom get return classroom.entity; set classroom.entity = value; Για παράδειγμα η ιδιότητα τύπου Classroom με το ίδιο όνομα, χρησιμοποιώντας το χαρακτηριστικό Association ορίζεται το κλειδί της (ThisKey = "ClassroomID"), το οποίο αποτελεί και ξένο κλειδί (IsForeignKey = true) για αυτή την οντότητα (πρωτεύον κλειδί για την οντότητα Classroom) και θέτει ένα κανόνα διαγραφής σε περίπτωση που το πρωτεύον κλειδί στο οποίο παραπέμπει διαγραφεί (DeleteRule = "CASCADE"). Η κλάση EntityRef αντιπροσωπεύει τη μία πλευρά σε μία σχέση one-to-many. Αντίθετα η κλάση EntitySet αντιπροσωπεύει την πλευρά many, όπως βλέπουμε παρακάτω, στο απόσπασμα κώδικα από τον ορισμό της οντότητας Classroom. 73 Σ ε λ ί δ α

74 [Association(Storage = "classroomseats", OtherKey = "ClassroomID", DeleteRule = "CASCADE")] public EntitySet<ClassroomSeat> ClassroomSeats get return classroomseats; set classroomseats.assign(value); Παρακάτω βλέπουμε ένα LINQ to SQL query που επιστρέφει την θέση στην οποία κάθεται ένας μαθητής με συγκεκριμένο studentid και για μια συγκεκριμένη τάξη με classroomid: var classroomseat = (from seat in datacontext.classroomsseats where seat.classroomid == classroomid && seat.studentid == studentid select seat).single(); Και ένα ακόμα που επιστρέφει τις παρουσίες ενός μαθητή σε μια συγκεκριμένη τάξη: var studentattendanceitems = (from att in datacontext.attendanceitems where att.studentid == studentid && att.attendance.classroomid == classroomid select att).tolist(); Το Διάγραμμα της Βάσης Η βάση δεδομένων αποτελείται από 8 πίνακες, της οποίας το διάγραμμα βλέπουμε παρακάτω. 74 Σ ε λ ί δ α

75 Ο πίνακας Classroom αντιπροσωπεύει μία τάξη στην εφαρμογή. Οι πίνακες RowDefinition και ColumnDefinition αντιπροσωπεύουν τις γραμμές και τις στήλες για κάθε τάξη και το πεδίο τους ClassroomID είναι ξένο κλειδί που παραπέμπει στην τάξη-πατέρα Classroom. O πίνακας Student αντιπροσωπεύει ένα μαθητή που μπορεί να καθίσει σε οποιαδήποτε τάξη. Ο πίνακας Note αντιπροσωπεύει μια σημείωση που έχει καταχωρηθεί για κάποιον μαθητή σε μια τάξη. Τα πεδία του, ClassroomID και StudentID είναι ξένα κλειδιά που παραπέμπουν στους πίνακες Classroom και Student. Οι πίνακες Attendance και AttendanceItem αντιπροσωπεύουν της παρουσίες των μαθητών σε κάθε τάξη. Ο πίνακας Attendance, έχει το ξένο κλειδί ClassroomID που παραπέμπει στην τάξη για την οποία θα καταχωρηθούν οι παρουσίες και ο AttendanceItem έχει ξένα κλειδιά που παραπέμπουν στον πίνακα Attendance και στον πίνακα Student. Τέλος, ο πίνακας ClassroomSeat αντιπροσωπεύει μια θέση σε τάξη. Ξένα κλειδιά του είναι τα StudentID, ClassroomID, RowDefinitionID και ColumnDefinitionID που παραπέμπουν στους αντίστοιχους πίνακες για να ορίσουν της σχέσεις μεταξύ των πινάκων LiveSDK για το OneDrive Cloud Η Microsoft παρέχει τo LiveSDK, ένα framework για την εύκολη ενσωμάτωση του OneDrive στις εφαρμογές Windows Phone και Windows 8. To framework επιτρέπει την πρόσβαση σε πληροφορίες του προφίλ του χρήστη και επιτρέπει στις εφαρμογές να: 75 Σ ε λ ί δ α

76 Κάνουν upload/download φωτογραφίες, βίντεο, έγγραφα και άλλα αρχεία στο OneDrive. Να εξατομικεύσουν την εμπειρία των χρηστών Επωφεληθούν από την είσοδο μίας-φοράς με τη χρήση λογαριασμού Microsoft Να δημιουργήσουν, διαβάσουν και να ενημερώσουν επαφές, το ημερολόγιο και τα γεγονότα ενός χρήστη στο Outlook.com Οι 7 μέθοδοι που πραγματοποιούν τις παραπάνω λειτουργίες είναι οι: CopyAsync αντιγράφει αρχεία ανάμεσα στους φακέλους του OneDrive. DeleteAsync διαγράφει αρχεία ή φακέλους στο OneDrive DownloadAsync κατεβάζει ένα αρχείο από το OneDrive στη συσκευή GetAsync διαβάζει τα αρχεία και τους φακέλους που βρίσκονται σε ένα μονοπάτι (path) στο MoveAsync μεταφέρει αρχεία ή φακέλους μέσα στο OneDrive PostAsync δημιουργεί αρχεία ή φακέλους στο OneDrive UploadAsync ανεβάζει αρχεία της εφαρμογής στο OneDrive Όλες οι παραπάνω μέθοδοι λειτουργούν ασύγχρονα. Παρακάτω βλέπουμε ένα απόσπασμα κώδικα που ανεβάζει αρχεία από το Isolated Storage στον φάκελο της εφαρμογής στο OneDrive. public static async Task<bool> UploadAppFolderFiles() return await Task.Run(async () => try ClientBackup = new LiveConnectClient(SessionBackup); using (var isolatedstoragefile = IsolatedStorageFile.GetUserStoreForApplication()) foreach (var file in isolatedstoragefile.getfilenames("\\*.sdf").tolist();) using (var isolatedstoragestream = isolatedstoragefile.openfile( file, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) var result = await ClientBackup.UploadAsyncTask( AppFolderID, file, isolatedstoragestream); ); if (result.error!= null) return false; return true; catch (Exception ex) return false; 76 Σ ε λ ί δ α

77 ΚΕΦΑΛΑΙΟ 5 Η εφαρμογή Teacher Assistant Μέχρι στιγμής στο παρών κείμενο, έγινε μία εισαγωγή στο Windows Phone, έγινε αναφορά στα εργαλεία και τις τεχνολογίες που χρησιμοποιήθηκαν και αναλύθηκαν στο μέτρο του δυνατού οι δύο γλώσσες προγραμματισμού που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής, με αποσπάσματα κώδικα για τις λειτουργίες που αυτή εκτελεί. Στο τρέχων κεφάλαιο θα παρουσιάσουμε την εφαρμογή και το πώς λειτουργεί με εικόνες. Η αρχική σελίδα της εφαρμογής παρουσιάζει την λίστα τάξεων και φιλοξενεί ένα Application Bar μέσω του οποίου μπορούμε να προσθέσουμε, αφαιρέσουμε ή να επεξεργαστούμε μια τάξη, να μεταφερθούμε στην σελίδα λίστας μαθητών, στην σελίδα των ρυθμίσεων και στην σελίδα πληροφοριών της εφαρμογής. Πατώντας στο κουμπί προσθήκη, ή επεξεργασία o χρήστης μεταφέρεται στην σελίδα εισαγωγής/επεξεργασίας τάξης. 77 Σ ε λ ί δ α

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

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

80 Πίσω στην αρχική σελίδα, πατώντας σε μία τάξη ο χρήστης μεταφέρεται στην σελίδα προβολής τάξης. Από τα κουμπιά του Application Bar ο χρήστης μπορεί να πάρει παρουσίες ή να επιλέξει τυχαία μαθητές. 80 Σ ε λ ί δ α

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

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

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

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

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

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

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

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

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

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

Οδηγός γρήγορης εκκίνησης Χρήση του Office 365 σε τηλέφωνο Windows Phone Οδηγός γρήγορης εκκίνησης Έλεγχος ηλεκτρονικού ταχυδρομείου Ρυθμίστε το Windows Phone για αποστολή και λήψη ηλεκτρονικού ταχυδρομείου από το λογαριασμό του

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο Το περιβάλλον εργασίας Ανοίγοντας την Ελληνική Έκδοση του FrontPage, για πρώτη φορά, η εικόνα που θα συναντήσουμε είναι αυτή της Εικόνας 1 με τα Μενού Εντολών και τη Γραμμή Εργαλείων, στο πάνω μέρος της

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

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

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

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

Χρήση του Office 365 σε τηλέφωνο Android

Χρήση του Office 365 σε τηλέφωνο Android Χρήση του Office 365 σε τηλέφωνο Android Οδηγός γρήγορης εκκίνησης Έλεγχος ηλεκτρονικού ταχυδρομείου Ρυθμίστε το τηλέφωνο Android για αποστολή και λήψη ηλεκτρονικού ταχυδρομείου από το λογαριασμό του Office

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

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

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

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

Σημείωση για το προϊόν

Σημείωση για το προϊόν Έναρξη από εδώ Copyright 2013 Hewlett-Packard Development Company, L.P. Η ονομασία Windows είναι σήμα κατατεθέν της Microsoft Corporation στις ΗΠΑ. Οι πληροφορίες στο παρόν έγγραφο μπορεί να αλλάξουν χωρίς

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

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

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

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

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής Μάθημα 7ο Πολυμέσα 7.Α.1 Παρουσιάσεις Οι παρουσιάσεις είναι μια εφαρμογή που χρησιμεύει στην παρουσίαση των εργασιών μας. Αποτελούν μια συνοπτική μορφή των εργασιών μας. Μέσω δημιουργίας διαφανειών, μορφοποιήσεων

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

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΑΝΑΛΥΣΗ ΜΕΝΟΥ ΕΦΑΡΜΟΓΗΣ... 4 2. ΕΠΕΞΗΓΗΣΗ ΚΕΝΤΡΙΚΟΥ ΜΕΝΟΥ ΚΑΡΤΕΛΑΣ... 5 3. ΔΗΜΙΟΥΡΓΙΑ ΠΕΛΑΤΗ... 6 4. ΑΝΑΖΗΤΗΣΗ ΠΕΛΑΤΗ... 6 5. ΕΠΕΞΕΡΓΑΣΙΑ/ΔΙΑΓΡΑΦΗ

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

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας Περιεχόμενα Κεφάλαιο 1 Microsoft Excel 2010... 7 Κεφάλαιο 2 Η δομή ενός φύλλου εργασίας... 19 Κεφάλαιο 3 ημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων... 24 Κεφάλαιο 4 Συμβουλές για την καταχώριση

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

SharePoint Online. Δημιουργήστε μια τοποθεσία ή μια δημοσίευση ειδήσεων. Αναζήτηση Βρείτε Τοποθεσίες, Άτομα ή Αρχεία.

SharePoint Online. Δημιουργήστε μια τοποθεσία ή μια δημοσίευση ειδήσεων. Αναζήτηση Βρείτε Τοποθεσίες, Άτομα ή Αρχεία. Οδηγός γρήγορης εκκίνησης Κάντε περισσότερα όπου και αν βρίσκεστε με ασφαλή πρόσβαση, κοινή χρήση και αποθήκευση αρχείων. Πραγματοποιήστε είσοδο στη συνδρομή σας στο Office 365 και επιλέξτε το SharePoint

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

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

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

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

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Κεφάλαιο 2.3: Ρυθμίσεις των Windows Κεφάλαιο 2.3: Ρυθμίσεις των Windows 2.3.1 Βασικές πληροφορίες συστήματος Για να δούμε βασικές πληροφορίες για τον υπολογιστή μας, πατάμε το κουμπί «Έναρξη» και επιλέγουμε διαδοχικά «Πίνακας Ελέγχου», «Σύστημα

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

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

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

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

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

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

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

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

Ενημέρωση σε 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, για να σας προσφέρουν βελτιώσεις στην εξατομίκευση, την αναζήτηση, τις εφαρμογές,

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

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

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

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

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

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

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

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

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

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

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

Εισαγωγή Επαφών από την κάρτα SIM

Εισαγωγή Επαφών από την κάρτα SIM 1 Εισαγωγή Επαφών από την κάρτα SIM 1. Πατήστε το Πλήκτρο Κεντρικής Σελίδας > > Επαφές. 2. Πατήστε το Πλήκτρο Μενού > Εισαγωγή / Εξαγωγή > Εισαγωγή από κάρτα SIM. Η συσκευή σας ZTE-RACER θα διαβάσει αυτόματα

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

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

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

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

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

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

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

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

Χρήση του Office 365 σε iphone ή ipad

Χρήση του Office 365 σε iphone ή ipad Χρήση του Office 365 σε iphone ή ipad Οδηγός γρήγορης εκκίνησης Έλεγχος ηλεκτρονικού ταχυδρομείου Ρυθμίστε το iphone ή το ipad για αποστολή και λήψη ηλεκτρονικού ταχυδρομείου από το λογαριασμό του Office

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

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

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

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

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

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

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

B) Ετοιμάζοντας μια Παρουσίαση

B) Ετοιμάζοντας μια Παρουσίαση B) Ετοιμάζοντας μια Παρουσίαση Τι είναι μια παρουσίαση με τη βοήθεια ηλεκτρονικού υπολογιστή Ο υπολογιστής με την κατάλληλη εφαρμογή, μπορεί να μας βοηθήσει στη δημιουργία εντυπωσιακών εγγράφων, διαφανειών

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

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

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

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

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

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

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

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

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

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

Πρόλογος... 7 ΕΙΔΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πρόλογος... 7 ΕΙΔΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 7 ΕΙΔΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ Α Δομή και λειτουργία προσωπικού υπολογιστή...11 ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ Β Δομή και χρήση λειτουργικών συστημάτων DOS, UNIX και λειτουργικού

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

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

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

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

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

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

Microsoft PowerPoint 2007

Microsoft PowerPoint 2007 Information Technology Services and Solutions Σύμβουλοι Μηχανογράφησης και Εκπαίδευσης Στεφ. Σκουλούδη 27, Καλλίπολη, Πειραιάς 210 45 38 177 http://www.itss.gr/ Microsoft PowerPoint 2007 Κωνσταντίνος Κωβαίος

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

Εργασία-3: Παρουσίαση Εργασίας. Ομάδα Α. Προετοιμασία Αναφοράς

Εργασία-3: Παρουσίαση Εργασίας. Ομάδα Α. Προετοιμασία Αναφοράς Εργασία-3: Παρουσίαση Εργασίας Ομάδα Α. Προετοιμασία Αναφοράς Αρκετοί πιστεύουν πως η επιτυχία μιας παρουσίασης είναι δεδομένη εάν ο παρουσιαστής κατέχει το θέμα που πρόκειται να παρουσιάσει και είναι

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC 1) Πατάμε δεξί κλικ Μενού 2) Όνομα Χρήστη βάζουμε «admin» 3) Κωδικός Πρόσβασης το αφήνουμε «κενό» 4) Πατάμε OK και μπαίνουμε στο Μενού Είσοδος στο μενού Στην πρώτη εκκίνηση μετά

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

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word Επειδή οι μεταγενέστερες εκδόσεις του Word δεν περιλαμβάνουν στο μενού τη δυνατότητα δημιουργίας πολλαπλών

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

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο.

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο. Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο. Εισηγητής : Χρήστος Μανώλης δάσκαλος Θεσσαλονίκη Οκτώβριος - Δεκέμβριος

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

Κεφάλαιο 2.4: Εργασία με εικονίδια

Κεφάλαιο 2.4: Εργασία με εικονίδια Κεφάλαιο 2.4: Εργασία με εικονίδια 2.4.1 Συχνότερα εμφανιζόμενα εικονίδια των Windows Τα πιο συνηθισμένα εικονίδια, που μπορεί να συναντήσουμε, είναι: Εικονίδια συστήματος: Τα Windows εμφανίζουν τα στοιχεία

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

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

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

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

ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ

ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ ΨΗΦΙΑΚΗ ΑΛΛΗΛΕΓΓΥΗ ΟΔΗΓΟΣ Πίνακας Περιεχομένων Ενεργοποίηση και Αρχικοποίηση Συσκευής... 4 1 Περιεχόμενα συσκευασίας ipad... 5 2 Εξοικείωση με την συσκευή... 6 3 Αρχικοποίηση και ρυθμίσεις ipad... 7 4

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

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp

Ευ ομή. Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Ευ ομή Εγχειρίδιο χρήσης του περιβάλλοντος LT125-dp Περιεχόμενα 1. Χειρισμός του περιβάλλοντος LT125-dp Εγκατάσταση & Τρέξιμο Χειρισμός της ψηφιακής εφαρμογής Πλοήγηση στο περιεχόμενο Αλλαγή του μεγέθους

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

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

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

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

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

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

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

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr Εγχειρίδιο Χρήσης Μελών ΔΕΠ Αναζήτηση Δημόσιου Περιεχομένου Η διεύθυνση ιστού της νεάς πλατφόρμας διαχείρισης βιντεοδιαλέξεων Δήλος είναι: http://delos.uoa.gr

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

ΠΡΟΣΩΠΙΚΟΙ ΙΣΤΟΧΩΡΟΙ Nα δημιουργήσω/ενεργοποιήσω την προσωπική μου ιστοσελίδα Να προβάλω τις λεπτομέρειες του προφίλ μου...

ΠΡΟΣΩΠΙΚΟΙ ΙΣΤΟΧΩΡΟΙ Nα δημιουργήσω/ενεργοποιήσω την προσωπική μου ιστοσελίδα Να προβάλω τις λεπτομέρειες του προφίλ μου... ... 2 Nα δημιουργήσω/ενεργοποιήσω την προσωπική μου ιστοσελίδα... 2 Να προβάλω τις λεπτομέρειες του προφίλ μου... 3 Να επεξεργαστώ τις λεπτομέρειες του προφίλ μου... 5 Να προσθέσω, επεξεργαστώ, να διαγράψω

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

Sricam R CONCEPTUM. SricamPC. Εγχειρίδιο εφαρμογής

Sricam R CONCEPTUM. SricamPC. Εγχειρίδιο εφαρμογής Sricam Sricam Sricam Sricam Εγχειρίδιο εφαρμογής SricamPC 1. Τι μπορείτε να κάνετε με το SricamPC Το SricamPC είναι δωρεάν λογισμικό συμβατό με Microsoft Windows 7, 8 και 10. Το SricamPC σας επιτρέπει:

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

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

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

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

Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID.

Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID. 1 2 9 4 3 5 6 7 8 Internet 1. Ρυθµίσεις ικτύου Η MID διαθέτει ενσωµατωµένο Wi-Fi module. Κάντε κλικ στο, στο µενού ρυθµίσεων θα εµφανιστεί στο MID. 6.3 Επιλέξτε µια εικόνα. Κάντε κλικ στο "Wallpaper"

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

Copyright 2016 HP Development Company, L.P.

Copyright 2016 HP Development Company, L.P. Οδηγός χρήσης Copyright 2016 HP Development Company, L.P. Η ονομασία AMD είναι εμπορικό σήμα της Advanced Micro Devices, Inc. 2012 Google Inc. Με επιφύλαξη κάθε νόμιμου δικαιώματος. Η ονομασία Google είναι

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

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11 Περιεχόμενα Πρόλογος... 11 Μέρος 1: Βασικές έννοιες της πληροφορικής... 13 1.1 Windows XP... 15 1.2 Επιφάνεια εργασίας... 19 1.3 Γραμμή εργασιών... 24 1.4 Χειρισμός παραθύρων... 30 1.5 Μενού... 36 1.6

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

ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I. 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD

ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I. 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD ΠΕΡΙΕΧΟΜΕΝΟ ΜΑΘΗΜΑΤΟΣ ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD 1. Προσθήκη στηλών σε τμήμα εγγράφου 2. Εσοχή παραγράφου 3. Εισαγωγή Κεφαλίδας, Υποσέλιδου και Αριθμού Σελίδας 4. Εισαγωγή

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 91 Windows Vista... 9 92 Επιφάνεια εργασίας... 18 93 Γραμμή εργασιών... 31 94 Χειρισμός παραθύρων... 53 95 Το παράθυρο Υπολογιστής... 77 96 Το μενού Έναρξη...

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

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client Εγχειρίδιο Χρήσης Εφαρμογής TRS Client Transaction Reporting System (TRS) Πίνακας Περιεχομένων 1. Γενικά... 3 1.1 Έλεγχος Διαθεσιμότητας... 4 1.2 Επιλογή Αρχείου... 4 1.3 Υπογραφή Αποστολή Δεδομένων...

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

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

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

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

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

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

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

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

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430 Σχεδίαση Εκπαιδευτικού Λογισμικού Εργασία 2 - Α' φάση Σενάριο/Σχέδιο μαθήματος Σταματία Κορρέ Μ1430 2 Περιεχόμενα Τίτλος... 2 Γνωστικό αντικείμενο... 2 Βαθμίδα εκπαίδευσης... 3 Διδακτικοί στόχοι... 3 Αναμενόμενα

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

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

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

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

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

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

Περιεχόμενα Πώς να χρησιμοποιήσετε το βιβλίο... 7 Αντί προλόγου... 9 Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3: Κεφάλαιο 4: Κεφάλαιο 5: Πώς να δημιουργήσω το Προφίλ μου και να γίνω μέλος στο Facebook;... 15 Τι

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

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

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

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

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου Σύζευξις -1- -1- 1 Διαχείριση Χρηστών...3 1.1 Υπηρεσίες...5 1.1.1 Δημιουργία νέου χρήστη...6 1.1.2 Αναζήτηση χρήστη...7 1.1.2 Επεξεργασία στοιχείων χρήστη...8 1.1.3 Δημιουργία /Επεξεργασία mailbox plan...10 1.1.4 Ενεργοποίηση

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

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

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

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

Εισαγωγή στο Libre Office Παρουσιάσεις με το Impress. Bάιος Κολοφωτιάς Επιστημονικός Συνεργάτης Sweng Lab A.Π.Θ

Εισαγωγή στο Libre Office Παρουσιάσεις με το Impress. Bάιος Κολοφωτιάς Επιστημονικός Συνεργάτης Sweng Lab A.Π.Θ Εισαγωγή στο Libre Office Παρουσιάσεις με το Impress Bάιος Κολοφωτιάς Επιστημονικός Συνεργάτης Sweng Lab A.Π.Θ Εισαγωγικά Οι παρουσιάσεις είναι μια εφαρμογή που χρησιμεύει στην παρουσίαση των εργασιών

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

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0 Εισαγωγή στη C# και Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας το.net 4.0 2 Π ί ν α κ α ς Π ε ρ ι ε χ ο μ έ ν ω ν Πίνακας Περιεχομένων... 1 1. Εισαγωγή... 11 1.1. Γλώσσες και γλώσσες προγραμματισμού...

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

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα Μάθημα 6ο Σουίτα Γραφείου LibreOffice 2 Ύλη Μαθημάτων V Μαθ. 5/6 : Σουίτα Γραφείου LibreOffice LibreOffice Γενικά, Κειμενογράφος - LibreOffice Writer,

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

Ολοκληρωμένο, Σταθερό, Γρήγορο, Επεκτάσιμο

Ολοκληρωμένο, Σταθερό, Γρήγορο, Επεκτάσιμο Ολοκληρωμένο, Σταθερό, Γρήγορο, Επεκτάσιμο Περιβάλλον ανάπτυξης Τεχνολογία ROADS Ενσωματωμένες τεχνολογίες αιχμής Ανάπτυξη λύσεων από εταιρίες ISV Προηγμένο σύστημα αυτοέλεγχου και υποστήριξης Νέο user

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

Οδηγό γρήγορης έναρξης Vodafone 858 Smart

Οδηγό γρήγορης έναρξης Vodafone 858 Smart Οδηγό γρήγορης έναρξης Vodafone 858 Smart Προφυλάξεις ασφαλείας Πριν ξεκινήσετε να χρησιμοποιείτε το τηλέφωνό σας, διαβάστε προσεκτικά αυτές τις προφυλάξεις ασφαλείας. Διαβάστε τον οδηγό "Πληροφορίες ασφαλείας"

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

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΜΑΘΗΜΑ : Η/Υ I (ενότητα WINDOWS) ΥΠΕΥΘΥΝΟΣ : ΑΝΑΣΤΑΣΙΟΣ ΟΙΚΟΝΟΜΙΔΗΣ, Καθηγητής ΕΡΓΑΣΤΗΡΙΑ : ΘΕΑΝΩ ΧΑΤΖΙΔΑΚΗ, Εργαστηριακό

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

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

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

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

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

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

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

MK Prosopsis Ltd - Assistive Technology Products & Services

MK Prosopsis Ltd - Assistive Technology Products & Services Βασικά Στοιχεία Λογισμικό Επικοινωνώ: Συμβολογράφος Σύντομος Οδηγός Σημειώσεις Τι είναι: o Πρόκειται για ένα λογισμικό το οποίο έχει σκοπό να στηρίξει του μαθητές που δυσκολεύονται στο γραπτό λόγο (και

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

POWERPOINT 2003. Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων.

POWERPOINT 2003. Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων. POWERPOINT 2003 1. Τι είναι το PowerPoint (ppt)? Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων. 2. Τι δυνατότητες έχει? Δημιουργία παρουσίασης. Μορφοποίηση παρουσίασης. Δημιουργία γραφικών. Δημιουργία

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

Ενηµερώσεις λογισµικού Οδηγός χρήσης

Ενηµερώσεις λογισµικού Οδηγός χρήσης Ενηµερώσεις λογισµικού Οδηγός χρήσης Copyright 2009 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι πληροφορίες στο

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

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος... Περιεχόμενα Πρόλογος...11 Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών... 13 1.1 Εισαγωγή στους υπολογιστές... 15 1.2 Μονάδες μέτρησης... 27 1.3 Οι βασικές λειτουργίες ενός ηλεκτρονικού υπολογιστή...

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

Το σύστημα θα πρέπει να σχεδιαστεί με τρόπο που θα ικανοποιήσει τις απαιτήσεις του χρήστη εύκολα.

Το σύστημα θα πρέπει να σχεδιαστεί με τρόπο που θα ικανοποιήσει τις απαιτήσεις του χρήστη εύκολα. Έγγραφο απαιτήσεων 1 Περιγραφή Συστήματος Η online ιστοσελίδα και η αντίστοιχη έκδοση για κινητά τηλέφωνα έχει ως στόχο να υποστηρίξει και να ενισχύσει το User Experience (UX) των επισκεπτών του e-museum,

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

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

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

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

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Οδηγός γρήγορης εγκατάστασης (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Περιεχόμενα συσκευασίας 1 Εισαγωγή στο υλικό Εξωτερική περιγραφή ΔΙΑΦΟΡΕΣ Μοντέλο

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

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

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

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

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

PowerPoint Ένα εργαλείο παρουσίασης

PowerPoint Ένα εργαλείο παρουσίασης Εργασία 7η 2 Αρκετοί πιστεύουν πως η επιτυχία μιας παρουσίασης είναι δεδομένη εάν ο παρουσιαστής κατέχει το θέμα που πρόκειται να παρουσιάσει και είναι σε θέση να χειρίζεται ί ά άνετα έ ένα πρόγραμμα ό

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

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία Blog στο Wordpress Επιμέλεια: Δέγγλερη Σοφία Περιεχόμενα Μετάβαση στο blog Σύνδεση ως διαχειριστής Πίνακας ελέγχου Εμφάνιση Ρυθμίσεις Άρθρα Σελίδες Πολυμέσα Σύνδεσμοι Widgets Μετάβαση στο blog Πληκτρολογούμε

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

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

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

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

COSMOTE Web 2 SMS. Εφαρμογή τελικού χρήστη ( ιαδίκτυο) Οδηγός Χρήσης

COSMOTE Web 2 SMS. Εφαρμογή τελικού χρήστη ( ιαδίκτυο) Οδηγός Χρήσης COSMOTE Web 2 SMS Εφαρμογή τελικού χρήστη ( ιαδίκτυο) Οδηγός Χρήσης Πίνακας Περιεχομένων 1. Έναρξη της εφαρμογής... 3 1.1. Πλαίσιο εισόδου / εξόδου και επιλογών... 4 1.2. Πλαίσιο εργασιών αποτελεσμάτων...

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