ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Αυγέρος Ευάγγελος

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

Download "ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Αυγέρος Ευάγγελος"

Transcript

1 ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << Ανάπτυξη εφαρμογής επεξεργασίας εικόνας σε Windows Phone 7.5 >> Αυγέρος Ευάγγελος Επιβλέπων Καθηγητής : Ιατρέλλης Όμηρος ΛΑΡΙΣΑ 2014

2 «Δηλώνω υπεύθυνα ότι το παρόν κείμενο αποτελεί προϊόν προσωπικής μελέτης και εργασίας και πως όλες οι πηγές που χρησιμοποιήθηκαν για τη συγγραφή της δηλώνονται σαφώς είτε στις παραπομπές είτε στη βιβλιογραφία. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαι ενήμερος/η για την επέλευση των νομίμων συνεπειών» 1

3 Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος:... Ημερομηνία:.../.../... ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ 1. Ονοματεπώνυμο:... Υπογραφή: Ονοματεπώνυμο:... Υπογραφή: Ονοματεπώνυμο:... Υπογραφή:... 2

4 ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 - Εισαγωγή στα Windows Phone Τι είναι τα Windows Phone Ανακαλύπτοντας τα Windows Phone Αναφορές και Βιβλιογραφία 1 ου Κεφαλαίου...12 Κεφάλαιο 2 - Το Windows Phone 2.1 Λανσάρισμα στην απαιτητική αγορά των smartphones Windows Phone 7.5 (Mango) Tango Update Windows Phone Χαρακτηριστικά των Windows Phone Πυρήνας Οθόνη έναρξης Metro User Interface Επαφές + + Μηνύματα Φωτογραφίες + Κάμερα Μουσική + Βίντεο Ενότητα Office Marketplace Αναζήτηση Bing

5 2.3 Hardware Κουμπιά Συσκευής Μνήμη & Αποθήκευση Ενημέρωση Λογισμικού Accelerometer GPS Αναφορές και Βιβλιογραφία 2ου Κεφαλαίου...23 Κεφάλαιο 3 - Η γλώσσα προγραμματισμού C# 3.1 Η ιστορία της C# Η δημιουργία της C# Αντικειμενοστραφής Προγραμματισμός Ενθυλάκωση Πολυμορφισμός Κληρονομικότητα Γενικά περί Κλάσεων Αναφορές και Βιβλιογραφία 3ου Κεφαλαίου...35 Κεφάλαιο 4 - Το.NET framework 4.1 Σχετικά με το.νετ framework Λίγη Ιστορία

6 4.3 Χαρακτηριστικά του.net Framework Αρχιτεκτονική του.net Framework Common Language Runtime Βιβλιοθήκες κλάσεων Γλώσσες προγραμματισμού Εργαλεία του.νετ Framework Εκδόσεις του.νετ Framework Αναφορές και Βιβλιογραφία 4ου Κεφαλαίου...50 Κεφάλαιο 5 - Η δηλωτική γλώσσα XAML 5.1 Τι είναι η XAML; Ο ρόλος της XAML στα Windows Phone Τα namespaces της XAML XAML language XAML namespace Άλλα XAML namespace Δήλωση αντικειμένων Δήλωση ενός αντικειμένου με χρήση της object element syntax Δήλωση ενός αντικειμένου με χρήση της attribute syntax Δήλωση ενός αντικειμένου με χρήση Initialization Τext Ρύθμιση ιδιοτήτων Ρύθμιση μιας ιδιότητας με χρήση attribute syntax Ρύθμιση μιας ιδιότητας με χρήση property element syntax

7 5.7.3 Ρύθμιση μιας ιδιότητας με χρήση XAML content syntax Ρύθμιση μιας ιδιότητας με χρήση collection syntax Markup επεκτάσεις Μετατροπείς τύπων Events XAML και XML Case sensitivity στη XAML Αναφορές και Βιβλιογραφία 5ου Κεφαλαίου...67 Κεφάλαιο 6 - Silverlight 6.1 Σχετικά με το Silveright Σχεδίαση προγράμματος με το Silverlight Εργαλεία ανάπτυξης εφαρμογής Το στυλ σχεδίασης Metro Στοιχεία και Αντικείμενα του Silverlight Τα εργαλεία και η επιφάνεια σχεδίασης Ιδιότητες των στοιχείων του Silverlight Ιδιότητες του Silverlight και της C# Αναφορές και Βιβλιογραφία 6ου Κεφαλαίου

8 Κεφάλαιο 7 - Εισαγωγή στο Microsoft Visual Studio Express 2012 for Windows Phone 7.1 Γενικά περί Visual Studio Visual Studio Solution Explorer Toolbox Error List Emulator Δημιουργώντας ένα απλό Windows Phone project στο Visual Studio Αναφορές και Βιβλιογραφία 7ου Κεφαλαίου...88 Κεφάλαιο 8 - Ανάπτυξη της εφαρμογής PicMilling 8.1 Γενική περιγραφή Ο κώδικας του MainPage.xaml Ο κώδικας του MainPage.xaml.cs Screenshots από την εφαρμογή Αναφορές και Βιβλιογραφία 8ου Κεφαλαίου

9 8

10 ΠΕΡΙΛΗΨΗ Η πτυχιακή μου περιγράφει τις βασικές αρχές ανάπτυξης εφαρμογών για το τεχνολογικό προϊόν της Microsoft, που απευθύνεται σε κινητά τηλέφωνα, το γνωστό σε όλους μας Windows Phone.Το Windows Phone είναι ένα λειτουργικό σύστημα για έξυπνα κινητά τηλέφωνα,το οποίο εμφανίστηκε στην αγορά στις αρχές του 2010 με την αρχική του έκδοση ως Windows Phone 7 αντικαθιστώντας έτσι, τo προηγούμενο όχι και τόσο διαδεδομένο λειτουργικό σύστημα της Microsoft το Windows Mobile. Η παρούσα πτυχιακή περιέχει την ανάπτυξη μιας εφαρμογής επεξεργασίας εικόνας που ονομάστηκε <<PicMilling>> και είναι συμβατή με λειτουργικό σύστημα Windows Phone και 8.Η εφαρμογή αυτή έχει αναπτυχθεί με τη χρήσης μιας σειράς εργαλείων που παρέχει δωρεάν η Microsoft μέσω της επίσημης σελίδας της. Τα εργαλεία που χρησιμοποίησα είναι το Visual Studio 2012 για την ανάπτυξη κώδικα(code behind) και γραφικού περιβάλλοντος(xaml) αλλά και η εγκατάσταση των developer tools και συγκεκριμένα του: Windows SDK for Windows 8.Επίσης ένα ακόμη καλό εργαλείο είναι το Metro Studio Syncfusion το οποίο σου λύνει πραγματικά τα χέρια, όταν έχεις να εισάγεις αρκετά εικονίδια στο project σου, χωρίς να χρειάζεται να ψάχνεις άσκοπα για διάφορα icons είτε να χρησιμοποιείς Photoshop ή κάτι παρεμφερές για τη βελτίωση της εικόνας του application. Η εφαρμογή <<PicMilling>> προορίζεται για απλούς χρήστες, οι οποίοι μπορούν να διασκεδάσουνε χρησιμοποιώντας το συγκεκριμένο application, κάνοντας επεξεργασία των δικών τους photo, μέσω της βιβλιοθήκης πολυμέσων( media library) του τηλεφώνου τους, είτε μέσω των φωτογραφιών που απαθανατίζουνε εκείνη τη στιγμή.με τη παρούσα εφαρμογή μπορεί κάποιος να κάνει περικοπή, να εισάγει φίλτρα, να ρυθμίσει τη φωτεινότητα των εικόνων του,όπως και το μέγεθος τους, να εισάγει κείμενο δίνοντας έτσι μια περιγραφή στη φωτογραφία του καθώς και αρκετές άλλες λειτουργίες που σχετίζονται με την επεξεργασία εικόνων αλλά και φυσικά συνδυασμός αυτών. 9

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

12 Κεφάλαιο 1 - Εισαγωγή στα Windows Phone Τι είναι τα Windows Phone 7 Τα Windows Phone 7 (WP7), είναι ένα λειτουργικό σύστημα το οποίο αναπτύχθηκε από τη Microsoft, και είναι διάδοχος της πλατφόρμας Windows Mobile για κινητά τηλέφωνα. Τα γενικά χαρακτηριστικά του υποδεικνύουν πως στοχεύει στην καταναλωτική αγορά (παιχνίδια, κοινωνικά δίκτυα, φωτογραφίες, video), αντί της αγοράς επιχειρηματικών εφαρμογών όπως ο προκάτοχός του.δύο από τις βασικές λειτουργίες πολυμέσων των Windows Phone, η μουσική, τα βίντεο και οι εικόνες, είναι παρόμοιες σε εμφάνιση και λειτουργικότητα με το Zune HD. Το User Interface λέγεται Metro. H αρχική οθόνη, αποτελείται από εικονίδια, tiles, τα οποία by default είναι links σε σημαντικά χαρακτηριστικά, όπως βίντεο, μουσική, , office και επαφές. Ο χρήστης μπορεί να διαμορφώσει όπως επιθυμεί τα tiles, να τα διαγράψει. Η οθόνη αφής του Windows Phone είναι πιο φιλική προς το χρήστη απ ότι στα Windows Mobile χρησιμοποιώντας την τεχνολογία multitouch. 1.2 Ανακαλύπτοντας τα Windows Phone 7 Τα τελευταία χρόνια στόχος της Microsoft είναι να δώσει μια νέα προσέγγιση στην αγορά κινητών τηλεφώνων.με μία καθαρή εμφάνιση και με μία εντυπωσιακή γραμματοσειρά, το Microsoft Windows Phone 7 διαφοροποιείται όχι σε σχέση μόνο με τις παλαιότερες εκδόσεις του, αλλά και με τα υπόλοιπα smartphones που κυκλοφορούν στην αγορά.οι συσκευές ήδη κατασκευάζονται από διάφορους κατασκευαστές και είναι διαθέσιμες από πολλούς παρόχους κινητής τηλεφωνίας.για τους προγραμματιστές τo Windows Phone 7, είναι επίσης πολύ ενδιαφέρον γιατί υποστηρίζει δύο δημοφιλείς και καινούργιες προγραμματιστικές πλατφόρμες: το Silverlight και το XNA.Το Silverlight έχει δώσει στους Web προγραμματιστές δύναμη άνευ προηγουμένου για την ανάπτυξη εξελιγμένων εφαρμογών οι οποίες συμπεριλαμβάνουν παραδοσιακή λειτουργία, υψηλής ανάλυσης κείμενα, γραφικά τριών διαστάσεων, πολυμέσα και databinding που τρέχουν σε πολλαπλές πλατφόρμες και προγράμματα περιήγησης.το Windows Phone 7 επεκτείνει το Silverlight στα κινητά τηλέφωνα.το XNA είναι η πλατφόρμα της Microsoft η οποία υποστηρίζει γραφικά δύο και τριών διαστάσεων (2D - 3D).Συνδέεται με το προγραμματισμό παιχνιδιών που τρέχουν στο windows phone αλλά περισσότερο με παιχνίδια για το Xbox

13 1.3 Αναφορές και Βιβλιογραφία 1 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ windows_phone_7_handsets ΒΙΒΛΙΟΓΡΑΦΙΑ 1. Charles Petzold, 2010, Programming Windows Phone 7, [2] 12

14 Κεφάλαιο 2 - Το Windows Phone 2.1 Λανσάρισμα στην απαιτητική αγορά των smartphones Η Microsoft παρουσίασε επίσημα το νέο λειτουργικό σύστημα, τα Windows Phone 7 Series, στο Mobile World Congress στη Βαρκελώνη στις 15 Φεβρουαρίου του 2010 και αποκάλυψε πρόσθετες λεπτομέρειες στο MIX 2010 στις 15 Μαρτίου του ίδιου έτους. Το τελικό SDK διατέθηκε στις 16 Σεπτεμβρίου 2010.Εφόσον το αρχικό του όνομα είχε επικριθεί ως υπερβολικά περίπλοκο και «φλύαρο», το όνομα του λειτουργικού συστήματος επίσημα περιορίστηκε απλά σε Windows Phone 7 στις 2 Απριλίου 2010.Στις 11 Οκτωβρίου, 2010, ο CEO της Microsoft Steve Ballmer ανακοίνωσε τις 10 προωθητικές συσκευές για τα Windows Phone 7, από τις HTC, Dell,Samsung και LG, με τις πωλήσεις να ξεκινούν στις 21 Οκτωβρίου 2010 στην Ευρώπη και την Αυστραλία και 8 Νοεμβρίου του ίδιου έτους στις Ηνωμένες Πολιτείες.Συσκευές οι οποίες, διατέθηκαν σε 60 φορείς σε 30 χώρες, με επιπλέον συσκευές να ξεκινούν το 2011.Μετά την κυκλοφορία του Windows Phone 7 "Mango", επιπλέον κατασκευαστές έγιναν εταίροι συμπεριλαμβανομένων των Acer, Fujitsu και ZTE.Το Windows Phone υποστήριξε αρχικά είκοσι πέντε γλώσσες, με εφαρμογές που είναι διαθέσιμες μέσω του Windows Phone Store σε 35 χώρες και περιοχές.υποστήριξη για περισσότερες γλώσσες και περιοχές στη συνέχεια ασκήθηκαν τόσο μέσω του Mango και Tango αλλά και ενημερώσεις για το λειτουργικό σύστημα Windows Phone 7.5 (Mango) Στο Mobile World Congress 2011, ο Steve Ballmer ανακοίνωσε μια σημαντική ενημέρωση για τα Windows Phone 7, προς το τέλος του έτους, που αναφέρεται στα Windows Phone 7.5, με την κωδική ονομασία Mango. Το νέο λειτουργικό σύστημα θα αντιμετωπίσει πολλές από τις ελλείψεις της πλατφόρμας, συμπεριλαμβανομένης μιας έκδοσης για κινητά του Internet Explorer 9, που υποστηρίζει τα ίδια πρότυπα Ιστού και γραφικής ικανότητας όπως η desktop έκδοση, multi-tasking of third-party apps, Twitter integration for the People Hub και πρόσβαση για Windows Live SkyDrive Tango Update Μια μικρή ενημέρωση κυκλοφόρησε το 2012 γνωστή ως "Tango", μαζί με άλλες διορθώσεις σφαλμάτων, θα μειώσει επίσης τις απαιτήσεις υλικού για να καταστεί δυνατή η ομαλή λειτουργία των Windows Phone που τρέχουν σε συσκευές με επεξεργαστές 800MHz και μνήμη 256MB ram.ορισμένα χαρακτηριστικά έντασης πόρων απενεργοποιούνται σε αυτά τα τηλέφωνα, και το Windows Phone Store θα αποτρέψει επίσης την εγκατάσταση εφαρμογών που θεωρούνται πολύ επίπονες στη χρήση τους όσον αφορά ασθενέστερα hardware.οι χαμηλές αυτές απαιτήσεις θεσπίστηκαν προκειμένου να καταστεί δυνατή η ανάπτυξη των χαμηλού κόστους συσκευών, ιδιαίτερα με στόχο τις αναδυόμενες αγορές, όπως η Κίνα. 13

15 2.1.3 Windows Phone 7.8 Η Microsoft ανακοίνωσε τα Windows Phone 7.8, παράλληλα με τα Windows Phone 8 και άρχισε να δραστηριοποιεί την ενημερωμένη έκδοση για συσκευές τον Ιανουάριο του 2013.Πρόσθεσε μερικά χαρακτηριστικά γνωρίσματα από το Windows NT με βάση τα Windows Phone 8.Στα χαρακτηριστικά αυτά περιλαμβάνονται: η ανανεωμένη οθόνη εκκίνησης που επιτρέπει στους χρήστες να αλλάξουν το μέγεθος των live tiles, πρόσθετα χρώματα θέματος, και μια ενημέρωση για την οθόνη κλειδώματος που θα εμφανίζει προαιρετικά την καθημερινή εικόνα της μηχανής αναζήτησης Bing(homepage photo) αυτόματα. 2.2 Χαρακτηριστικά των Windows Phone Τα θετικά χαρακτηριστικά γνωρίσματα των Windows Phone είναι αρκετά.μερικά από αυτά είναι: η σουίτα του Office, η εξατομίκευση, τα live tiles, τα live apps, η αναζήτηση bing και αρκετά ακόμη ενδιαφέροντα στοιχεία που καθιστούνε το περιβάλλον του τηλεφώνου αρκετά ενδιαφέρον και ευχάριστο στα μάτια του χρήστη Πυρήνας Τα Windows Phone 7 είναι η πρώτη και η τελευταία έκδοση των Windows Phone που διαθέτουν πυρήνα που βασίζεται σε Windows Embedded Compact 7 έκδοση των Windows Embedded CE, το οποίο επίσης χρησιμοποιείται στα Pocket Pc Systems και είχε χρησιμοποιηθεί στα Windows Mobile Οθόνη έναρξης Η οθόνη έναρξης του Windows Phone επιτρέπει στο χρήστη να ενημερώνεται και να συνδέεται εύκολα στις εφαρμογές του. Έτσι, μπορεί να βλέπει τα μηνύματα των φίλων του, πότε είναι η επόμενη σύσκεψη, ποιες είναι οι καινούριες προσφορές και ότι άλλο αποφασίσει να καρφιτσώσει σε αυτήν.επίσης η εξατομίκευση δίνει τη δυνατότητα στο χρήστη να μετακινεί και να αλλάζει το μέγεθος των live tiles καθώς και να επιλέγει τα χρώματα που του αρέσουν.με αυτή την εκπληκτική δυνατότητα των live tiles ο χρήστης λαμβάνει αυτόματα ενημερώσεις για ότι συμβαίνει γύρω του.επιπλέον τα live apps είναι μια πρακτική καινοτομία όπου ο χρήστης έχει όσες πληροφορίες χρειάζεται απευθείας στην οθόνη έναρξης. 14

16 2.2.3 Metro User Interface Η λέξη Metro χρησιμοποιείται ως κωδική ονομασία για την τεχνική σχεδίασης που χρησιμοποιείται στα Windows Phone. Το στυλ αυτό είναι εμπνευσμένο από τις πινακίδες και τις οδηγίες που βλέπουμε στην καθημερινή μας ζωή, που έχουν στόχο να μας δώσουν ξεκάθαρα την πληροφορία, χωρίς περιττά γραφικά, πλαίσια κ.α. Για την χρήση του Metro χρησιμοποιείται η γραμματοσειρά Segoe WP, η οποία ανήκει στην οικογένεια γραμματοσειρών Segoe και είναι ειδικά σχεδιασμένη για το Windows Phone.Μία από τις βασικές αρχές του Metro η τυπογραφία, εκτός από την ομορφιά που δίνει στις εφαρμογές, μπορεί να συμβάλλει σημαντικά και στην χρηστικότητά τους. Το σωστό μέγεθος της γραμματοσειράς και η σωστή τοποθέτηση των γραμμάτων με τις αποστάσεις μπορεί να δημιουργήσει οπτικά μια ιεραρχία στο κείμενο που βλέπουμε, και να βοηθήσει τον χρήστη να περιηγηθεί. Η κίνηση, άλλη μια βασική αρχή, είναι αυτή που κάνει πιο «ζωντανό» το user interface.το Metro είναι σχεδιασμένο για να ανταποκρίνεται στις κινήσεις του χεριού (gesture-oriented) αλλά μπορεί να δουλέψει και με το κλασσικό ποντίκι και πληκτρολόγιο animations/transitions παίζουν σημαντικό ρόλο, συνδυασμένα με τις κινήσεις του χεριού (gestures) όπως η πίεση ή το «swipe», προσφέρουν μια μορφή φυσικής κίνησης στο user interface. Αυτό έχει ως στόχο να δώσει στον χρήστη την αίσθηση ότι το user interface ανταποκρίνεται πλήρως στις κινήσεις του, και έχει ένα «βάθος».το περιεχόμενο και όχι το περίγραμμα είναι μια από τις σημαντικότερες αρχές στο Metro.Σε αντίθεση με τα user interfaces που περιέχουν πολύπλοκα γραφικά, το metro βασίζεται στο πραγματικό περιεχόμενο, την πληροφορία, η οποία είναι πλέον το βασικό user interface. Βλέπουμε μεγάλα hubs αντί για μικρά κουμπιά. Σε κάποιες εφαρμογές υπάρχει ένας μεγάλος καμβάς πάνω στον οποίο κινούμαστε.οι τίτλοι στις σελίδες είναι συνήθως μεγάλοι.αν αφαιρέσουμε όλα τα επιπλέον στοιχεία στο user interface (παράθυρα, πλαίσια, πολύπλοκα μενού κτλ) το περιεχόμενο συγκεντρώνει όλη την προσοχή του χρήστη. Αυτό είναι ιδιαίτερα χρήσιμο στα κινητά, λόγω του μικού μεγέθους της οθόνης. Θα πρέπει η εφαρμογή να είναι σχεδιασμένη αυθεντικά για την συσκευή, με βάση τις δυνατότητές της, την touch οθόνη, και τους τρόπους αλληλεπίδρασης με τον χρήστη που παρέχει. Δεν θα πρέπει να είναι μία απλή μεταφορά ενός desktop UI σε UI για κινητά. Να είναι προσαρμοσμένο το UI στην συσκευή, και όχι η συσκευή στο UI. 15

17 2.2.4 Επαφές + + Μηνύματα Με το Windows Phone είναι πιο εύκολο για το χρήστη να παραμείνει σε επαφή με τα άτομα που τον ενδιαφέρουν. Με λίγα μόνο πατήματα, μπορεί να ξεκινήσει συνομιλίες (τηλεφωνικές, μέσω SMS, μέσω IM και , ακόμα και μέσω Skype), να ελέγχει τις τροφοδοσίες από τα κοινωνικά του δίκτυα, και πολλά άλλα.δεν είναι ένα απλό βιβλίο διευθύνσεων. Η ενότητα "Επαφές" εμφανίζει επίσης τις τελευταίες δημοσιεύσεις, τα tweet και τις φωτογραφίες των φίλων κάθε χρήστη.ακόμη ο χρήστης μπορεί να επιλέξει να βλέπει πολλούς λογαριασμούς σε έναν συνδεδεμένο φάκελο εισερχομένων, μαζί με ξεχωριστές προβολές για μηνύματα με σημαία, επείγοντα μηνύματα και μη αναγνωσμένα μηνύματα.οι συζητήσεις μηνυμάτων αλλάζουν εύκολα μεταξύ SMS και συνομιλίας στην ίδια συζήτηση και ο χρήστης μπορεί να επισυνάψει φωτογραφίες, φωνητικές σημειώσεις, την τοποθεσία του και πολλά άλλα Φωτογραφίες + Κάμερα Εκτός από τις απλές λειτουργίες, όπως να απαθανατίσει ο χρήστης μια όμορφη στιγμή για εκείνον, τραβώντας μια απλή φωτογραφία, δίνεται η δυνατότητα να την κοινοποιεί στη συνέχεια μέσω SMS, , σε κοινωνικά δίκτυα, ή μέσω NFC, όλα αυτά χωρίς να απομακρυνθεί από την εφαρμογή της κάμερας.επιπλέον, μπορεί να δημιουργεί αυτόματα αντίγραφα ασφαλείας των φωτογραφιών του στο SkyDrive, ώστε να είναι αποθηκευμένες και ασφαλείς στο cloud.ακόμη οι εφαρμογές φωτογραφίας που υπάρχουν στο Store όπως, το PicMilling δίνουν νέα διάσταση στο χρήστη o οποίος μπορεί να εκφράσει τη δημιουργικότητα του μέσα από το σκόπευτρο της κάμερας.επίσης η ενότητα "Φωτογραφίες" φιλοξενεί τη συλλογή του χρήστη, συμπεριλαμβανομένων online άλμπουμ και εμφανίζει τις πιο πρόσφατες φωτογραφίες των φίλων του. 16

18 2.2.6 Μουσική + Βίντεο Η ενότητα "Μουσική και Βίντεο" δίνει τη δυνατότητα στο χρήστη να ακούσει μουσική, να παρακολουθήσει βίντεο, να εγγραφεί σε podcast και να απολαύσει λίστες αναπαραγωγής από το Smart DJ με βάση την αγαπημένη μουσική του.επίσης μπορεί να προσθέσει ένα Xbox Music Pass για απεριόριστη πρόσβαση σε εκατομμύρια κομμάτια που μπορεί να κατεβάσει στο τηλέφωνο του ή να αναπαράγει μέσω ροής από το cloud.ακόμη μπορεί να συγχρονίσει τη βιβλιοθήκη itunes με το τηλέφωνο του. 17

19 2.2.7 Ενότητα Office Ο χρήστης μπορεί εύκολα να δημιουργήσει ένα έγγραφο του Word ή ένα υπολογιστικό φύλλο του Excel στον υπολογιστή του και στη συνέχεια να το συγχρονίσει με το SkyDrive.Θα μπορεί να συνεχίσει τη σύνταξη ή την επεξεργασία του από το τηλέφωνό του χρησιμοποιώντας το Office Mobile, στο ταξί, τη παραλία, ή όπου αλλού βρίσκεται.με το SkyDrive είναι πλέον πανεύκολο να μοιράζεται κάποιος έγγραφα ή να κάνει επεξεργασία από κοινού με άλλους χρήστες.επίσης με το OneNote Mobile μπορεί να κρατάει γρήγορα σημειώσεις με μερικά πατήματα (ακόμα και με φωνητικές εντολές) Marketplace Στο Windows Phone Store μπορεί να βρει κάποιος περισσότερες από εφαρμογές (ο αριθμός τους συνεχώς αυξάνεται).καθεμιά είναι πιστοποιημένη από τη Microsoft, ώστε να προστατεύεται ο χρήστης από λογισμικό κακόβουλης λειτουργίας και ιούς.επιπλέον μπορεί να λαμβάνει εξατομικευμένες προτάσεις εφαρμογών, ανάλογα με τις προτιμήσεις του.η ενότητα "Παιχνίδια" επιτρέπει στο χρήστη να απολαμβάνει τα αγαπημένα του παιχνίδια όπου και αν βρίσκεται.εδώ μπορεί επίσης να επιλέξει ενδυμασία για το avatar του, να στείλει μηνύματα στους φίλους του στο Xbox και να δει τη κατάταξη της βαθμολογίας του και τα επιτεύγματα του. 18

20 2.2.9 Αναζήτηση Bing Είναι μια μηχανή αναζήτησης, (σε στέλνει το κουμπί: Αναζήτηση στα Windows Phone) όπου μπορεί να μάθει τις προτιμήσεις του χρήστη, για να του προτείνει τοποθεσίες για διασκέδαση, όπως εστιατόρια, μπαρ, καφέ, καταστήματα και αξιοθέατα καθώς και προσφορές στη περιοχή του σχετικά πάντα με πράγματα που προσελκύουν το ενδιαφέρον του.μπορεί επίσης να συνδέσει τη τοπική ανίχνευση στο Facebook, για να λαμβάνει αποτελέσματα ανάλογα με τις προτιμήσεις των φίλων του.επιπλέον μπορεί να δει κριτικές, τις ώρες λειτουργίας και άλλες χρήσιμες πληροφορίες.η αναζήτηση Bing περιλαμβάνει πλέον ταινίες, τους κυριότερους τίτλους ειδήσεων, τοπικές προσφορές και πολλά άλλα (μαζί με τα αποτελέσματα αναζήτησης που επιθυμεί).ακόμη η οπτική αναζήτηση Bing σαρώνει κωδικούς QR και κείμενο για αναζήτηση στο Web ή ακόμα το μεταφράζει με ένα πάτημα (ιδιαίτερα χρήσιμη λειτουργία όταν ταξιδεύει κάποιος). 19

21 2.3 Hardware Προκειμένου να υπάρξει μια πιο συνεπή εμπειρία μεταξύ των συσκευών, τα Windows Phone 7 απαιτούν την κάλυψη ενός ορισμένου συνόλου των απαιτήσεων υλικού, το οποίο ο Andy Lees, ανώτερος αντιπρόεδρος της Microsoft στο τομέα των κινητών επικοινωνιών, περιγράφει ως "σκληρό, αλλά δίκαιο».όλες οι συσκευές των Windows Phone, πρέπει να περιλαμβάνουν τουλάχιστον τα ακόλουθα: Minimum Windows Phone device requirements Capacitive, 4-point multi-touch screen with WVGA (480x800) resolution ARM v7 "Cortex/Scorpion" Snapdragon QSD8X50, MSM7X30, and MSM8X55 DirectX9 rendering-capable GPU 256MB of RAM with at least 8GB of Flash memory Accelerometer with compass, ambient light sensor, proximity sensor, Assisted GPS, and Gyroscope 5-megapixel camera with an LED flash and an optional front facing camera FM radio tuner Six (6) dedicated hardware buttons back, Start, search, 2-stage camera, power/sleep and volume buttons Με βάση τα παραπάνω, δεν μπορεί να υπάρξει κινητό τηλέφωνο που να μην πληρεί (τουλάχιστον) τα παραπάνω και να τρέχει Windows Phone 7. Δύο είναι οι κύριοι λόγοι που καθιέρωσαν τις παραπάνω ελάχιστες απαιτήσεις: 1. Απόκριση λειτουργικού συστήματος Η Microsoft εγγυάται ότι όποια συσκευή έχει τις παραπάνω απαιτήσεις συστήματος, θα είναι σε θέση να τρέχει σωστά και αψεγάδιαστα τα Windows Phone 7. Η απόκριση του λειτουργικού συστήματος, των εφαρμογών και του τηλεφώνου θα είναι ομαλή, και δε θα επηρεάζεται η εμπειρία του χρήστη (user experience) 2. Διευκόλυνση κοινότητας προγραμματιστών Ένα απ τα δυσκολότερα προβλήματα που καλούνται να αντιμετωπίσουν οι προγραμματιστές, είναι η μεγάλη ποικιλομορφία στις συσκευές κινητών τηλεφώνων. Για παράδειγμα, άλλες συσκευές μπορεί να έχουν μεγαλύτερη οθόνη και άλλες μικρότερη, άλλες συσκευές μπορεί να έχουν επιταχυνσιόμετρο ενώ άλλες όχι, άλλες συσκευές μπορεί να έχουν καλύτερο επεξεργαστή ενώ άλλες μπορεί να έχουν λιγότερο ισχυρό, και πάει λέγοντας. Για να μη δημιουργείται χάος με τις πολλές διαφορετικές προδιαγραφές της κάθε συσκευής, θεσπίστηκαν οι ελάχιστες αυτές προδιαγραφές, για να υπάρχει μια ομοιομορφία. 20

22 2.3.1 Κουμπιά Συσκευής 1) Προηγούμενο: Το πρώτο πράγμα που κάνει το κουμπί Προηγούμενο, όπως ίσως περιμένει ο χρήστης, είναι να τον μεταφέρει μία οθόνη πίσω από το σημείο που βρίσκεται.το τηλέφωνό του "θυμάται" όλες τις εφαρμογές και τοποθεσίες web που επισκέφτηκε από την τελευταία φορά που κλειδώθηκε η οθόνη και τον μεταφέρει μία σελίδα πίσω κάθε φορά που πατάει το κουμπί Προηγούμενο, μέχρι να φτάσει στην οθόνη Έναρξη.Μπορεί επίσης να πατήσει παρατεταμένα το κουμπί Προηγούμενο για να ανοίξει την εναλλαγή εφαρμογών, η οποία εμφανίζει τις εφαρμογές που έχει ανοιχτές αυτήν τη στιγμή στο τηλέφωνό του. 2) Έναρξη: Κάθε φορά που πατάει ο χρήστης το κουμπί Έναρξη, επιστρέφει στην οθόνη έναρξης, ανεξάρτητα από το σημείο που βρίσκεται ή με το τι κάνει με το τηλέφωνο (αρκεί να μην είναι κλειδωμένο).ωστόσο, εάν πατήσει παρατεταμένα το κουμπί Έναρξη, θα ενεργοποιήσει τις φωνητικές εντολές. 3) Αναζήτηση: Μπορεί να χρησιμοποιήσει το κουμπί Αναζήτηση για να βρει αυτό που θέλει, σε οποιοδήποτε σημείο του τηλεφώνου: ο χρήστης το πατάει για να μεταβεί απευθείας στο Bing. Από εκεί, μπορεί να χρησιμοποιήσει την "Τοπική ανίχνευση", την "Αναζήτηση με οπτική απεικόνιση " ή την "Αναζήτηση ήχου" ή πληκτρολογεί αυτό που τον ενδιαφέρει και αφήνει το Bing να κάνει τα υπόλοιπα. 4) Lock: Το συγκεκριμένο κλειδί σημαίνει <<κλείδωμα>> και ο ρόλος του είναι αυτός που αναμένει ο χρήστης αφού κλειδώνει το τηλέφωνο και σβήνει την οθόνη για να εξοικονομήσει μπαταρία.τερματίζεται οποιαδήποτε εφαρμογή άμεσα και όταν αποπειραθεί να το πατήσει και πάλι ο χρήστης, θα μεταφερθεί αυτόματα στη προφύλαξη οθόνης.όταν το πατήσει παρατεταμένα τότε το τηλέφωνο θα απενεργοποιηθεί. 21

23 5) Camera: Όταν ο χρήστης πατήσει το συγκεκριμένο κουμπί, σταματάει οποιαδήποτε λειτουργία και αν πραγματοποιείται εκείνη τη στιγμή και ξεκινάει η λειτουργία της κάμερας, δίνοντας έτσι, πολύ έξυπνα τη δυνατότητα στο χρήστη να μη χάνει χρόνο για να τραβήξει κάτι που βλέπει και του αρέσει μέσω της φωτογραφικής μηχανής του κινητού του. 6) Volume: Ο χρήστης με τα κουμπιά της έντασης μπορεί να ρυθμίσει την ένταση μιας συνομιλίας που κάνει ή την ένταση της αναπαραγωγής των πολυμέσων Μνήμη & Αποθήκευση Υπάρχουν δύο μέρη στα οποία χωρίζεται η μνήμη του κινητού. Το πρώτο ασχολείται με το "τρέξιμο" των προγραμμάτων και το δεύτερο με την αποθήκευση δεδομένων και προγραμμάτων στη συσκευή.ένα ακόμη από τα πολλά θετικά στοιχεία του Windows Phone OS είναι ότι έχει κατασκευαστεί για να "τρέχει" με τη μικρότερη δυνατή κατανάλωση της RAM, γεγονός που εξασφαλίζει οικονομία στη μπαταρία του τηλεφώνου Ενημέρωση Λογισμικού Κατά περιόδους, κυκλοφορούν ενημερώσεις του λογισμικού του Windows Phone, προκειμένου να μεγιστοποιηθούν οι επιδόσεις του τηλεφώνου στοχεύοντας πάντα στη μέγιστη αξιοποίηση του υλικού του και να προστεθούν νέες λειτουργίες που έχει ζητήσει ο χρήστης. Όταν μια ενημέρωση λογισμικού είναι διαθέσιμη για λήψη, θα ειδοποιείται στο τηλέφωνό του.ο χρήστης πρέπει φυσικά να γνωρίζει την έκδοση λογισμικού που διαθέτει καθώς και τι περιλαμβάνει η νέα έκδοση που έχει σκοπό να εγκαταστήσει στο κινητό του Accelerometer Το επιταχυνσιόμετρο (accelerometer) είναι ένας αισθητήρας που βρίσκεται τοποθετημένος στις συσκευές Windows Phone 7.Μετράει τις δυνάμεις που δέχεται η συσκευή του χρήστη σε κάθε δεδομένη χρονική στιγμή.η μέτρηση των δυνάμεων που δέχεται η συσκευή μπορεί να χρησιμοποιηθεί για να αναγνωρίσει ο χρήστης προς ποια κατεύθυνση μετακινεί τη συσκευή. Συνεπώς, μπορεί να φανεί χρήσιμο σε αυτόν σε πολλές περιπτώσεις όπως για παράδειγμα σε παιχνίδια, όπου με την κίνηση της συσκευής μπορεί να ελέγχει τους χαρακτήρες που χειρίζεται.η τιμή της επιτάχυνσης εκφράζεται σαν ένα διάνυσμα 3 διαστάσεων το οποίο αναπαριστά τις τιμές των επιταχύνσεων στους άξονες X, Y και Z GPS Με τη βοήθεια του Παγκόσμιου Συστήματος Εντοπισμού Θέσης (GPS) το Windows Phone έχει επίγνωση εύκολα και γρήγορα της θέσης του στο χώρο.tο GPS λαμβάνει δορυφορικό σήμα για το καθορισμό του τόπου της συσκευής.παρ' όλα αυτά το τηλέφωνο έχει τη καλύτερη δυνατή απόδοση όταν ο χρήστης βρίσκεται σε ανοιχτό χώρο.επίσης μπορεί να εντοπίσει το κοντινότερο Wi-Fi καθώς και τη κοντινότερη κεραία κινητής τηλεφωνίας.ακόμη μπορεί να χρησιμοποιήσει τις πληροφορίες που του δίνει το GPS όσον αφορά τη τοποθεσία σε διάφορες εφαρμογές όπως στους χάρτες Bing της Microsoft. 22

24 2.3.6 Αναφορές και Βιβλιογραφία 2 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ windows-live-id-will-be-required/ 9. ΒΙΒΛΙΟΓΡΑΦΙΑ 1. Charles Petzold, 2010, Programming Windows Phone 7, [2] 23

25 Κεφάλαιο 3 - Η γλώσσα προγραμματισμού C# 3.1 Η ιστορία της C# Στα τέλη της δεκαετίας του '70 το μέγεθος των έργων που υλοποιούσαν οι προγραμματιστές με τη C έφτασε στα όρια του. Έτσι εμφανίστηκε ένας νέος τρόπος προγραμματισμού, ο αντικειμενοστραφής προγραμματισμός (Object Oriented Programming - OOP) και μια νέα γλώσσα, η αντικειμενοστραφής γλώσσα C++.Στη συνέχεια, λόγω της μεγάλης διάδοσης του internet οι προγραμματιστές επιθυμούσαν να μεταφέρουν τον κώδικα τους σε διαφορετικά περιβάλλοντα. Αυτό δε μπορούσε να γίνει με τη C++, οπότε δημιουργήθηκε η αντικειμενοστραφής γλώσσα προγραμματισμού Java, η οποία έλυνε δύο βασικά προβλήματα : 1. μεταφερσιμότητα: μετάφραση του πηγαίου κώδικα στην ενδιάμεση γλώσσα bytecode και στη συνέχεια εκτέλεση αυτού του κώδικα στην εικονική μηχανή της Java (Java Virtual Machine - JVM). 2. ο κώδικας μπορούσε να εκτελεστεί σε οποιοδήποτε περιβάλλον διέθετε εικονική μηχανή Java. 3. ασφάλεια: επειδή ο JVM τρέχει το κώδικα bytecode, έχει τον πλήρη έλεγχο του προγράμματος έτσι ώστε να μπορεί να αποτρέψει οποιαδήποτε κακόβουλη ενέργεια ενός Java προγράμματος. Αν και η Java έλυσε 2 βασικά προβλήματα της λείπουν 2 βασικά χαρακτηριστικά, τα οποία συναντάμε στη C# και είναι τα εξής: 1. διαγλωσσική διαλειτουργικότητα: για τη δημιουργία μεγάλων κατανεμημένων συστημάτων λογισμικού χρειάζεται ο κώδικας που παράγεται από μια γλώσσα να συνεργάζεται με κώδικα που παράγει μια δεύτερη γλώσσα. 2. πλήρης ενσωμάτωση με τα Windows: η Java, αν και μπορεί να εκτελεστεί κάτω από τα Windows, δεν συνδέεται στενά με αυτά, σε αντίθεση με τη C#. 3.2 Η δημιουργία της C# Χαρακτηριστικά της C που κληρονόμησε η C# 1. σύνταξη 2. λέξεις κλειδιά 3. τελεστές Σχέση Java και C# 1. μεταφερτός κώδικας 2. εκτέλεση προγραμμάτων σε ασφαλές περιβάλλον Σχέση της C# με το.net Framework 1. Το.NET Framework είναι το περιβάλλον χρόνου εκτέλεσης της C#. 2. Οι βιβλιοθήκες της γλώσσας ορίζονται από το.net Framework. 24

26 Τι είναι το.net Framework Είναι ένα περιβάλλον που υποστηρίζει την ανάπτυξη και την εκτέλεση άκρως κατανεμημένων εφαρμογών που βασίζονται σε συστατικά. Επιτρέπει στις γλώσσες προγραμματισμού να συνεργάζονται και παρέχει χαρακτηριστικά ασφαλείας, μεταφερτότητας και ένα κοινό μοντέλο προγραμματισμού για τα Windows.Παρέχει τα εξής: 1. Σύστημα Common Language Runtime: διαχειρίζεται την εκτέλεση ενός προγράμματος σε C#. 2. Βιβλιοθήκη Κλάσεων: παρέχει στα προγράμματα δυνατότητες πρόσβασης στο περιβάλλον χρόνου εκτέλεσης. 3.3 Αντικειμενοστραφής Προγραμματισμός Τα αντικειμενοστραφή προγράμματα οργανώνονται γύρω από τα δεδομένα, δηλαδή όταν προγραμματίζουμε στην ουσία ορίζουμε τα δεδομένα και τις ρουτίνες που επιτρέπεται να δρουν επί αυτών των δεδομένων. Έτσι ένας τύπος δεδομένων ορίζει τι ακριβώς τύπου λειτουργίες μπορούν να εφαρμοστούν επί αυτών των δεδομένων. Χαρακτηριστικά 1. ενθυλάκωση 2. πολυμορφισμός 3. κληρονομικότητα 3.4 Ενθυλάκωση Είναι ένας μηχανισμός προγραμματισμού που συνδέει το κώδικα με τα δεδομένα που χειρίζεται και τα κρατά και τα δύο ασφαλή από εξωτερικές παρεμβολές και κακομεταχείριση. Ο κώδικας και τα δεδομένα συνδέονται κατά τέτοιο τρόπο ώστε να δημιουργείται ένα "μαύρο κουτί". Μέσα σε αυτό βρίσκονται όλα τα απαραίτητα δεδομένα και ο απαραίτητος κώδικας. Έτσι δημιουργείται ένα αντικείμενο. Μέσα σε αυτό ο κώδικας και τα δεδομένα μπορεί να είναι ιδιωτικά (private) - που σημαίνει ότι μπορούν να προσπελαστούν μόνο από άλλα μέρη του αντικειμένου ή δημόσια (public) - που σημαίνει ότι μπορούν να προσπελαστούν και από τμήμα του προγράμματος που βρίσκεται έξω από το αντικείμενο. Η βασική μονάδα ενθυλάκωσης είναι η κλάση. Μια κλάση ορίζει τι μορφή θα έχει το αντικείμενο της, δηλαδή καθορίζει τα δεδομένα και το κώδικα που δρα επί αυτών των δεδομένων. Τόσο τα δεδομένα όσο και ο κώδικας ονομάζονται μέλη της κλάσης. Κατά αντιστοιχία, τα δεδομένα ονομάζονται μεταβλητές μέλους ενώ, ο κώδικας μέθοδοι μέλους. 25

27 3.5 Πολυμορφισμός Είναι το χαρακτηριστικό που επιτρέπει το ίδιο όνομα μεθόδου να προκαλεί την εκτέλεση διαφορετικού κώδικα ανάλογα με τον τύπο του αντικειμένου στο οποίο καλείται. Πλεονέκτημα : Μείωση πολυπλοκότητας κώδικα 3.6 Κληρονομικότητα Είναι η διαδικασία κατά την οποία ένα αντικείμενο μπορεί να πάρει τις ιδιότητες ενός άλλου αντικειμένου. Πλεονεκτήματα : 1. ιεραρχική δομή κλάσεων 2. κάθε αντικείμενο πρέπει να ορίζει μόνο εκείνες τις ιδιότητες που το κάνουν μοναδικό μέσα στη κλάση του και όχι αυτές που κληρονομεί 3.7 Γενικά περί Κλάσεων Κλάση είναι ένα πρότυπο που ορίζει τη μορφή ενός αντικειμένου. Καθορίζει τα δεδομένα και το κώδικα που δρα πάνω σε αυτά τα δεδομένα. Τα αντικείμενα είναι στιγμιότυπα της κλάσης στην οποία ανήκουν. Ότι ανήκει μέσα σε μία κλάση αποτελεί μέλος της κλάσης. Οι περισσότερες κλάσεις περιέχουν κώδικα και δεδομένα. Γενικότερα μια κλάση μπορεί να έχει ως μέλη τα εξής: μεταβλητές στιγμιότυπου, στατικές μεταβλητές, σταθερές, μεθόδους, κατασκευαστές, καταστροφείς, δεικτοδότες, συμβάντα, τελεστές και ιδιότητες. Ένας απαραίτητος μηχανισμός για όλες τις κλάσεις είναι ο καθοριστής προσπέλασης μέλους, ο οποίος καθορίζει ποιος μπορεί να χρησιμοποιήσει τη μεταβλητή ή τη μέθοδο μιας κλάσης. Υπάρχουν 4 καθοριστές προσπέλασης: 1. public (δημόσια): το μέλος μπορεί να προσπελαύνεται από κάθε κώδικα που βρίσκεται μέσα σε ένα πρόγραμμα, φυσικά και εκτός της κλάσης. 2. private (ιδιωτική): το μέλος μπορεί να προσπελαστεί μόνο από άλλα μέλη της κλάσης στην οποία βρίσκεται. 3. protected (προστατευμένη) 4. internal (εσωτερική) Ο καθοριστής προσπέλασης είναι προαιρετικός. Αν λείπει τότε το μέλος είναι private. 26

28 Επίσης, οι μέθοδοι είναι ένα σημαντικό ατού της αντικειμενοστρέφειας. Οι μέθοδοι κλάσης είναι υπορουτίνες που χειρίζονται τα δεδομένα της και σε πολλές περιπτώσεις παρέχουν πρόσβαση σε αυτά. Ουσιαστικά, άλλα μέρη του προγράμματος θα αλληλεπιδρούν με μία κλάση μέσω των μεθόδων της. Τέλος, μια μέθοδος υλοποιεί μια συγκεκριμένη λειτουργία, μπορεί να χρειάζεται ορίσματα για να δουλέψει και μετά το πέρας λειτουργίας της, να επιστρέφει κάτι σε αυτόν που τη κάλεσε. Ακόμη, ο κατασκευαστής είναι μία μέθοδος, η οποία αρχικοποιεί ένα αντικείμενο της κλάσης όταν αυτό δημιουργείται, δηλαδή δίνει αρχικές τιμές στα δεδομένα του. Έχει το ίδιο όνομα με τη κλάση αλλά δεν έχουν ρητό επιστρεφόμενο τύπο. Συνήθως η προσπέλαση είναι public για να μπορεί να κληθεί εκτός της κλάσης και μπορεί να περιέχει ή όχι ορίσματα. Όλες οι κλάσεις έχουν κατασκευαστές χωρίς ορίσματα, ακόμα και αν δε δηλώσουμε ρητά εμείς κάποιον (σε αυτή τη περίπτωση το κάνει ο μεταγλωττιστής και αρχικοποιεί όλες τις μεταβλητές-μέλη με τις προεπιλεγμένες τιμές τους).επιπλέον, μια καθοριστική μέθοδος μπορεί να θεωρηθεί και ο καταστροφέας. Είναι μια μέθοδος-μέλος, η οποία απελευθερώνει τη μνήμη που δεσμεύθηκε για τη δημιουργία ενός αντικειμένου (από το τελεστή new).στην ουσία καταστρέφει το αντικείμενο. Ο καταστροφέας καλείται πριν από τη λεγόμενη συλλογή απορριμμάτων, κάτι που γίνεται στο παρασκήνιο (χωρίς τη συμμετοχή του προγραμματιστή), έτσι ώστε να απελευθερωθεί η μνήμη. ΠΑΡΑΔΕΙΓΜΑ 1 ο : using System; class Oxhma public string marka; public int epivates; public int kausimo; public double katanalwsh; public Oxhma(string m, int e, int k, double kt) marka = m; epivates = e; kausimo = k; katanalwsh = kt; public double Apostash() return kausimo * 100 / katanalwsh; public double YpologismosKausimou(double xiliometra) return xiliometra * katanalwsh / 100; class Program static void Main() 27

29 string ma; int ep; int ka; double kat; Console.WriteLine("Dwse ta stoixeia gia to minivan:"); Console.Write("Marka:"); ma = Console.ReadLine(); Console.Write("Arithmos epivatwn:"); ep = Int32.Parse(Console.ReadLine()); Console.Write("Xwrhtikothta kausimou:"); ka = Int32.Parse(Console.ReadLine()); Console.Write("Katanalwsh kausimou (lt/km)"); kat = Double.Parse(Console.ReadLine()); Oxhma minivan = new Oxhma(ma, ep, ka, kat); Console.WriteLine("Dwse ta stoixeia gia to sport autokinhto:"); Console.Write("Marka:"); ma = Console.ReadLine(); Console.Write("Arithmos epivatwn:"); ep = Int32.Parse(Console.ReadLine()); Console.Write("Xwrhtikothta kausimou:"); ka = Int32.Parse(Console.ReadLine()); Console.Write("Katanalwsh kausimou (lt/km)"); kat = Double.Parse(Console.ReadLine()); Oxhma sportscar = new Oxhma(ma, ep, ka, kat); double apostash1,apostash2; apostash1 = minivan.apostash(); apostash2 = sportscar.apostash(); int xiliometrataxidiou = 250; Console.WriteLine("To minivan einai markas 0 kai gia na dianysei 1 Km tha xreiastei 2:.0 Lt venzinis",minivan.marka,xiliometrataxidiou,minivan.ypologismoskausimou(xiliometrat axidiou)); Console.WriteLine("To sportscar einai markas 0 kai gia na dianysei 1 Km tha xreiastei 2:.0 Lt venzinis", sportscar.marka, xiliometrataxidiou, sportscar.ypologismoskausimou(xiliometrataxidiou)); Console.ReadKey(); Συνοπτική ανάλυση - επεξήγηση του παραπάνω κώδικα: Όπως διακρίναμε από το κώδικα, υπάρχει μια κλάση, η κλάση Oxhma όπου, περιέχονται σε αυτήν κάποιες μεταβλητές και συγκεκριμένα οι: marka, epivates, kausimo, katanalwsh.επίσης βλέπουμε τον κατασκευαστής της κλάσης Oxhma στον οποίο έχουν αρχικοποιηθεί οι μεταβλητές της κλάσης. Στη συνέχεια συναντάμε 2 μεθόδους οι οποίες χρησιμοποιούνε κάποιες από τις μεταβλητές της κλάσης. Η πρώτη είναι η μέθοδος Apostash() η οποία δεν χρησιμοποιεί κάποια παράμετρο και η δεύτερη είναι η μέθοδος YpologismosKausimou η οποία χρησιμοποιεί τη παράμετρο xiliometra.στο κυρίως 28

30 πρόγραμμα τώρα, δημιουργούμαι 2 αντικείμενα της κλάσης Oxhma τα οποία είναι το minivan και το sportscar.έτσι δίνουμε τη δυνατότητα στο χρήστη να μας δώσει πληροφορίες για αυτά τα 2 οχήματα, μέσω των μεταβλητών(ma, ep, ka, kat) που δηλώσαμε στη Main() και οι οποίες σχετίζονται με αυτά. Τέλος, μέσω των μεθόδων Apostash() και YpologismosKausimou() δίνεται στο χρήστη η δυνατότητα να υπολογίσει την απόσταση του minivan και του sportscar όπως, και τα καύσιμα των 2 οχημάτων με βάση τα χιλιόμετρα που έχουν διανύσει. ΠΑΡΑΔΕΙΓΜΑ 2 ο : using System; class Cycle //δεδομένα-μεταβλήτές double aktina; //κατασκευαστής public Cycle(double aktina) this.aktina = aktina; //μέθοδοι public void SetAktina(double aktina) this.aktina = aktina; public double GetAktina() return aktina; public double YpologismosEmvadou() return Math.PI * Math.Pow(aktina, 2.0); public double YpologismosPerimetrou() return 2 * Math.PI * aktina; class Program static void Main() Cycle kiklos = new Cycle(0.0); do Console.WriteLine("Dwse thn aktina tou kuklou:"); kiklos.setaktina(double.parse(console.readline())); while(kiklos.getaktina()<=0.0); 29

31 Console.WriteLine("O kiklos me aktina 0:.0 exei emvadon 1:.0 kai perimetro 2:.0", kiklos.getaktina(),kiklos.ypologismosemvadou(),kiklos.ypologismosperimetrou()); Console.ReadKey(); Συνοπτική ανάλυση - επεξήγηση του παραπάνω κώδικα: Χρησιμοποιούμε τη κλάση Cycle και υπολογίζουμε το εμβαδό και τη περίμετρο του κύκλου.όλα αυτά γίνονται με τις μεθόδους SetAktina(), GetAktina(), YpologismosEmvadou(), YpologismosPerimetrou() οι οποίες χρησιμοποιούνε κατάλληλα τη μεταβλητή aktina. Ο χρήστης δίνει την ακτίνα του κύκλου και μέσω μιας do while του επιστρέφεται το εμβαδόν και η περίμετρος με τη συγκεκριμένη ακτίνα που έδωσε, η οποία όμως για να ισχύει σύμφωνα με τη δομή της επανάληψης πρέπει να συμφωνεί με το περιορισμό και να είναι >= 0. ΠΑΡΑΔΕΙΓΜΑ 3 ο : Αυτή τη φορά θα δούμε τη σύνταξη και τη δομή ενός απλού προγράμματος (Console Application) στη C# που εμφανίζει το μήνυμα Hello World και θα αναλύσουμε γραμμή γραμμή τα μέρη του: 1. using System; 2. namespace MyNamespace class Helloworld static void Main() Console.WriteLine("Hello World"); 10. Console.ReadKey(); Χώροι ονομάτων (Namespaces): Σε ένα C# πρόγραμμα χρησιμοποιούμαι Namespaces για την οργάνωση του κώδικα μας. Στο παραπάνω πρόγραμμα χρησιμοποιήσαμε τον χώρο ονομάτων System (γραμμή 1 του παραδείγματος) μέσω της λέξης κλειδιού using,το οποίο περιλαμβάνει έτοιμες κλάσεις και μεθόδους του.νετ με έτοιμο επαναχρησιμοποιήσιμο κώδικα! 30

32 Ένα Namespace μπορεί να περιέχει τους εξής τύπους : Namespaces Classes Delegates Enums Structs Interfaces Για τη δημιουργία ενός δικού μας Namespace χρησιμοποιούμε τη δεσμευμένη λέξη-κλειδί namespace (γραμμή 2), έτσι η κλάση Helloworld (γραμμή 5) εμπεριέχεται στο MyNamespace που δημιουργήσαμε. Στη συνέχεια του κώδικα μπορούμε να δούμε πως μπορούμε να εμφανίσουμε στη γραμμή εντολών το μήνυμα "Hello World". Η μέθοδος Main() (γραμμή 7) περιέχει την εντολή Console.WriteLine("Hello World");,η οποία εμφανίζει το τελικό μήνυμα. Παρατηρήσεις: 1. Η κλάση Console ανήκει στο χώρο ονομάτων System και η WriteLine() είναι μέθοδος της Console. Εάν δεν χρησιμοποιούσαμε την εντολή using System; Η εντολή θα συντασσόταν System.Console.WriteLine ("Hello World"); 2. Χρησιμοποιούμε την τελεία ανάμεσα από Namespaces, κλάσεις και μεθόδους για να δείξουμε τι εμπεριέχεται σε τι. Πχ. namespace N1 // N1 class C1 // N1.C1 Method() C2 // N1.C1.C2() namespace N2 // N1.N2 class C2 // N1.N2.C2 3. Την εντολή Console.ReadKey(); την χρησιμοποιούμε απλά για να κρατήσουμε το παράθυρο της γραμμής εντολών ανοικτό και να δούμε το μήνυμα που εμφανίζουμε, το πρόγραμμα απλά περιμένει ο χρήστης να πατήσει κάποιο κουμπί και στη συνέχεια τερματίζει. 31

33 Ψευδώνυμα (Aliases): Μπορούμε να χρησιμοποιούμε ψευδώνυμα (Aliases) για να κάνουμε τον κώδικα μας ακόμα πιο σύντομο και να αποφύγουμε να γράφουμε μακροσκελείς εντολές. Πχ. using Alias = System.Console ; namespace MyNamespace public class Helloworld static void Main() Alias.WriteLine("Hello World"); Console.ReadKey(); Σχόλια: Μπορούμε να χρησιμοποιούμε σχόλια στον κώδικά μας κυρίως για να εξηγούμε κάποια σημεία του, όπως τη λειτουργία μιας κλάσης/μεθόδου που δημιουργήσαμε,έτσι ώστε να γίνεται ο κώδικας εύκολος στην ανάγνωση τόσο για μας,αν θελήσουμε κάποια στιγμή να τον ανατρέξουμε να δούμε τη λειτουργία του, αλλά και για κάποιο τρίτο πρόσωπο που θα χρειαστεί να τον δει. Τα σχόλια συντάσσονται χρησιμοποιώντας αυτόν τον συμβολισμό ( // ),εάν επρόκειτο για μία γραμμή σχολίου: //Αυτό είναι ένα σχόλιο ή αν το σχόλιο απαιτεί παραπάνω γραμμή με αυτόν τον τρόπο: /* Αυτό είναι ένα σχόλιο */ Με τον τρόπο αυτό ο compiler προσπερνάει οτιδήποτε βρίσκεται μετά τα εισαγωγικά και δεν επηρεάζει το τελικό αποτέλεσμα του προγράμματος. Παραδείγματα σχολίων: Console.WriteLine("Hello World"); //Output a greeting Console.WriteLine("Hello World"); /*Output a greeting*/ Π Ρ Ο Σ Ο Χ Η Εάν χρησιμοποιούσαμε τα διπλά εισαγωγικά μπροστά από την Console.WriteLine κάπως έτσι: // Console.WriteLine("Hellow Word"); Output a greeting,τότε ο compiler θα 32

34 προσπερνούσε αυτήν την εντολή σαν σχόλιο και το αποτέλεσμα της δεν θα εμφανιζόταν ποτέ στην οθόνη. Δήλωση μεταβλητών, Ανάθεση-Σύγκριση τιμών & Εμφάνιση αποτελεσμάτων στην οθόνη: Σε ένα C# πρόγραμμα μπορούμε να δηλώσουμε μεταβλητές σε οποιοδήποτε σημείο του προγράμματος, πριν τις χρησιμοποιήσουμε για κάποια πράξη. 1. Για να δηλώσουμε μία μεταβλητή ορίζουμε πρώτα τον τύπο της και ύστερα το όνομα της. πχ. int x; string y1; long z_2; 2. Για να κάνουμε ανάθεση τιμής σε μεταβλητές χρησιμοποιούμε το ίσον ( = ) πχ. x = 5; Ή η ίδια εντολή ως int x = 5; άν την δηλώναμε ταυτόχρονα μαζί με την ανάθεση της τιμής. char y = 'h'; Κτλ. 3. Για σύγκριση μεταβλητών ισχύουν : >= μεγαλύτερο ή ίσο <= μικρότερο ή ίσο == ίσο!= διάφορο 4. Για να εμφανίσουμε το περιεχόμενο μεταβλητών στην οθόνη η C# χρησιμοποιεί τη μέθοδο WriteLine() με δύο τρόπους σύνταξης. 1ος τρόπος ως συνεχόμενο string 2ος τρόπος με int μεταβλητές : πχ. int x = 1; int y = 2; int sum = x + y; //1ος τρόπος Console.WriteLine(x + "+" + y + "=" + sum); // outuput 1+2=3 //2ος τρόπος Console.WriteLine("0+1=2",x,y,sum); //output 1+2=3 33

35 5. Σταθερές (Constants), Η δήλωση των σταθερών στο C# πρόγραμμα όπως πχ. Η τιμή του π=3.14. γίνεται με αυτόν τον τρόπο : const double p = 3.14; Γενικές Παρατηρήσεις: 1. Η C# είναι Case sensitive, Για να δηλώσουμε την Main() χρησιμοποιήσαμε κεφαλαίο M! Θα ήταν λάθος να λέγαμε static void main(). ο compiler εξ ορισμού καταλαβαίνει ότι το βασικό πρόγραμμα βρίσκεται στην μέθοδο Main() και όχι στην main(). Εννοείται πως int y int Y! 2. Keywords, Στη C# υπάρχουν δεσμευμένες λέξεις-κλειδιά. Δεν μπορούμε να δηλώσουμε πχ μια μεταβλητή με όνομα Console/int/void/class, όπως επίσης δεν μπορούμε να βάζουμε αριθμό μπροστά από μεταβλητή! 3. Έλεγχος σφαλμάτων. Τι είναι το συντακτικό λάθος; Είναι λάθος που αφορά τη συντακτική δομή της γλώσσας. Τι είναι το λογικό λάθος; Είναι λάθος το οποίο παρουσιάζεται όταν ένα πρόγραμμα τρέχει αλλά δε δίνει τα αναμενόμενα αποτελέσματα. 34

36 3.8 Αναφορές και Βιβλιογραφία 3 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ 1. ΒΙΒΛΙΟΓΡΑΦΙΑ 1. Προγραμματισμός σε CSharp - Ν.Θ.Λιόλιος - Β.Γ.Νεβράντζας 35

37 Κεφάλαιο 4 - Το.NET framework 4.1 Σχετικά με το.νετ framework Το.ΝΕΤ Framework είναι ένα πλαίσιο λογισμικού (software framework) 1 που προορίζεται για την πλατφόρμα των Windows. Αποτελείται από μια μεγάλη βιβλιοθήκη κλάσεων και υποστηρίζει μια πλειάδα γλωσσών προγραμματισμού με τη δυνατότητα η μια να μπορεί να χρησιμοποιηθεί από την άλλη. Τα προγράμματα που γράφονται για το.νετ Framework εκτελούνται σε ένα περιβάλλον εκτέλεσης γνωστό ως Common Language Runtime (CLR), ενός ειδικού λογισμικού, σχεδιασμένου να υποστηρίζει την εκτέλεση προγραμμάτων και την απρόσκοπτη συνεργασία με το λειτουργικό σύστημα. Το CLR περιέχει μια εικονική μηχανή (virtual machine) που διαχειρίζεται την εκτέλεση ενός προγράμματος και παρέχει μια σειρά σημαντικών υπηρεσιών όπως ασφάλεια, διαχείριση μνήμης και διαχείριση εξαιρέσεων. Τα προγράμματα που γράφονται για το.νετ χρησιμοποιούν τη βιβλιοθήκη κλάσεων (class library) του.νετ, η οποία δίνει πρόσβαση στο περιβάλλον εκτέλεσής του (runtime environment).βασικές λειτουργίες όπως οι γραφικές διεπαφές χρηστών (Graphical User Interfaces GUIs), η επικοινωνία με βάσεις δεδομένων, η κρυπτογραφία, η ανάπτυξη web εφαρμογών και οι δικτυακές επικοινωνίες παρέχονται μέσω του Application Programming Interface(API) του.net και μπορούν να συνδυαστούν με κώδικα από τους προγραμματιστές για τη δημιουργία ολοκληρωμένων εφαρμογών. Όσο ένα πρόγραμμα περιορίζεται στη χρήση της βιβλιοθήκης κλάσεων του.net, μπορεί να τρέχει οπουδήποτε υπάρχει εγκατεστημένο το περιβάλλον εκτέλεσης του.net.η γλώσσα C# είναι μια από τις γλώσσες που υποστηρίζει το.net. Ο μεταγλωττιστής της C# στοχεύει ειδικά στο.net κάτι που σημαίνει ότι τα προγράμματα γραμμένα σε C# θα τρέχουν πάντα στο.νετ Framework. Αυτό έχει δυο σημαντικές συνέπειες για τη γλώσσα: Η αρχιτεκτονική της και οι μεθοδολογίες της αντικατοπτρίζουν τη δομή του.net. Σε πολλές περιπτώσεις, ειδικά χαρακτηριστικά της γλώσσας εξαρτώνται στην πραγματικότητα από τα χαρακτηριστικά του.net ή τις βασικές κλάσεις του.net. Εξαιτίας αυτής της εξάρτησης, είναι σημαντικό κανείς να κατανοήσει την αρχιτεκτονική και τη μεθοδολογία του.νετ πριν προχωρήσει στον προγραμματισμό με τη C#. 1 Ένα software framework είναι ένα επαναχρησιμοποιήσιμο σύστημα λογισμικού, αποτελούμενο συνήθως από βιβλιοθήκες και υποπρογράμματα για την υποστήριξη της εκτέλεσης άλλων προγραμμάτων. Τα frameworks μπορούν να βελτιώσουν την παραγωγικότητα κατά την ανάπτυξη του λογισμικού καθώς αφήνουν τον προγραμματιστή να επικεντρωθεί στην εφαρμογή προς ανάπτυξη και όχι στην υποδομή της. Η κύρια διαφορά με τις απλές βιβλιοθήκες λογισμικού είναι η «αντιστροφή ελέγχου», κατά την οποία ο έλεγχος αρχικοποίησης και κλήσης αντικειμένων μεταφέρεται στο framework, αντίθετα με τις βιβλιοθήκες που ήταν αποκλειστική δουλειά του προγραμματιστή. 36

38 4.2 Λίγη Ιστορία Για να εκτιμήσει κανείς τη σημασία του.net framework, είναι χρήσιμο να ταξιδέψει στο χρόνο, περίπου 18 χρόνια πριν και να θυμηθεί τη φύση των τεχνολογιών που υποστήριζαν τα Windows. Παρόλο που μπορεί να φαίνεται το ίδιο, όλα τα λειτουργικά συστήματα από τα Windows 3.1 (εκδόθηκαν το 1992) μέχρι τα Windows 7 και Windows Server 2008 R2 έχουν το ίδιο Windows API στον πυρήνα τους. Με την εμφάνιση όμως των νέων εκδόσεων των Windows, έχει προστεθεί νέα λειτουργικότητα στο API, σαν φυσική απόρροια της εξέλιξης του API και όχι της αντικατάστασής του από ένα νέο. Το ίδιο μπορεί κανείς να πει για τις περισσότερες από τις τεχνολογίες και frameworks που χρησιμοποιούνται για την ανάπτυξη εφαρμογών σε Windows.Για παράδειγμα το πρότυπο COM (Component Object Model) ξεκίνησε σαν OLE (Object Linking and Embedding) και αρχικά αποτελούσε το μέσο με το οποίο διαφορετικοί τύποι εγγράφων του Office μπορούσαν να συνδεθούν, ώστε για παράδειγμα να είναι εφικτό να προστεθεί ένας μικρός πίνακας Excel σε ένα έγγραφο Word. Από τότε το COM εξελίχθηκε στο DCOM (Distributed COM) και τέλος στο πρότυπο COM+, μια πολύπλοκη τεχνολογία που σχημάτισε τη βάση της επικοινωνίας σχεδόν όλων των components, όπως επίσης και την υλοποίηση των δοσοληψιών, των υπηρεσιών μηνυμάτων και του pooling αντικειμένων. Η Microsoft επέλεξε αυτή την εξελικτική προσέγγιση στο λογισμικό για τον προφανή λόγο της διατήρησης της συμβατότητας με τις προηγούμενες εκδόσεις (backward compatibility).μέσα στα χρόνια, η μεγάλη βάση του λογισμικού από άλλους παρόχους που γράφτηκε για Windows, σίγουρα δεν θα γνώριζε την ίδια επιτυχία αν κάθε φορά που η Microsoft εισήγαγε μια νέα τεχνολογία, έσπαγε την υπάρχουσα υποδομή προγραμματισμού! Ήταν ξεκάθαρο ότι κάτι έπρεπε να αλλάξει. Η Microsoft δεν μπορούσε να επεκτείνει για πάντα τα ίδια εργαλεία λογισμικού και τις ίδιες γλώσσες, κάνοντάς τα πιο πολύπλοκα για να υποστηρίζουν το νέο υλικό (hardware) και ταυτόχρονα να είναι συμβατά με τις προηγούμενες εκδόσεις. Κάποτε έρχεται ένα σημείο που πρέπει να γίνει επανεκκίνηση στη θεώρηση της ανάπτυξης λογισμικού αν είναι επιθυμητά ένα απλό αλλά ταυτόχρονα μοντέρνο σύνολο γλωσσών προγραμματισμού, περιβαλλόντων και εργαλείων ανάπτυξης λογισμικού που διευκολύνει τους προγραμματιστές στην ανάπτυξη λογισμικού. Σε αυτό το σημείο έγινε ο ερχομός της C# και του.net στην πρώτη τους ενσάρκωση. Με λίγες λέξεις το.net είναι ένα σύστημα λογισμικού για την υποστήριξη του προγραμματισμού στην πλατφόρμα των Windows. Μαζί με το.net Framework, η C# είναι μια γλώσσα που σχεδιάστηκε από την αρχή για να το υποστηρίξει και να εκμεταλλευτεί όλη την πρόοδο πάνω στα περιβάλλοντα προγραμματισμού και την θεώρηση του αντικειμενοστρεφούς προγραμματισμού που είχε συντελεστεί τα τελευταία 25 χρόνια. Πριν συνεχίσουμε πρέπει να ξεκαθαρίσουμε ότι η συμβατότητα με τα παλιότερα συστήματα δεν χάθηκε κατά τη διαδικασία αυτή. Τα υπάρχοντα προγράμματα θα συνεχίσουν να δουλεύουν και το.net σχεδιάστηκε με τη δυνατότητα να δουλεύει με το υπάρχον λογισμικό. Τώρα, η επικοινωνία μεταξύ διαφόρων components σε Windows γίνεται σχεδόν εξολοκλήρου σε COM. Λαμβάνοντας αυτό υπόψη, το.net Framework έχει τη δυνατότητα να παρέχει wrappers για τα υπάρχοντα COM components έτσι ώστε τα.net components να μπορούν να επικοινωνούν με αυτά. Ωστόσο, δεν είναι απαραίτητο να γνωρίζει κανείς C# για να προγραμματίσει στο.net. Η Microsoft επέκτεινε τη C++ και άλλαξε σημαντικά τη Visual Basic για να την μετατρέψει σε μια πιο ισχυρή γλώσσα, έτσι ώστε να καταστήσει δυνατή τη χρήση τους για το.net. Αυτές οι γλώσσες όμως, φέρουν το βάρος της εξέλιξης μέσα στα τελευταία χρόνια αντί να έχουν γραφτεί από την αρχή σύμφωνα με τις σύγχρονες απαιτήσεις. 37

39 4.3 Χαρακτηριστικά του.net Framework Πριν επεκταθούμε σε μια πιο αναλυτική παρουσίαση της δομής της πλατφόρμας.νετ και των τεχνολογιών που την περιβάλλουν είναι σκόπιμο να παρουσιάσουμε τα σημαντικότερα χαρακτηριστικά και πλεονεκτήματά της: Υποστήριξη πολλαπλών γλωσσών Παρόλο που το COM υποστήριζε πολλαπλές γλώσσες (κυρίως τη C++ και τη Visual Basic), οι δυνατότητες επικοινωνίας μεταξύ των διαφόρων γλωσσών περιορίζονταν στην υλοποίηση διασυνδέσεων (interfaces). Στο.ΝΕΤ, η διαλειτουργικότητα μεταξύ των γλωσσών επιτυγχάνεται μέσω της διαγλωσσικής κληρονομικότητας. Μαζί με ένα ενοποιημένο σύστημα τύπων, η συνένωση κώδικα γραμμένου σε διαφορετικές γλώσσες είναι πλέον εύκολη υπόθεση. Αυτό διευκολύνει και άλλα προγραμματιστικά πρότυπα όπως το συναρτησιακό της F#. Ανάπτυξη βασισμένη σε components Η τέχνη της δημιουργίας ανεξάρτητων κομματιών λογισμικού που περιέχουν βιβλιοθήκες κλάσεων και διαμοιράσιμα τμήματα λειτουργικότητας μιας εφαρμογής έχει γίνει πολύ πιο εύκολη από παλιότερα. Για παράδειγμα, δεν χρειάζεται υλοποίηση διεπαφών COM, όπως το IUnknown. Η διαμοιράσιμη μονάδα κώδικα στο.net βασίζεται στην έννοια του assembly, το οποίο μεταφέρει πληροφορίες που απαιτούνται για τη χρήση της όπως η έκδοση της. Μεταφερσιμότητα Η μεταφερσιμότητα (portability) επιτυγχάνεται μέσω της εικονικής μηχανής στο CLR. H εικονική μηχανή αυτή είναι η προδιαγραφή μιας αφηρημένης εικονικής μηχανής για την οποία κώδικας γραμμένος σε οποιαδήποτε από τις.νετ γλώσσες μεταγλωττίζεται σε μια ενδιάμεση γλώσσα γνωστή ως Common Intermediate Language (CIL) και περιέχεται σε ένα assembly. Ένα assembly είναι είτε ένα εκτελέσιμο αρχείο (exe) είτε ένα dll. Η μεταγλώττιση σε αυτήν την ενδιάμεση γλώσσα είναι που εξασφαλίζει και την ανεξαρτησία από την πλατφόρμα, η οποία ωστόσο μένει μόνο στη θεωρία, αφού η μοναδική πλήρης υλοποίηση του.net είναι διαθέσιμη μόνο για την πλατφόρμα των Windows. Όμως είναι διαθέσιμη μια μερική υλοποίηση ανοιχτού κώδικα με το όνομα Mono. 38

40 Απλή εγκατάσταση εφαρμογών Αντίθετα με τα components που βασίζονται στο COM, δεν χρειάζεται καμία καταχώρηση στο registry του συστήματος για την εγκατάσταση των assemblies καθώς μια απλή αντιγραφή αρκεί για τη χρήση τους. Επιπρόσθετα τα πιθανά προβλήματα της χρήσης των Dynamic Link Libraries (DLLs) γνωστά και ως DLL Hell απαλείφθηκαν με την υποστήριξη της ύπαρξης πολλαπλών εκδόσεων του ίδιου component δίπλα δίπλα. Το ίδιο το.net Framework είναι ένα καλό παράδειγμα αυτής της δυνατότητας, αφού είναι δυνατόν να υπάρχουν πολλαπλές εκδόσεις του framework εγκατεστημένες στο ίδιο μηχάνημα. Επικοινωνία με υπάρχων κώδικα Παρόλο που η πλατφόρμα.νετ προορίζεται να είναι ένα υποκατάστατο των παλαιότερων τεχνολογιών, υποστηρίζει τη χρήση κομματιών λογισμικού που έχουν αναπτυχθεί σε παλιότερες τεχνολογίες όπως της COM και παρέχει πρόσβαση σε λειτουργίες χαμηλού επιπέδου του λειτουργικού συστήματος μέσω του μηχανισμού P/Invoke. Αξιοπιστία To.NET είναι σχεδιασμένο για τη δημιουργία λογισμικού υψηλής αξιοπιστίας (robustness).πραγματοποιεί εκτεταμένους ελέγχους κατά τη μεταγλώττιση αλλά και κατά την εκτέλεση των προγραμμάτων. Τα χαρακτηριστικά του.νετ από μόνα τους ωθούν τους προγραμματιστές στην απόκτηση αξιόπιστων προγραμματιστικών συνηθειών. Το μοντέλο διαχείρισης της μνήμης είναι απλό: η δέσμευση μνήμης γίνεται με μια λέξη (new), δεν υπάρχουν δείκτες προς θέσεις μνήμης σαν τύποι δεδομένων, ούτε αριθμητική δεικτών ενώ η αποδέσμευση μνήμης γίνεται αυτόματα μέσω του μηχανισμού garbage collection. Αυτό το απλό μοντέλο διαχείρισης μνήμης απαλείφει ολόκληρες κατηγορίες λαθών που απασχολούν τους προγραμματιστές σε C και C++. Η ανάπτυξη προγραμμάτων γίνεται με την πεποίθηση ότι αρκετά λάθη θα εντοπιστούν από το σύστημα πολύ πριν την ολοκλήρωσή της. Αυτόματη διαχείριση μνήμης Άλλο ένα σημαντικό χαρακτηριστικό του.net Framework είναι η δυνατότητα αυτόματης διαχείρισης της μνήμης μέσω του Garbage Collector. Ιστορικά η διαχείριση της μνήμης ήταν από τις δυσκολότερες εργασίες που είχε να κάνει ένας προγραμματιστής. Οι παλαιότερες προσεγγίσεις στη διαχείριση μνήμης ήταν είτε χαμηλού επιπέδου (όπως η malloc/free στη C και η new/delete στη C++), προκαλώντας διάφορα bugs, είτε αρκετά πολύπλοκη (όπως στην περίπτωση του COM). Ένας από τους στόχους του.νετ και του CLR πιο συγκεκριμένα ήταν να απαλείψει από 39

41 τους προγραμματιστές την ανάγκη διαχείρισης της μνήμης. Το CLR με το μηχανισμό Garbage Collector διαχειρίζεται τη μνήμη ερευνώντας πότε μπορεί να ελευθερωθεί με ασφάλεια μνήμη που δεν χρειάζεται άλλο σε ένα πρόγραμμα. Η μνήμη δεσμεύεται με την αρχικοποίηση των διαφόρων τύπων (αντικειμένων) από ένα διαθέσιμο τμήμα της μνήμης που διαχειρίζεται το CLR γνωστό ως heap (σωρός). Όσο υπάρχει κάποια άμεση ή έμμεση (μέσω του γράφου των αντικειμένων) αναφορά προς ένα αντικείμενο, τότε αυτό θεωρείται πως χρησιμοποιείται. Στην αντίθετη περίπτωση, όταν δεν μπορεί να αναφερθεί από κάποιο άλλο τμήμα του κώδικα τότε είναι διαθέσιμο για καταστροφή. Ο garbage collector τρέχει ανά τακτά χρονικά διαστήματα σε ένα ξεχωριστό thread, εντοπίζει ποια αντικείμενα είναι έτοιμα προς καταστροφή και αποδεσμεύει τη μνήμη που αυτά χρησιμοποιούσαν. Ασφάλεια Το.ΝΕΤ είναι σχεδιασμένο να λειτουργεί σε κατανεμημένα περιβάλλοντα, η ασφάλεια (security) των οποίων είναι υψίστης σημασίας. Με μέτρα που είναι ενσωματωμένα στις γλώσσες αλλά και κατά την εκτέλεση των προγραμμάτων, το.νετ επιτρέπει τη δημιουργία προγραμμάτων που δεν μπορούν να προσβληθούν από έξω. Σε δικτυακά περιβάλλοντα οι εφαρμογές.νετ είναι ασφαλείς από εισβολές μη εξουσιοδοτημένου κώδικα που επιχειρεί να δράσει στο παρασκήνιο και να εγκαταστήσει κακόβουλο λογισμικό ή να εισβάλει σε συστήματα αρχείων. Το περιβάλλον εκτέλεσης του.νετ έχει ενσωματωμένο έναν μηχανισμό ασφάλειας με το όνομα Code Access Security (CAS) που απομονώνει τον κώδικα ανάλογα με την προέλευσή του, τον δημιουργό του ή άλλες πολιτικές. Το μοντέλο ασφάλειας συμβαδίζει με τους μηχανισμούς ασφάλειας που παρέχει το λειτουργικό σύστημα όπως οι Access Control Lists και τα Windows security tokens. Απόδοση Η ενδιάμεση γλώσσα στην οποία μεταγλωττίζονται τα προγράμματα στο.νετ, μεταγλωττίζεται πάντα με τη μέθοδο Just in Time (JIT). Ο μεταγλωττιστής JIT μεταγλωττίζει κάθε τμήμα του κώδικα στην ενδιάμεση γλώσσα όταν αυτό καλείται (just in time). Όταν έχει ήδη μεταγλωττιστεί κάποιο τμήμα κώδικα, το αποτέλεσμα αποθηκεύεται μέχρι η εφαρμογή να τερματίσει έτσι ώστε να μην χρειάζεται να μεταγλωττιστεί ξανά όταν ζητηθεί το συγκεκριμένο τμήμα. Η διαδικασία αυτή είναι αποδοτικότερη σε σύγκριση με την απευθείας μεταγλώττιση ολόκληρου του κώδικα, γιατί υπάρχει περίπτωση μεγάλα τμήματα κώδικα να μην εκτελεστούν ποτέ στην πραγματικότητα. Με τον μεταγλωττιστή JIT τέτοιος κώδικας δεν θα μεταγλωττίζονταν ποτέ. 40

42 Υποστήριξη με επαγγελματικά εργαλεία Το.ΝΕΤ Framework συνοδεύεται από ένα σύνολο εργαλείων για την υποστήριξη της ανάπτυξης λογισμικού σε αυτό, όπως το σύστημα σχεδιασμού, τα frameworks για unit testing, την πλατφόρμα για build MSBuild και το σύστημα debugging, μέσα από το Visual Studio Το Visual Studio είναι ένα από τα καλύτερα Integrated Development Environments (IDEs). Χρησιμοποιείται για την ανάπτυξη όλων των ειδών εφαρμογών που μπορούν να αναπτυχθούν στο.νετ: από console εφαρμογές και εφαρμογές με γραφικές διεπαφές (GUIs) μέχρι web εφαρμογές και web services σε managed αλλά και εγγενή κώδικα. Οι Premium και Ultimate εκδόσεις του Visual Studio στοχεύουν στην ομαδική ανάπτυξη μαζί με τον Team Foundation Server (TFS) που χρησιμοποιείται για την παρακολούθηση ενός έργου.net, τη διαχείριση του κώδικα, τη διαχείριση των αναφορών αλλά και το διαμοιρασμό κώδικα, τεκμηριώσεων ή άλλων εγγράφων. 4.4 Αρχιτεκτονική του.net Framework Ένας προγραμματιστής στην πλατφόρμα Windows έχει πρωταρχικά δυο μονοπάτια που μπορεί να ακολουθήσει κατά την ανάπτυξη εφαρμογών. Το πρώτο είναι η ανάπτυξη εφαρμογών μη διαχειρισμένου κώδικα (unmanaged code) και περιλαμβάνει τον προγραμματισμό κατευθείαν στο λειτουργικό σύστημα, χρησιμοποιώντας το Windows Application Programming Interface (Windows API) συνήθως με τη γλώσσα C++. Στόχος του Windows API είναι να δώσει τη δυνατότητα στους προγραμματιστές να αναπτύξουν προγράμματα με το λειτουργικό σύστημα για να αποφύγουν το γράψιμο κώδικα για τη δημιουργία components των Windows όπως φόρμες, κουμπιά μενού και άλλα. Με το Windows API ένας προγραμματιστής καλεί τις συναρτήσεις και αφήνει το λειτουργικό σύστημα να δημιουργήσει αυτά τα components.ο κύριος λόγος χρήσης του Windows API είναι η απουσία υποστήριξης διαφόρων λειτουργιών από τη βασική έκδοση της χρησιμοποιούμενης γλώσσας προγραμματισμού. Η χρήση μιας λειτουργίας του Windows API από μια γλώσσα γίνεται με την κλήση της κατάλληλης συνάρτησης. Ωστόσο, οι κλήσεις τέτοιων συναρτήσεων είναι συνήθως μια πολύπλοκη διαδικασία που μπορεί να προκαλέσει απρόβλεπτες συνέπειες αν δεν γίνει σωστά. Η πολυπλοκότητα αυτή είναι ένας από τους λόγους που οδήγησε στη δημιουργία του δεύτερου μονοπατιού στην ανάπτυξη εφαρμογών, δηλαδή την ανάπτυξη εφαρμογών διαχειρισμένου κώδικα. Διαχειρισμένος κώδικας (managed code) είναι ουσιαστικά κώδικας που τρέχει στη πλατφόρμα.net. Το.NET Framework. αποτελείται από ένα περιβάλλον εκτέλεσης το οποίο διαχειρίζεται την εκτέλεση του κώδικα μέσω κανόνων ασφαλείας, αυτόματης διαχείρισης της μνήμης και αυστηρότητας τύπων, μειώνοντας έτσι σε μεγάλο βαθμό την πιθανότητα πρόκλησης λαθών από αυτούς τους παράγοντες. Η πλατφόρμα αποτελείται από διάφορα μέρη καθένα από τα οποία παρέχει ένα συγκεκριμένο κομμάτι των δυνατοτήτων της. Αυτά μπορεί να είναι αυτόνομα προγράμματα, βιβλιοθήκες ή βοηθητικά αρχεία.ακολουθεί μια απεικόνιση της σχέσης των μερών του.net με τις εφαρμογές μέσα από τα δύο μονοπάτια ανάπτυξης που αναφέραμε, αλλά και μια αναλυτική περιγραφή των κυριότερων μερών του.net : 41

43 4.4.1 Common Language Runtime To Common Language Runtime (CLR) είναι μια υλοποίηση του προτύπου Common Language Infrastructure (CLI) από τη Microsoft.Το CLI προσδιορίζει την υποδομή εκτέλεσης που απαιτείται για τη χρήση managed κώδικα, έτσι ώστε διαφορετικές βιβλιοθήκες και γλώσσες να συνεργάζονται απρόσκοπτα. Υπάρχουν και άλλες υλοποιήσεις του CLI από τρίτους παρόχους όπως το Mono και το DotGNU Portable.NET αλλά και της Microsoft με το όνομα Shared Source CLI (SSCLI) γνωστό και ως Rotor, το οποίο τρέχει σε πλατφόρμες όπως το FreeBSD. Αυτό θεωρητικά σημαίνει ότι κώδικας που στοχεύει στο.net όχι μόνο επιτρέπει τη διαλειτουργικότητα μεταξύ διαφορετικών γλωσσών προγραμματισμού αλλά και την εκτέλεση σε διαφορετικές πλατφόρμες. Η προδιαγραφή CLI και κατά συνέπεια το CLR αποτελείται από τρία κύρια στοιχεία : το Virtual Execution System (VES) το Common Type System (CTS) το Common Language Specification (CLS). Η VES είναι η καρδιά του CLR και είναι αυτή που εξασφαλίζει τη μεταφερσιμότητα των προγραμμάτων σε.net. Η VES αντιλαμβάνεται το format της ενδιάμεσης γλώσσας Common Intermediate Language (CIL) και τα μεταδεδομένα που περιγράφουν τον κώδικα σε αυτήν την ενδιάμεση μορφή. Ο κώδικας σε CIL μορφή είναι ίδιος ανεξάρτητα από το υλικό ή τη πλατφόρμα όπου εκτελείται. Η VES είναι ουσιαστικά μια εικονική μηχανή διεργασίας (process virtual machine). Τέτοιες μηχανές τρέχουν σαν κανονική εφαρμογή μέσα στο λειτουργικό σύστημα στο οποίο φιλοξενούνται και υποστηρίζονται από μια διεργασία. Η λειτουργία τους ξεκινά με την έναρξη μιας διεργασίας και παύει με το 42

44 τερματισμό της. Ο σκοπός των εικονικών μηχανών είναι να παρέχουν ένα περιβάλλον εκτέλεσης προγραμμάτων, ανεξάρτητο συνήθως από την πλατφόρμα που τρέχουν, η οποία κρύβει τις λεπτομέρειες του υποκείμενου υλικού ή λειτουργικού συστήματος, επιτρέποντας έτσι στα προγράμματα να τρέχουν με τον ίδιο τρόπο σε κάθε πλατφόρμα. Δεν πρέπει να συγχέονται με τις εικονικές μηχανές συστήματος (system virtual machines) που παρέχουν μια πλήρη πλατφόρμα για την εκτέλεση ενός ολόκληρου λειτουργικού συστήματος όπως η VirtualBox, VMWare ή η Hyper V. Για να εκτελεστεί ο κώδικας μιας γλώσσας στο CLR, πρέπει πρώτα να μεταγλωττιστεί σε μια μορφή η οποία μπορεί να αναγνωριστεί κατά την εκτέλεση. Αυτή η μορφή είναι η Common Intermediate Language (CIL συχνά και σκέτο IL). Ο κώδικας που εκτελείται στο CLR είναι γνωστός ως managed κώδικας, σε αντίθεση με τον εγγενή κώδικα (native code) που εκτελείται κατευθείαν στον επεξεργαστή της μηχανής χωρίς επιπρόσθετη υποδομή εκτέλεσης. Εκτός από τις εντολές σε IL για την εκτέλεση μιας εφαρμογής το CLR χρειάζεται μεταδεδομένα (metadata) που περιγράφουν τη δομή και την οργάνωση των τύπων δεδομένων. Η χρήση των μεταδεδομένων απαλείφει την ανάγκη ύπαρξης header files και βοηθά διάφορα εργαλεία να επιθεωρήσουν τους τύπους. Ένα τέτοιο παράδειγμα είναι το Intellisense του Visual Studio. Η ενδιάμεση γλώσσα CIL περιέχεται μέσα στα assemblies τα οποία, εκτός από το ρόλο τους στην εκτέλεση ενός προγράμματος, αποτελούν και τις βασικές μονάδες εγκατάστασης στο.net. Εξαιτίας της αυτοπεριγραφικής φύσης τους που παρέχεται από τα μεταδεδομένα, τα assemblies δεν χρειάζονται την βοήθεια πολύπλοκων οδηγών εγκατάστασης (installers) για την εγγραφή τους στο registry, αφού μια απλή αντιγραφή τους αρκεί, ενώ είναι δυνατή η ύπαρξη πολλαπλών εκδόσεων των assemblies αφού ενσωματώνουν τον αριθμό έκδοσής τους. Ένα από τα σημαντικότερα κομμάτια του CLR είναι το CTS γιατί εξασφαλίζει τη διαλειτουργικότητα μεταξύ των γλωσσών. Το CTS ορίζει τους προκαθορισμένους τύπους δεδομένων που είναι διαθέσιμες στην ενδιάμεση γλώσσα έτσι ώστε όλες οι γλώσσες του.νετ να παράγουν μεταγλωττισμένο κώδικα που βασίζεται σε αυτούς τους τύπους. Για παράδειγμα ο τύπος δεδομένων Integer της Visual Basic 2010 είναι στην πραγματικότητα ένας 32 bit προσημασμένος ακέραιος, ο οποίος αντιστοιχεί στην ενδιάμεση γλώσσα στον τύπο Int32. Επειδή ο μεταγλωττιστής της C# κατανοεί τον τύπο αυτόν δεν υπάρχει κάποιο πρόβλημα στη χρήση από τη C# ενδιάμεσου κώδικα παραγμένο από VΒ. Το τελευταίο σημαντικότερο κομμάτι του CLR είναι το Common Language Specification (CLS). Το CLS είναι ένα σύνολο κανόνων στο οποίο βασίζονται όλες οι γλώσσες του.νετ για να εξασφαλίσουν ότι δεν τίθενται προς χρήση τύποι δεδομένων τους οποίους δεν μπορούν να χειριστούν μερικές γλώσσες. Αν τηρούνται όλοι οι κανόνες ένας τύπος ορίζεται ως συμβατός με το CLS (CLS compliant) και κατά συνέπεια μπορεί να χρησιμοποιηθεί από όλες τις γλώσσες. Ένα παράδειγμα ενός κανόνα είναι ένας τύπος δεν μπορεί να έχει public μέλη που διακρίνονται μόνο από το αν οι χαρακτήρες τους είναι πεζοί ή κεφαλαίοι (π.χ. Bar και bar). Μερικές γλώσσες, όπως η Visual Basic, δεν κάνουν διάκριση σε πεζούς και κεφαλαίους χαρακτήρες και δεν θα μπορούσαν να αντιληφθούν τη διαφορά Βιβλιοθήκες κλάσεων Τα περισσότερα σύγχρονα λειτουργικά συστήματα παρέχουν ένα σύνολο επαναχρησιμοποιήσιμου κώδικα για τη διευκόλυνση της ανάπτυξης προγραμμάτων σε αυτά. Ο κώδικας αυτός παρέχεται συνήθως σαν ένα σύνολο βιβλιοθηκών που μπορούν να καλούν οι εφαρμογές κατά την εκτέλεσή τους, όπως οι Dynamic Link Libraries (dll) στα Windows και τα Dynamic Shared Objects (dso) στα συστήματα Unix. Τα DLLs αυτά, που βρίσκονται στο φάκελο Windows\System32, περιέχουν συναρτήσεις που 43

45 χρησιμοποιούνται για την απρόσκοπτη λειτουργία του λειτουργικού συστήματος και τη διατήρηση ενός συνεπούς παραθυρικού περιβάλλοντος. Αυτά τα αρχεία αποτελούν το Windows API.Προφανώς, το περιβάλλον εκτέλεσης συνετέλεσε αρκετά στην επιτυχία του.νετ αλλά πολύ σημαντικότερη για τους προγραμματιστές είναι η πλούσια βιβλιοθήκη κλάσεων (Class Library) η οποία δίνει πρόσβαση σε έναν πλούτο λειτουργικότητας που μπορεί να χρησιμοποιηθεί από τις εφαρμογές. Οι βιβλιοθήκες κλάσεων του.νετ υπηρετούν κυρίως δύο σκοπούς: α) όπως άλλες βιβλιοθήκες παρέχουν ένα καλά ορισμένο σύνολο κώδικα για την πραγματοποίηση τετριμμένων εργασιών, όπως η διατήρηση λιστών αντικειμένων ή η επεξεργασία συμβολοσειρών και β) παρέχουν μια αφηρημένη υλοποίηση για εργασίες που κανονικά θα απαιτούσαν πρόσβαση στο υλικό και το λειτουργικό σύστημα, όπως η χρήση του συστήματος αρχείων ή η πρόσβαση στο δίκτυο. Η βιβλιοθήκη κλάσεων του.net έχει μεγαλώσει αρκετά από την πρώτη έκδοσή του περίπου το Σήμερα, είναι σχεδόν αδύνατο να δοθεί πλήρης κάλυψη του framework ακόμα και σε ένα βιβλίο. Αντίθετα είναι πολύ πιο σημαντικό να κατανοηθεί η βασική δομή του έτσι ώστε η εξερεύνησή του να γίνεται εύκολα. Σπάνια κανείς θα έχει την πλήρη λύση ενός προβλήματος όταν ξεκινάει την ανάπτυξη μιας εφαρμογής, αλλά έχοντας κατανοήσει τη δομή του, οτιδήποτε στη βιβλιοθήκη μπορεί να μαθευτεί και να χρησιμοποιηθεί. Δεδομένων των τεραστίων διαστάσεων της βιβλιοθήκης, είναι απαραίτητη η οργάνωσή της για να διευκολυνθεί ο εντοπισμός των διαφόρων λειτουργιών της. Η προσέγγιση που ακολουθείται στο.νετ είναι η ιεραρχική οργάνωση των παρεχόμενων τύπων με τη χρήση των namespaces, σε αντίθεση με το Win32 API όπου η οργάνωση είναι επίπεδη. Ακολουθούν ορισμένα γνωστά namespaces και η λειτουργικότητα που παρέχουν: Το System περιέχει τους primitive τύπους δεδομένων, όπως τους Int32, Double, String, Booleans. Το System.Collections παρέχει πρόσβαση σε χρήσιμους τύπους συλλογών δεδομένων όπως λίστες, σύνολα και λεξικά. Το System.Data που παρέχει λειτουργικότητα για την πρόσβαση σε online ή offline δεδομένα με κύριο στόχο τις βάσεις δεδομένων. Το System.IO που παρέχει τις απαραίτητες δομές για τη διαχείριση της Εισόδου/Εξόδου (input/output) με streams, αρχεία, pipes κ.α. Το System.Net που περιέχει κλάσεις για τη μετάδοση δεδομένων μέσω δικτύου που υποστηρίζουν γνωστά πρωτόκολλα όπως το TCP, UDP και το HTTP. To System.Security που ενσωματώνει όλη τη λειτουργικότητα σχετική με την ασφάλεια μιας εφαρμογής, όπως permissions και κρυπτογραφία. Το System.Text που χρησιμεύει για τη διαχείριση κειμένου, υποστηρίζοντας διάφορες κωδικοποιήσεις αλλά και τη χρήση regular expressions. Το System.Windows που φιλοξενεί διάφορες τεχνολογίες για γραφικά περιβάλλοντα όπως τις Windows Forms και WPF. Το System.XML που υποστηρίζει την επεξεργασία εγγράφων XML. 44

46 4.4.3 Γλώσσες προγραμματισμού Οι γλώσσες προγραμματισμού είναι θεωρητικά εκτός της έννοιας μιας πλατφόρμας λογισμικού, ωστόσο η σημασία τους στο.net Framework είναι αρκετά μεγάλη. Το.NET υποστηρίζει τη χρήση πολλαπλών γλωσσών για τη δημιουργία εφαρμογών και βιβλιοθηκών κλάσεων. Από την πρώτη έκδοση του.νετ, τόσο η Microsoft όσο και τρίτοι πάροχοι προσέφεραν ένα πλούσιο σύνολο γλωσσών συμβατών με το περιβάλλον εκτέλεσης, το σύστημα τύπων και το CLS. Πάνω από 50 γλώσσες έχουν γραφτεί πάνω στο περιβάλλον εκτέλεσης. Οι κύριες γλώσσες που παρέχονται από τη Microsoft σαν κομμάτι του.net Framework SDK ωστόσο είναι τέσσερις: Η Visual Basic.NET: Μια γλώσσα με την οποία εξοικειώνονται αμέσως όσοι έχουν γράψει κλασικά προγράμματα Visual Basic στο παρελθόν και που τώρα στοχεύει στο.net Framework με πλήρη υποστήριξη αντικειμενοστρέφειας. Η C#: Η γλώσσα που αναπτύχθηκε παράλληλα με τη δημιουργία του περιβάλλοντος εκτέλεσης του.νετ και την πρώτη έκδοση των βιβλιοθηκών κλάσεων. Βασίζεται στις αρχές του αντικειμενοστρεφούς προγραμματισμού και η φύση της είναι πολύ πρακτική. Η C++/CLI: αρχικά γνωστή ως Managed Extensions for C++, επιτρέπει την ε κτέλεση C++ κώδικα πάνω στο περιβάλλον εκτέλεσης του.net, παρέχοντας ένα πολύ καλό εργαλείο για την αντιμετώπιση διαλειτουργικών προβλημάτων. Η F#: η τελευταία προσθήκη στον πυρήνα γλωσσών του.νετ που στοχεύει στην επιστημονική υπολογιστική και συνδυάζει τις αρχές του συναρτησιακού προγραμματισμού με τον πλούτο της βιβλιοθήκης κλάσεων του.νετ. Εκτός των επίσημων γλωσσών της Microsoft, διάφορες άλλες γλώσσες έχουν εισαχθεί στο.νετ Framework. Παραδείγματα αποτελούν η COBOL, η Smalltalk, η Delphi, η APL, η Pascal και άλλες. Το τοπίο των γλωσσών προγραμματισμού είναι πάντα ρευστό και η ενοποιημένη υποδομή του.νετ παρέχει έναν ασφαλή τρόπο για την εξυπηρέτηση των αναγκών των διαφορετικών αυτών γλωσσών, δίνοντάς τους τη δυνατότητα να χρησιμοποιήσουν βιβλιοθήκες μεταξύ τους και να χρησιμοποιήσουν τα έτοιμα εργαλεία. Όλα αυτά επιτρέπουν στους προγραμματιστές με διαφορετικές προτιμήσεις σε γλώσσες προγραμματισμού να δουλέψουν μαζί και να επιλέξουν τα σωστά εργαλεία για κάθε έργο. Για παράδειγμα, ενώ η C# είναι μια πολύ καλή γλώσσα γενικού σκοπού για τη δημιουργία εταιρικών εφαρμογών, η F# είναι πιο ελκυστική για την ανάπτυξη επιστημονικών εφαρμογών. 45

47 4.4.4 Εργαλεία του.νετ Framework Το.ΝΕΤ περιλαμβάνει ένα σύνολο εργαλείων για τη διευκόλυνση της δημιουργίας, εγκατάστασης και διαχείρισης εφαρμογών και components σε αυτό. Τα περισσότερα εργαλεία εγκαθίστανται με την εγκατάσταση του Visual Studio. Όλα τα εργαλεία είναι δυνατόν να εκτελεστούν από τη γραμμή εντολών των Windows εκτός από το εργαλείο Assembly Cache Viewer που πρέπει να χρησιμοποιηθεί από τον Windows Explorer. Ο καλύτερος τρόπος εκτέλεσης των command line εργαλείων είναι μέσα από το Visual Studio Command Prompt (γνωστό και ως CMD Shell) που παρέχεται σε κάθε Visual Studio από την έκδοση 2005 και μετά. Ακολουθεί μια αναφορά σε επιλεγμένα εργαλεία του.νετ και μια κατηγοριοποίησή τους: Εργαλεία μεταγλώττισης Csc.exe (C Sharp Compiler): ο μεταγλωττιστής της C# λαμβάνει αρχεία που περιέχουν κώδικα C# και παράγει εκτελέσιμα αρχεία (exe), dynamic link libraries (dll) ή modules κώδικα (netmodule) Εργαλεία Build, Deployment και Configuration 1. Ildasm.exe (MSIL Assembler): λαμβάνει ένα protable executable (PE) αρχείο που περιέχει κώδικα στην ενδιάμεση γλώσσα MSIL και παράγει ένα text αρχείο που μπορεί να προωθηθεί στο εργαλείο MSIL Assembler (Ilasm.exe) 2. Mage.exe (Manifest Generation and Editing): Επιτρέπει τη δημιουργία, επεξεργασία και υπογραφή των manifests μιας εφαρμογής. Εργαλεία αποσφαλμάτωσης (Debugging) MDbg.exe (.NET Framework Command Line Debugger): Βοηθάει τους προγραμματιστές να εντοπίζουν και να διορθώνουν bugs στα προγράμματα που τρέχουν στο CLR. Αυτό το εργαλείο χρησιμοποιεί το runtime debuggint API. Εργαλεία ασφάλειας 1. Peverify.exe (PEVerify Tool): βοηθάει στην επιβεβαίωση ότι ο ενδιάμεσος κώδικας MSIL και τα αντίστοιχα μεταδεδομένα καλύπτουν τις απαιτήσεις ασφάλειας. 2. SignTool.exe (Sign Tool): υπογράφει αρχεία ψηφιακά, επιβεβαιώνει υπογραφές σε αρχεία και τους προσδίδει time stamps. 46

48 Εργαλεία διαλειτουργικότητας (Interop) Regasm.exe (Assembly Registration Tool): διαβάσει τα μεταδεδομένα σε ένα assembly και προσθέτει τις απαραίτητες εγγραφές στο registry. Αυτό επιτρέπει στους COM clients να εμφανίζονται σαν κλάσεις του.νετ. Διάφορα άλλα εργαλεία: 1. SqlMetal.exe (Code Generation Tool): παράγει κώδικα και αντιστοιχήσεις για το LINQ to SQL component του.νετ. 2. Wincv.exe (Windows Forms Class Viewer): εμφανίζει πληροφορίες για μια κλάση ή σύνολο κλάσεων χρησιμοποιώντας το reflection API του CLR. 4.5 Εκδόσεις του.νετ Framework Η Microsoft ξεκίνησε την ανάπτυξη του.νετ Framework στα τέλη της δεκαετίας του 1990 αρχικά με το όνομα Next Generation Windows Services. Στα τέλη του 2000 εκδόθηκε η πρώτη beta έκδοση του.net 1.0. Από τότε έχουν εκδοθεί άλλες τρεις κύριες εκδόσεις και αρκετές δευτερεύουσες ενδιάμεσά τους. Κάθε έκδοση του.νετ περιέχει το CLR σαν κύριο component και περιλαμβάνει επιπρόσθετα components όπως τη βιβλιοθήκη κλάσεων και άλλες managed βιβλιοθήκες. Κάθε νέα έκδοση του.νετ Framework διατηρεί τα στοιχεία των προηγούμενων εκδόσεων και προσθέτει νέα χαρακτηριστικά. Παρόλο που το CLR είναι το κύριο component του.νετ Framework, εκτός από τον αριθμό έκδοσης του.νετ έχει και το δικό του αριθμό έκδοσης. Μερικές εκδόσεις του.νετ περιλαμβάνουν μια νέα έκδοση του CLR, ενώ άλλες χρησιμοποιούν μια παλιότερη. Για παράδειγμα το.νετ 4.0 περιλαμβάνει την τέταρτη έκδοση του CLR ενώ το.νετ 3.5 περιλαμβάνει την δεύτερη έκδοση του CLR. Για κάποιο περίεργο λόγο δεν υπήρχε τρίτη έκδοση του CLR. Η έκδοση του CLR στο οποίο τρέχει μια εφαρμογή μπορεί να προσδιοριστεί λαμβάνοντας την τιμή της property Environment.Version. Οι εκδόσεις του.νετ Framework συνοψίζονται στον παρακάτω πίνακα: 47

49 Έκδοση.ΝΕΤ Έκδοση CLR Έκδοση Visual Studio Έτος Έκδοσης Περιγραφή VS.NET 2000 Περιείχε την πρώτη έκδοση του CLR και την πρώτη έκδοση των base class libraries VS.NET VS VS VS VS Περιείχε ενημερώσεις στην ASP.NET και το ADO.NET. Η έκδοση αυτή ενημερώθηκε δυο φορές με το Service Pack 1 και το Service Pack 2. Αυτή η έκδοση επέτρεπε στις εφαρμογές να τρέξουν σε διαφορετικές εκδόσεις του CLR 2006 Εισήγαγε μια νέα έκδοση του CLR με προσθήκες στις βασικές κλάσεις, όπως τα generics, generic collections και σημαντικές προσθήκες στην ASP.NET. Αυτή η έκδοση ενημερώθηκε με δυο service packs 2007 Η έκδοση αυτή είναι ουσιαστικά η έκδοση 2.0 με την προσθήκη του Windows Presentation Foundation (WPF), Windows Communication Foundation, Windows Workflow Foundation (WF) και του cardspace. Ενημερώθηκε με το SP1 και το SP Προστέθηκαν νέα χαρακτηριστικά όπως τα: AJAX enabled websites και η LINQ. Το SP1 πρόσθεσε το.νετ Client Profile, Dynamic Data και άλλες μικρές ενημερώσεις 2010 Περιλαμβάνει μια νέα έκδοση του CLR, επέκταση στις βιβλιοθήκες κλάσεων και νέα, χαρακτηριστικά όπως το Managed Extensibility Framework και το dynamic language runtime Δεν χρειάζεται να εγκατασταθούν προηγούμενες εκδόσεις του.net ή του CLR πριν την εγκατάσταση της τελευταίας έκδοσης, αφού κάθε νέα έκδοση είναι θεωρητικά συμβατή με τις παλαιότερες, δηλαδή παρέχει όλα τα απαραίτητα components που χρειάζεται μια εφαρμογή φτιαγμένη σε παλιότερες εκδόσεις. Η συμβατότητα με προηγούμενες εκδόσεις (backward compatibility) γενικά, σημαίνει ότι μια εφαρμογή που έχει αναπτυχθεί για μια συγκεκριμένη έκδοση μιας πλατφόρμας θα τρέξει σε επόμενες εκδόσεις της πλατφόρμας. Το.ΝΕΤ Framework προσπαθεί να μεγιστοποιήσει αυτή τη συμβατότητα έτσι ώστε κώδικας γραμμένος σε μια έκδοσή του να μεταγλωττίζεται σε επόμενες εκδόσεις του και binaries που τρέχουν σε μια έκδοση να τρέχουν με την ίδια συμπεριφορά και στις επόμενες εκδόσεις. Ωστόσο, για τη συμβατότητα με προηγούμενες εκδόσεις πρέπει να λαμβάνονται τα παρακάτω υπόψη: 48

50 Μια εφαρμογή.νετ, προεπιλεγμένα τρέχει στην έκδοση του.νετ για την οποία αναπτύχθηκε. Αν αυτή η έκδοση δεν είναι εγκατεστημένη στον υπολογιστή και το configuration file δεν ορίζει τις υποστηριζόμενες εκδόσεις, μπορεί να προκύψει λάθος στην εκκίνησή της και κάθε προσπάθεια εκτέλεσης της εφαρμογής θα αποτυγχάνει. Είναι δυνατόν να οριστούν συγκεκριμένες εκδόσεις του.νετ στις οποίες θα τρέξει η εφαρμογή, προσθέτοντας ένα ή περισσότερα <supportedruntime> elements στο configuration file της εφαρμογής. Κάθε τέτοιο element προσδιορίζει την υποστηριζόμενη έκδοση με σειρά προτίμησης: το πρώτο προσδιορίζει την πιο επιθυμητή έκδοση και το τελευταίο την λιγότερο επιθυμητή. Ένα component, σε αντίθεση με μια εφαρμογή, δεν μπορεί να ελέγξει την έκδοση του.net Framework στην οποία θα τρέξει. Τα components και οι βιβλιοθήκες κλάσεων φορτώνονται στο πλαίσιο μιας εφαρμογής και κατά συνέπεια τρέχουν στην έκδοση του.νετ στην οποία τρέχει η εφαρμογή. Εξαιτίας του περιορισμού αυτού, είναι σημαντικό να παρέχονται εγγυήσεις συμβατότητας των components με μια έκδοση. Από το.νετ 4.0 και μετά είναι δυνατόν να προσδιορίζουμε το βαθμό στον οποίο ένα component αναμένεται να παραμείνει συμβατό με μια έκδοση εφαρμόζοντας σε αυτό το component, το attribute System.Runtime.Versioning.ComponentGuaranteesAttribute. Η τιμή αυτού του attribute μπορεί να ελεγχθεί από διάφορα εργαλεία για να προσδιορίσουν μια πιθανή παραβίαση της εγγύησης συμβατότητας σε μελλοντικές εκδόσεις του component. To.NET Framework 4.0 είναι συμβατό με εφαρμογές που φτιάχτηκαν με τις εκδόσεις 1.1, 2.0, 3.0 και 3.5. Με άλλα λόγια, εφαρμογές και components που φτιάχτηκαν με προηγούμενες εκδόσεις του.νετ, μπορούν να τρέξουν στο.νετ 4.0. Υπάρχουν, ωστόσο περιπτώσεις στις οποίες αυτή η συμβατότητα μπορεί να σπάσει από ασυνεπείς αλλαγές στο framework ή αλλαγές στις προγραμματιστικές τεχνικές. Για παράδειγμα, βελτιώσεις στο.νετ 4.0 μπορούν να προκαλέσουν συνθήκες συναγωνισμού (race conditions) που δεν προκαλούνταν στις προηγούμενες εκδόσεις. Επίσης κάθε έκδοση του.νετ περιλαμβάνει διορθώσεις bugs και αλλαγές στην ασφάλεια που επηρεάζουν τη συμβατότητα μερικών εφαρμογών ή components.κατά συνέπεια οι εφαρμογές και τα components πρέπει πάντα να υποβάλλονται σε ελέγχους για να εξασφαλίζεται η συμβατότητά τους με άλλες εκδόσεις του.νετ. 49

51 4.6 Αναφορές και Βιβλιογραφία 4 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ

52 Κεφάλαιο 5 - Η δηλωτική γλώσσα XAML 5.1 Τι είναι η XAML; Η XAML (Extensible Application Markup Language) είναι μια δηλωτική γλώσσα. Συγκεκριμένα, η XAML μπορεί να προετοιμάσει τα αντικείμενα και να ορίσει τις ιδιότητες των αντικειμένων, χρησιμοποιώντας μια δομή της γλώσσας που δείχνει ιεραρχικές σχέσεις μεταξύ πολλαπλών αντικειμένων, και χρησιμοποιεί μια σύμβαση τύπου υποστήριξης η οποία υποστηρίζει την επέκταση των τύπων. Επίσης μπορούνε να δημιουργηθούν ορατά στοιχεία UI. Μπορεί έπειτα να χρησιμοποιηθεί ένα ξεχωριστό αρχείο πίσω-κώδικα (code-behind) για να ανταποκριθούνε τα events και να γίνει διαχείριση των αντικειμένων που δηλώθηκαν στη XAML. Η γλώσσα XAML υποστηρίζει ανταλλαγή των πηγών μεταξύ των διαφόρων εργαλείων και των ρόλων στην αναπτυξιακή διαδικασία, χωρίς απώλεια πληροφοριών, όπως η ανταλλαγή πηγών XAML μεταξύ Visual Studio της Microsoft και το Expression Blend. Τα αρχεία XAML είναι αρχεία XML που γενικά έχουν επέκταση ονόματος του αρχείου.xaml. Το ακόλουθο παράδειγμα δείχνει τα περιεχόμενα ενός πολύ βασικού Windows Phone αρχείου XAML. XAML <UserControl x:class="mywindowsphone.page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <Grid Background="OldLace"> </Grid> </UserControl> 5.2 Ο ρόλος της XAML στα Windows Phone Στην αρχιτεκτονική των Windows Phone, όπως και στη διαδικασία ανάπτυξης εφαρμογών Windows Phone, η XAML παίζει πολύ σημαντικό ρόλο. Η XAML είναι ο πρωτεύων τύπος για την δήλωση UI στα Windows Phone και των στοιχείων του UI. Τυπικά ένα αρχείο XAML στο project αντιπροσωπεύει μια σελίδα μετάβασης για την εφαρμογή σχετικά με την αρχική εμφάνιση του UI. Επιπλέον αρχεία XAML μπορούνε να δηλωθούν για επιπλέον σελίδες για πλοήγηση στο UI ή για την αντικατάστασή του. Άλλα αρχεία XAML μπορούνε να δηλώσουνε πηγές, όπως περιγράμματα ή άλλα στοιχεία της εφαρμογής που μπορούνε είτε να χρησιμοποιηθούνε ξανά είτε να αντικατασταθούνε. 51

53 Η XAML είναι η μορφή που χρησιμοποιείται για τη δήλωση του στυλ και των προτύπων που εφαρμόζονται στη λογική βάση ελέγχου των Windows Phone και του UI. Αυτό μπορεί να χρησιμοποιηθεί είτε για templating των υπαρχόντων controls, είτε από συντάκτες control οι οποίοι παρέχουνε ένα προεπιλεγμένο πρότυπο για τα controls. Όταν χρησιμοποιείται για να καθορίσει μορφές και πρότυπα, η XAML συχνά δηλώνεται ως ένα αρχείο XAML με ResourceDictionary root. Η XAML είναι η κοινή μορφή για την υποστήριξη της δημιουργίας σχεδίασης UI των Windows Phone και η ανταλλαγή του UI σχεδιασμού ανάμεσα σε διαφορετικές εφαρμογές σχεδίασης. Πιο αναλυτικά, η XAML για μια εφαρμογή των Windows Phone μπορεί να εναλλάσσεται μεταξύ των Expression Blend και Visual Studio. Στα Windows Phone η XAML καθορίζει την οπτική εμφάνιση του UI, και ένας σχετικός πίσω-κώδικας από το αρχείο καθορίζει τη λογική. Ο σχεδιασμός του UI μπορεί να ρυθμιστεί χωρίς κατ 'ανάγκη να γίνουνε αλλαγές στη λογική του πίσωκώδικα. Σε αυτό τον ρόλο της η XAML απλοποιεί την ροή εργασίας μεταξύ αυτών που έχουνε πρωταρχική ευθύνη για την εμφάνιση της εφαρμογής και εκείνων που είναι υπεύθυνοι για την λογική της εφαρμογής και τον σχεδιασμό των πληροφοριών. Λόγω του οπτικού σχεδιασμού και την υποστήριξη σχεδιαστικής επιφάνειας, η XAML υποστηρίζει την πολύ γρήγορη εκπόνηση πρωτοτύπων UI κατά τα πρώτα στάδια ανάπτυξης καθώς, επίσης τα στοιχεία της μελέτης μπορεί να διατηρηθούνε ως σημεία πρόσβασης σε όλο τον κώδικα μιας αναπτυξιακής διαδικασίας, ακόμη και αν οι οπτικοί σχεδιασμοί αλλάζουνε ριζικά. Ανάλογα με το ρόλο του δημιουργού στην αναπτυξιακή διαδικασία, μπορεί να μην γίνει αλληλεπίδραση με την γλώσσα XAML ή με τη σύνταξη της XAML ενδελεχώς. Ο βαθμός στον οποίο αλληλεπιδρά η XAML με τα Windows Phone εξαρτάται επίσης από το περιβάλλον ανάπτυξης που χρησιμοποιείται, αν χρησιμοποιούνται διαδραστικές λειτουργίες σχεδιασμού του περιβάλλοντος όπως, λόγου χάρη εργαλειοθήκες, καθώς και το πεδίο εφαρμογής και τον σκοπό των Windows Phone εφαρμογών. Εντούτοις, είναι πολύ πιθανό κατά την διάρκεια ανάπτυξης μίας εφαρμογής, ένας προγραμματιστής να επεξεργαστεί ένα αρχείο Windows Phone XAML για αλλαγές κάποιων στοιχείων μέσω ενός επεξεργαστή κειμένου. 5.3 Τα namespaces της XAML Με έναν ευρύ ορισμό για τον προγραμματισμό, ένα namespace καθορίζει τον τρόπο με τον οποίο ερμηνεύονται τα διακριτικά συμβολοσειρών (string tokens) που αναφέρονται σε προγραμματιστικές οντότητες. Ένα namespace μπορεί επίσης να διορθώσει ασάφειες σε περιπτώσεις όπου τα string tokens επαναχρησιμοποιούνται. Η ύπαρξη ενός namespace επιτρέπει σε ένα προγραμματιστικό framework τον διαχωρισμό μίας δήλωσης token ενός 52

54 χρήστη και μίας δήλωσης token του framework, όπως και την αποσαφήνιση των πιθανών εμπλοκών token και ούτω καθεξής. Ένα namespace XAML είναι μια έννοια namespace που εξυπηρετεί αυτό το σκοπό για τη γλώσσα XAML. Τόσο για το γενικό σκοπό της όσο και για την ανάπτυξη εφαρμογών των Windows Phone, η XAML χρησιμοποιείται για να δηλώσει αντικείμενα, ιδιότητες των εν λόγω αντικειμένων, όπως και τις ιδιότητες αντικειμένων που εκφράζουν τις σχέσεις ως ιεραρχίες. Τα αντικείμενα που δηλώνονται υποστηρίζονται από τις βιβλιοθήκες τύπων. Αυτές οι βιβλιοθήκες μπορεί να είναι κάθε μία από τις ακόλουθες: Οι Windows Phone βιβλιοθήκες πυρήνα που είναι διαθέσιμες σε οποιονδήποτε χρόνο εκτέλεσης Διανεμημένες βιβλιοθήκες που είναι μέρος του Windows Phone SDK, οι οποίες αναδιανέμονται από το πακέτο (πιθανότατα με τη βιβλιοθήκη της εφαρμογής και την επιλογή προσωρινής αποθήκευσης). Βιβλιοθήκες οι οποίες, αντιπροσωπεύουν τον ορισμό ενός control άλλου κατασκευαστή οι οποίες, ενσωματώνονται και αναδιανέμονται στο πακέτο της εφαρμογής. Η βιβλιοθήκη του project η οποία, δημιουργήθηκε από το project στα Windows Phone, που περιέχει κάποιους ή όλους τους κωδικούς του χρήστη από τις εφαρμογές. Μια άλλη βιβλιοθήκη που ορίζεται σε ένα ξεχωριστό project, και αναφέρεται μέσω του μοντέλου των Windows Phone εφαρμογών, χρησιμοποιώντας μία από τις πολλές στρατηγικές ανάπτυξης Web. Η έννοια του namespace XAML χρησιμοποιεί δηλώσεις παραπλήσιες με το στυλ του XML namespace (xmlns) και συσχετίζει τη δημιουργία αντιγράφων ασφαλείας πληροφοριών με συγκεκριμένα XAML namespaces. Το αναγνωριστικό για το namespace XAML μπορεί να είναι ένα URI, ή ένα string token με τη μορφή του CLR- namespace και συσχετιζόμενων πληροφοριών. Αυτό επιτρέπει σε έναν επεξεργαστή XAML που διαβάζει ένα αρχείο XAML, να διαφοροποιήσει τα token που έχουν τονιστεί, και να ελέγχει τους τύπους και τα μέλη εκείνων των συνόλων που σχετίζονται με τα namespaces XAML όταν, δημιουργείται μία αναπαράσταση χρόνου εκτέλεσης ενός αντικειμένου. Ένα αρχείο XAML, σχεδόν πάντα δηλώνει ένα προεπιλεγμένο namespace XAML στο root στοιχείο του. Το προεπιλεγμένο namespace XAML υπαγορεύει ποια στοιχεία μπορούνε να καθοριστούνε χωρίς τον περαιτέρω χαρακτηρισμό τους με τη χρήση ενός προθέματος. Για παράδειγμα, αν δηλωθεί ένα στοιχείο < Balloon / >, αυτό το στοιχείο αναμένεται να υπάρχει και είναι έγκυρο στο προεπιλεγμένο namespace XAML. Αντίθετα, εάν το Balloon δεν υπάρχει στο προκαθορισμένο namespace XAML, πρέπει να προστεθεί ένα πρόθεμα σε αυτήν την αναφορά, για παράδειγμα <party:balloon / >. Το πρόθεμα δείχνει ότι η οντότητα υπάρχει σε ένα διαφορετικό namespace XAML εκτός από το προεπιλεγμένο, και πιο συγκεκριμένα, ότι έχει αντιστοιχιστεί σε ένα namespace XAML με το πρόθεμα «party» για σκοπούς χρήσης. 53

55 Τα namespaces XAML ισχύουν για το συγκεκριμένο στοιχείο στο οποίο, δηλώνονται και για κάθε στοιχείο που περιέχεται στην εν λόγω δομή XAML. Για το λόγο αυτό, δηλώνονται σχεδόν πάντα σε στοιχεία root ώστε, να επωφεληθούνε από την έννοια της κληρονομικότητας. Στα Windows Phone, το προεπιλεγμένο namespace XAML περιλαμβάνει σχεδόν όλους τους τύπους που έχουν καθοριστεί για τα Windows Phone από τη βιβλιοθήκη πυρήνα System.Windows.dll οι οποίοι είναι χρήσιμο να δηλώνονται στη XAML. Το προεπιλεγμένο namespace XAML επιτρέπει την παράλειψη της προεπιλογής του CLR namespace και είναι ανάλογο της εξυπηρετικότητας ενός using ή μιας δήλωσης imports μέσα σε ένα αρχείο κώδικα. Η διαφορά είναι ότι ένα προεπιλεγμένο namespace XAML μπορεί να περιλαμβάνει τύπους οι οποίοι προέρχονται από πολλαπλά CLR namespaces. Για παράδειγμα, χρησιμοποιώντας το προεπιλεγμένο Windows Phone namespacε XAML, το < Button / > αναφέρεται στο System.Windows.Controls.Button, και το < ImageBrush / > αναφέρεται στο System.Windows.Media.ImageBrush. Αυτό επιτρέπεται επειδή τα System.Windows.Controls και τα System.Windows.Media namespaces CLR αντιστοιχίζονται με το προεπιλεγμένο namespace XAML για Windows Phone όπως έχει οριστεί από τον τρόπο που έχουν κατασκευαστεί οι βιβλιοθήκες πυρήνα. Οι βιβλιοθήκες των Windows Phone που διανέμονται γενικά ως μέρος του Windows Phone SDK, απαιτούν μια αντιστοίχιση προθεμάτων έτσι ώστε να χρησιμοποιήσουν τους τύπους τους στη XAML. Οι βιβλιοθήκες SDK διαθέτουν στοιχεία του CLR, έτσι ώστε, οι σχεδιαστές που φορτώνουν τα σύνολά τους, να μπορούν να προτείνουν ένα συγκεκριμένο πρόθεμα. Στο Visual Studio, για οποιοδήποτε σύνολα τα οποία έχουν αναφερθεί από ένα project, μπορεί να χρησιμοποιηθεί η δυνατότητα της αυτόματης συμπλήρωσης η οποία διαβάζει τα CLR τα οποία αποδόθηκαν σε αναφερόμενα σύνολα. Αυτό το χαρακτηριστικό γνώρισμα του Visual Studio παρουσιάζει είτε όλα τα πιθανά namespace XAML ως αναπτυσσόμενα, είτε χρησιμοποιεί το πρόθεμα το οποίο, προτείνεται ως υπόδειξη βοήθειας για την πρόταση ενός συγκεκριμένου τρόπου επιλογής. Τα Windows Phone SDK σύνολα προσδιορίζουν ένα namespace XAML που βασίζεται σε URI, το οποίο επιτρέπει πολλές βιβλιοθήκες και πολλαπλά namespaces CLR εντός των βιβλιοθηκών να κάνουν κοινή χρήση του namespacε XAML. Τύποι που προέρχονται από βιβλιοθήκες, εκτός από τις βιβλιοθήκες πυρήνα των Windows Phone θα απαιτούν τη δήλωση και την αντιστοίχιση ενός namespace XAML με ένα πρόθεμα προκειμένου να γίνεται αναφορά σε τύπους από αυτή την βιβλιοθήκη. Συνήθως, αν μια βιβλιοθήκη δεν υποστηρίζει ένα namespace XAML που είναι βασισμένο σε URI, η δήλωση που απαιτείται για την πρόσβαση σε τύπους της βιβλιοθήκης μέσω XAML απαιτεί τρία κομμάτια πληροφοριών: Ένα πρόθεμα, το οποίο καθορίζει τη συμβολική σήμανση του token που χρησιμοποιείται για την αναφορά του namespace XAML, στις επόμενες σημάνσεις XAML. 54

56 Το σύνολο που καθορίζει τα είδη των αντιγράφων σε εκείνη την περιοχή της XAML, στα οποία πρέπει να έχει πρόσβαση ένας επεξεργαστής XAML, έτσι ώστε να δημιουργήσει αντικείμενα με βάση τις δηλώσεις της XAML. Ένα namespace CLR εντός του εν λόγω συνόλου. 5.4 XAML language XAML namespace Ένα συγκεκριμένο XAML namespace που δηλώνεται σχεδόν σε κάθε αρχείο Windows Phone XAML είναι το XAML namespace για τα στοιχεία που ορίζονται από τη γλώσσα XAML. Κατά συνθήκη το XAML language XAML namespace χαρτογραφείται με το πρόθεμα x:. Το προεπιλεγμένο project και τα πρότυπα του αρχείου για Windows Phone υπαγορεύουν πάντα τόσο το προεπιλεγμένο XAML namespace (κανένα πρόθεμα, μόνο xmlns =) όσο και το namespace της γλώσσας XAML (με πρόθεμα x :) ως μέρος του στοιχείου root. Για παράδειγμα, το ακόλουθο απόσπασμα παραδείγματος είναι ένα πρότυπο ενός UserControl root της αρχικής σελίδας μιας εφαρμογής Windows Phone (που δείχνει μόνο την ετικέτα ανοίγματος απλοποιημένη): XAML <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"...> Το x:prefix (x:πρόθεμα) περιέχει αρκετές δομές προγραμματισμού που χρησιμοποιούνται συχνά σε μια Windows Phone XAML. Τα παρακάτω είναι οι πιο συνηθισμένες μορφές στις οποίες χρησιμοποιείται το πρόθεμα x: x:key: Ορίζει ένα μοναδικό καθορισμένο από το χρήστη κλειδί για κάθε πόρο σε ένα ResourceDictionary. Το Key χρησιμοποιείται ως όρισμα για την επέκταση StaticResource για την ανάκτηση οποιωνδήποτε τέτοιων πηγών από μια άλλη χρήση της XAML. x:class: Καθορίζει το namespace CLR και το όνομα της κλάσης για την κλάση που παρέχει τον πίσω-κώδικα από μια σελίδα XAML, και ονοματίζει την κλάση που δημιουργείται ή συνδέεται με την ενέργεια Build του μεταγλωττιστή της XAML μέσα από το μοντέλο Windows Phone εφαρμογών. Πρέπει να υπάρχει μια τέτοια κλάση που να υποστηρίζει τον πίσω-κώδικα, ή το ξεκίνημα ως RootVisual. Για αυτούς τους λόγους χαρτογραφείται το x: ακόμη και αν δεν υπάρχουν πόροι ή και αν δεν χρησιμοποιείτε ποτέ το x: Name. 55

57 x:name: Καθορίζει το όνομα ενός run-time αντικειμένου για το στιγμιότυπο το οποίο υπάρχει στον κώδικα χρόνου εκτέλεσης εφόσον ένα στοιχείο που έχει καθοριστεί από τη XAML προσπελάζεται. Μπορεί να χρησιμοποιηθεί το x:name για την ονομασία στοιχείων σε περιπτώσεις κατά τις οποίες η πιο βολική ιδιότητα FrameworkElement.Name δεν υποστηρίζεται. Υπάρχουν επιπλέον δομές προγραμματισμού στην XAML language XAML namespace που δεν είναι τόσο κοινές. 5.5 Άλλα XAML namespace Ενδέχεται να προκύψουν τα αρχεία XAML για τα Windows Phone που καθορίζουν τα προθέματα d: (namespace για σχεδίαση) και mc: (για λόγους συμβατότητας σήμανσης). Σε γενικές γραμμές χρησιμοποιούνται για την υποστήριξη της υποδομής που συνδέεται με την ανταλλαγή εργαλείων μεταξύ XAML ή διαδικασιών, και δεν χρειάζεται να υπάρχει αλληλεπίδραση με τα στοιχεία σε αυτά τα namespaces σε ένα χαρακτηριστικό Windows Phone XAML. Για λόγους κληρονομικότητας, η XAML στα Windows Phone υποστηρίζει επίσης ένα άλλο URI namespace που βασίζεται ως πιθανό προεπιλεγμένο namespace στη XAML. Γενικά, θα πρέπει να χρησιμοποιείται ως προεπιλεγμένο namespace στη XAML για τις Windows Phone εφαρμογές, και δεν θα πρέπει να χρησιμοποιείται το για τις τρέχουσες εφαρμογές. 5.6 Δήλωση αντικειμένων Ένα αρχείο XAML έχει πάντα ακριβώς ένα στοιχείο το οποίο αποτελεί το root του, το οποίο δηλώνει ένα αντικείμενο που θα είναι το εννοιολογικό root κάποιας δομής προγραμματισμού, όπως μια σελίδα, ή η γραφική αναπαράσταση αντικειμένου του ολικού χρόνου εκτέλεσης της εφαρμογής. Σχετικά με την σύνταξη της XAML, υπάρχουν τρεις τρόποι για να δηλωθούν τα αντικείμενα: Άμεσα, χρησιμοποιώντας object element syntax (σύνταξη αντικείμενου στοιχείου): Χρησιμοποιείται το άνοιγμα και το κλείσιμο ετικετών για να δημιουργηθεί ένα αντικείμενο, όπως ένα στοιχείο σε XML μορφή. Μπορεί να χρησιμοποιηθεί αυτή η σύνταξη για να δηλωθούν τα root αντικείμενα ή να δημιουργηθούν εμφωλευμένα αντικείμενα που καθορίζουν τιμές ιδιοτήτων. Έμμεσα, χρησιμοποιώντας attribute syntax (σύνταξη γνωρισμάτων ή ιδιοτήτων): Χρησιμοποιεί μια ενσωματωμένη τιμή συμβολοσειράς για τη δήλωση ενός αντικειμένου. Στην πραγματικότητα, αυτό θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία στιγμιότυπου οποιουδήποτε αντικειμένου εκτός από το root. Μπορεί να χρησιμοποιηθεί η σύνταξη αυτή, για να οριστεί η απόδοση τιμής σε μία ιδιότητα. Αυτός είναι για τον XAML επεξεργαστή ένας έμμεσος τρόπος λειτουργίας, γιατί 56

58 πρέπει να υφίσταται κάποια διαδικασία που να ξέρει πώς να δημιουργείται ένα νέο αντικείμενο γνωρίζοντας ποια ιδιότητα ορίζεται, τα τυπικά χαρακτηριστικά του συστήματος αυτής της ιδιότητας, καθώς και το παρεχόμενο της τιμή της συμβολοσειράς. Συνήθως, αυτό σημαίνει ότι ο τύπος ή η συγκεκριμένη ιδιότητα υποστηρίζει ή ένα μετατροπέα τύπου που μπορεί να επεξεργαστεί την είσοδο συμβολοσειράς, ή έναν αναλυτή XAML που επιτρέπει μια εγγενή μετατροπή. Χρησιμοποιώντας markup επεκτάσεις(extensions): θα τις δούμε αναλυτικότερα σε επόμενη παράγραφο, του τρέχοντος κεφαλαίου. Αυτό δεν σημαίνει ότι πάντα υπάρχει η επιλογή οποιουδήποτε τρόπου σύνταξης για τη δημιουργία του αντικειμένου σε ένα δεδομένο λεξικό της XAML. Μερικά αντικείμενα από το λεξικό μπορεί να δημιουργηθούν μόνο με τη χρήση της σύνταξης object element syntax. Ένας μικρός αριθμός των αντικειμένων μπορεί να δημιουργηθεί μόνο με τον ορισμό αρχικά, της τιμής της ιδιότητας του αντικειμένου. Στην πραγματικότητα, τα αντικείμενα που μπορούν να δημιουργηθούν είτε με τη σύνταξη object element syntax είτε με τη σύνταξη attribute syntax εμφανίζονται σπάνια στα Windows Phone. Ακόμη και σε περίπτωση που είναι δυνατόν και οι δύο μορφές σύνταξης να χρησιμοποιηθούν, μία από τις μορφές σύνταξης τείνει να είναι το απόλυτο ή πλέον κατάλληλο σενάριο μορφής για χρήση. Εκτός από τον ορισμό ενός αντικειμένου με τρόπο που ισοδυναμεί με στιγμιότυπο αυτό το αντικείμενο, υπάρχουν και τεχνικές που μπορούν να χρησιμοποιηθούν σε XAML για την αναφορά υπαρχόντων αντικειμένων. Τα αντικείμενα μπορεί να προσδιορισθούν είτε σε άλλες περιοχές της XAML, ή υπάρχουν εμμέσως μέσω κάποιας συμπεριφοράς της πλατφόρμας και αυτό είναι εφαρμογή ή προγραμματιστικά μοντέλα Δήλωση ενός αντικειμένου με χρήση της object element syntax Για τη δήλωση ενός αντικειμένου με τη χρήση object element syntax, μπορεί η ετικέτα να γραφτεί, χρησιμοποιώντας την παρακάτω μορφή, όπου το ObjectName είναι το όνομα του τύπου, του οποίου δημιουργείται το στιγμιότυπο. <objectname> </ objectname> Το ακόλουθο παράδειγμα είναι με τη χρήση object element syntax με στόχο, να γίνει η δήλωση ενός αντικειμένου καμβά. XAML <Canvas> </Canvas> Πολλά αντικείμενα των Windows Phone, όπως το Canvas, μπορεί να περιέχουν και άλλα αντικείμενα. 57

59 XAML <Canvas> <Rectangle> </Rectangle> </Canvas> Για ευκολία (και ως μέρος της γενικής σχέσης XAML και XML), αν το αντικείμενο δεν περιέχει άλλα αντικείμενα, μπορεί το αντικείμενο να δηλωθεί χρησιμοποιώντας ένα αυτόματο κλείσιμο ετικέτας αντί για ένα ζευγάρι ανοίγματος / κλεισίματος, όπως φαίνεται από την <Rectangle /> ετικέτα στο παρακάτω παράδειγμα. XAML <Canvas> <Rectangle /> </Canvas> Δήλωση ενός αντικειμένου με χρήση της attribute syntax Σε ορισμένες περιπτώσεις όπου η τιμή της ιδιότητας δεν αποτελεί γνώρισμα της γλώσσας, όπως ένα string, μπορεί να χρησιμοποιηθεί η σύνταξη attribute syntax τόσο για την δημιουργία στιγμιότυπου του αντικειμένου το οποίο ορίζει την ιδιότητα, όσο και για τον καθορισμό κάποιων ιδιοτήτων κλειδιών που καθορίζουν το νέο αντικείμενο Δήλωση ενός αντικειμένου με χρήση Initialization Τext Κάποιες φορές μπορεί να γίνει δήλωση αντικειμένων, μαζί με ένα κείμενο που εμπεριέχει αρχικές τιμές που συνδέονται με την δημιουργία τους. Στη XAML, αυτή η τεχνική και σύνταξη ονομάζεται, initialization text (αρχικοποίηση κειμένου). Εννοιολογικά, το initialization text είναι παρόμοιο με την κλήση ενός κατασκευαστή που έχει παραμέτρους, αλλά ο εσωτερικός XAML parser συνήθως το κάνει στην πραγματικότητα. Το initialization text είναι χρήσιμο στα Windows Phone για τον ορισμό αρχικών τιμών και κάποιων δομών. Αυτή η τεχνική χρησιμοποιείται, αν πρέπει η δομή ενός στιγμιότυπου να δημιουργηθεί στα πλαίσια ενός λεξικού πόρων, διότι υπάρχει σκοπός να διαμοιραστεί αυτή η τιμή της δομής σε πολλαπλές target (στοχευόμενες) ιδιότητες. Σε κάποιες δομές, δεν μπορεί να χρησιμοποιηθεί η σύνταξη attribute syntax για να καθοριστούν οι τιμές της δομής. Δομές στις οποίες παρουσιάζεται αυτό το θέμα είναι οι εξής: GridLength; Color. 58

60 5.7 Ρύθμιση ιδιοτήτων Οι ιδιότητες μπορούν να οριστούν σε αντικείμενα που δηλώνονται με τη χρήση object element σύνταξης. Υπάρχουν πολλοί τρόποι για να οριστούν οι ιδιότητες στη XAML: Με τη χρήση της attribute syntax. Με τη χρήση της property element syntax. Με τη χρήση της content element syntax. Με τη χρήση της collection syntax ( η οποία είναι συνήθως απεριόριστη). Όπως και με τη δήλωση αντικειμένου, αυτή η λίστα τεχνικών για τον καθορισμό των ιδιοτήτων των αντικειμένων σε XAML, δεν συνεπάγεται ότι, μια συγκεκριμένη ιδιότητα μπορεί να οριστεί με οποιαδήποτε από τις τεχνικές. Κάποιες ιδιότητες υποστηρίζουνε μόνο μια από αυτές τις τεχνικές. Ορισμένες ιδιότητες θα μπορούσανε να υποστηρίξουνε συνδυασμούς αυτών. Για παράδειγμα, μια ιδιότητα που υποστηρίζει content element syntax θα μπορούσε να υποστηρίξει επίσης, μια πιο αναλυτική μορφή μέσω της property element syntax, ή εναλλακτικά μέσω της attribute syntax. Αυτό εξαρτάται τόσο από την ιδιότητα όσο και από τον τύπο του αντικειμένου που χρησιμοποιεί η ιδιότητα. Υπάρχουν επίσης ιδιότητες σε αντικείμενα στα Windows Phone, που δεν μπορούνε να οριστούνε σε XAML, με κανέναν τρόπο, και μπορούνε μόνο μέσω κώδικα. Μια ιδιότητα μόνο για ανάγνωση δεν μπορεί να οριστεί με οποιονδήποτε τρόπο, είτε μέσω XAML είτε μέσω κώδικα, εκτός αν υπάρχει ένας πρόσθετος μηχανισμός. Αυτό μπορεί να προκαλέσει μια υπερφόρτωση του κατασκευαστή που ορίζει την εσωτερική αναπαράσταση της ιδιότητας,μια βοηθητική μέθοδος που δεν είναι αυστηρά το accessor property ή το calculated property. Μια υπολογίσιμη ιδιότητα στηρίζεται στις τιμές των άλλων ιδιοτήτων ανάθεσης και ίσως σε μια υπηρεσία ή σε μια συμπεριφορά που επηρεάζει την τιμή της ιδιότητας. Τα χαρακτηριστικά αυτά, είναι διαθέσιμα στο σύστημα εξαρτήσεων μεταξύ των ιδιοτήτων Ρύθμιση μιας ιδιότητας με χρήση attribute syntax Χρησιμοποιώντας την ακόλουθη σύνταξη, όπου το ObjectName είναι το αντικείμενο που δημιουργείται, το propertyname είναι το όνομα της ιδιότητας που ορίζεται σε αυτό το αντικείμενο, και το propertyvalue είναι η τιμή που ορίζεται. <objectname propertyname="propertyvalue".../> -or- <objectname propertyname="propertyvalue">...<!--στοιχεία παιδιά --> </objectname> Οι παραπάνω τύποι σύνταξης δίνουν τη δυνατότητα να δηλωθεί ένα αντικείμενο και να οριστεί μια ιδιότητα σε αυτό. Παρά το γεγονός ότι στο πρώτο παράδειγμα είναι ένα μόνο στοιχείο markup, στην πραγματικότητα υπάρχουν διακριτά βήματα σε σχέση με το πώς ένας XAML επεξεργαστής αναλύει αυτό το markup. Πρώτον, η παρουσία του στοιχείου του αντικειμένου υποδηλώνει ότι πρέπει να αρχικοποιηθεί ένα νέο αντικείμενο 59

61 ObjectName. Μόνο αν υπάρξει ένα τέτοιο στιγμιότυπο μπορεί η ιδιότητα propertyname να οριστεί σε αυτό. Το ακόλουθο παράδειγμα χρησιμοποιεί σύνταξη attribute syntax για να ορίσει τέσσερα χαρακτηριστικά, το Name, το Width, το Height και το Fill ενός αντικειμένου Rectangle. <Rectangle Name="rectangle1" Width="100" Height="100" Fill="Blue" /> Αν υπήρχε μια άμεση όψη για το πώς ο αναλυτής XAML ερμηνεύει αυτή τη σήμανση και καθορίζει το δέντρο του αντικειμένου, ο αντίστοιχος κώδικας θα μπορούσε να μοιάζει με τον ακόλουθο ψευδοκώδικα: Rectangle rectangle1 = new Rectangle(); rectangle1.width=100.0; rectangle1.height=100.0; rectangle1.fill = new SolidColorBrush(Colors.Blue); Η πρώτη γραμμή είναι μια κλήση του προεπιλεγμένου κατασκευαστή. Σημειώνεται ότι η τιμή του Name χρησιμοποιείται ως το στιγμιότυπο του ονόματος ώστε να εκχωρηθεί το αποτέλεσμα στον κατασκευαστή. Εκτός από το Name, η σειρά ανάθεσης από τη δεύτερη γραμμή έως και την τέταρτη γραμμή του ψευδοκώδικα παραπάνω είναι απροσδιόριστη. Με τους κανόνες της XAML, ένας XAML parser πρέπει να είναι ικανός να ορίσει αυτές τις ιδιότητες σε κάθε σειρά αλλά και κάθε φορά που το στιγμιότυπο δημιουργείται Ρύθμιση μιας ιδιότητας με χρήση property element syntax Πολλές ιδιότητες των Windows Phone μπορούνε να ρυθμιστούνε με τη χρήση property element syntax. Για να χρησιμοποιηθεί η σύνταξη property element syntax, θα πρέπει να είναι δυνατό να προσδιοριστεί ένα νέο στιγμιότυπο ενός αντικειμένου για να "γεμίσει" την τιμή της ιδιότητας του στοιχείου. Για να χρησιμοποιηθεί η σύνταξη property element syntax, μπορούν να δημιουργηθούν XML στοιχεία για την ιδιότητα που πρέπει να ρυθμιστεί. Τα συγκεκριμένα στοιχεία είναι σε μορφή <object.property>. Στο πρότυπο της XML, το στοιχείο αυτό θα μπορούσε να θεωρηθεί απλώς ως ένα στοιχείο που έχει μια τελεία στο όνομα του. Ωστόσο, στην XAML, η τελεία στο όνομα του στοιχείου καθορίζει το στοιχείο ως στοιχείο ιδιότητας, με την ιδιότητα να γίνεται η ιδιότητα του αντικειμένου. Στην ακόλουθη γραμματική, το property είναι το όνομα της ιδιότητας που θα οριστεί και το propertyvalueasobjectelement είναι ένα νέο στοιχείο αντικειμένου που δηλώνει ένα νέο αντικείμενο, το οποίο είναι ένα τύπος τιμής όπου η ιδιότητα περιμένει. <object> <object.property> propertyvalueasobjectelement </ object.property > </ object> 60

62 Το παρακάτω παράδειγμα χρησιμοποιεί την σύνταξη property element syntax για να ορίσει το γέμισμα ενός Rectangle (ορθογωνίου) με ένα στοιχείο αντικειμένου SolidColorBrush. (Στο SolidColorBrush, το χρώμα καθορίζεται από τη χρήση σύνταξης attribute syntax) Το αποτέλεσμα αυτής της XAML είναι παρόμοιο με το προηγούμενο παράδειγμα XAML το οποίο έθετε το Fill χρησιμοποιώντας σύνταξη attribute syntax. XAML <Rectangle Name="rectangle1" Width="100" Height="100" > <Rectangle.Fill> <SolidColorBrush Color="Blue"/> </Rectangle.Fill> </Rectangle> Ρύθμιση μιας ιδιότητας με χρήση XAML content syntax Μερικοί τύποι των Windows Phone καθορίζουν μια ιδιότητα που επιτρέπει μία σύνταξη content element syntax στη XAML. Στη συγκεκριμένη σύνταξη δίνεται η δυνατότητα παράλειψης του στοιχείου της ιδιότητας για αυτή την ιδιότητα, και μπορεί να ορίσει την ιδιότητα, δίνοντας περιεχόμενο μεταξύ των ετικετών αυτού του στοιχείου. Αυτό το περιεχόμενο είναι συνήθως ένα ή περισσότερα στοιχεία αντικειμένων. Αυτό είναι γνωστό ως σύνταξη XAML content syntax. Αν η σύνταξη XAML content syntax είναι διαθέσιμη, θα εμφανιστεί στις ενότητες XAML Usage, για αυτή την ιδιότητα στα έγγραφα αναφοράς των Windows Phone. Για παράδειγμα, η σελίδα των Παιδιών (Child) ιδιοτήτων του Border παρουσιάζει σύνταξη content syntax αντί της σύνταξης property element syntax για τον καθορισμό της τιμής του ενιαίου αντικείμενου Child ενός Border. Το ακόλουθο παράδειγμα προσομοιώνει αυτή τη χρήση: XAML <Border> <Button.../> </Border> Αν η ιδιότητα έχει χαρακτηριστεί ως XAML content ιδιότητα υποστηρίζει, ένα ευέλικτο μοντέλο αντικειμένου, όπου ο τύπος της ιδιότητας είναι αντικείμενο, ή συγκεκριμένα είναι τύπου String, τότε η σύνταξη του XAML content μπορεί να χρησιμοποιηθεί για να τοποθετηθεί ένα καθαρό String σαν το περιεχόμενο μεταξύ του ανοίγματος και κλεισίματος μιας ετικέτας αντικειμένου. Για παράδειγμα, η σελίδα της ιδιότητας Text για το TextBlock παρουσιάζει μια εναλλακτική σύνταξη XAML που χρησιμοποιεί σύνταξη XAML content syntax, αντί της σύνταξης attribute syntax προκειμένου να τεθεί μια τιμή συμβολοσειράς για το Text. Το παράδειγμα που ακολουθεί παραθέτει την χρήση και ορίζει την ιδιότητα Text του TextBlock χωρίς να καθορίζει ρητά την ιδιότητα Text. Το Text 61

63 ορίζεται είτε χρησιμοποιώντας αυτό που η XML αναγνωρίζει ως περιεχόμενο ή εσωτερικό κείμενο, αντί για τη χρήση ενός attribute, είτε δηλώνοντας ένα στοιχείο αντικειμένου. XAML <TextBlock>Hello!</TextBlock> Ρύθμιση μιας ιδιότητας με χρήση collection syntax Στην XAML, υπάρχουν αρκετές παραλλαγές της σύνταξης collection syntax. Μπορεί στην αρχή να φαίνεται ότι η XAML επιτρέπει μόνο τον ορισμό ιδιοτήτων συλλογής μόνο για ανάγνωση. Στην πραγματικότητα, η δυνατότητα που παρέχει η XAML είναι η προσθήκη στοιχείων σε μια υπάρχουσα συλλογή. Η γλώσσα XAML και οι επεξεργαστές XAML συμπεριλαμβανομένου την υποστήριξη της XAML βασίζονται σε μια σύμβαση υποστήριξης τέτοιων τύπων συλλογής προκειμένου να επιτρέπεται αυτή η σύνταξη. Γενικά, η ιδιότητα του τύπου συλλογής που κατέχει τα στοιχεία της συλλογής (όπως ένα ευρετήριο ή αντικείμενα της ιδιότητας) δεν είναι παρούσα στη XAML σύνταξη. Για τις συλλογές, αυτό που είναι πραγματικά απαραίτητο για να γίνει κάτι χρήσιμο με μια συλλογή από τη XAML δεν είναι απαραίτητα μια ιδιότητα, αλλά μια μέθοδος: η μέθοδος Add(Προσθήκη). Η κλήση της μεθόδου Add είναι η προαναφερθείσα ενέργεια. Όταν ο επεξεργαστής XAML συναντά ένα ή περισσότερα στοιχεία ενός αντικειμένου εντός της σύνταξης συλλογής XAML, κάθε τέτοιο αντικείμενο δημιουργείται για πρώτη φορά χρησιμοποιώντας τις δικές του ετικέτες αντικειμένου, στη συνέχεια κάθε νέο αντικείμενο προστίθεται στην περιέχουσα συλλογή, ώστε να γίνει η δήλωση καλώντας τη μέθοδο Add της συλλογής. Το ακόλουθο παράδειγμα δείχνει μια ιδιότητα με σύνταξη συλλογής που χρησιμοποιεί έναν τύπο συλλογής που είναι δομημένος (μπορεί να οριστεί και να προετοιμαστεί για την πραγματική συλλογή ως ένα στοιχείο αντικειμένου σε XAML). XAML <LinearGradientBrush> <LinearGradientBrush.GradientStops> <!-- Here the GradientStopCollection tag is specified. --> <GradientStopCollection> <GradientStop Offset="0.0" Color="Red" /> <GradientStop Offset="1.0" Color="Blue" /> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> Εν τούτοις, για μια ιδιότητα στα Windows Phone που παίρνει μια συλλογή, ένας αναλυτής XAML γνωρίζει τον τύπο της συλλογής έμμεσα, βασιζόμενος στην ιδιότητα της συλλογής στην οποία εμπεριέχεται. Επομένως, μπορεί να παραληφθεί το στοιχείο του αντικειμένου για την ίδια τη συλλογή, όπως φαίνεται στο παρακάτω παράδειγμα. 62

64 XAML <LinearGradientBrush> <LinearGradientBrush.GradientStops> <!-- no explicit new GradientStopCollection, parser knows how to find or create --> <GradientStop Offset="0.0" Color="Red" /> <GradientStop Offset="1.0" Color="Blue" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> Επίσης, υπάρχουν ιδιότητες που είναι ιδιότητες συλλογής, αλλά επίσης εντοπίζονται ως ιδιότητες περιεχομένου για την κλάση. Αυτή είναι η περίπτωση με την ιδιότητα GradientStops η οποία χρησιμοποιείται στα προηγούμενα παραδείγματα, καθώς και σε πολλές άλλες ιδιότητες των Windows Phone. Σε αυτές τις συντάξεις, μπορεί να παραληφθεί, επίσης, το στοιχείο της ιδιότητας. Αυτό οδηγεί στην ακόλουθη σήμανση: XAML <LinearGradientBrush> <GradientStop Offset="0.0" Color="Red" /> <GradientStop Offset="1.0" Color="Blue" /> </LinearGradientBrush> Αυτός ο συνδυασμός της συλλογής και του content syntax είναι συχνότεροι στις κλάσεις που χρησιμοποιούνται ευρέως για τον σύνθετο έλεγχο, όπως πίνακες, προβολές, ή στοιχεία ελέγχου. Για παράδειγμα, τα ακόλουθα παραδείγματα δείχνουν την ρητή XAML και τον απλούστερο δυνατό τρόπο υλοποίησης XAML για τη σύνθεση δύο UI στοιχείων εντός ενός StackPanel. XAML <!--explicit tags, and UIElementCollection commented--> <StackPanel> <StackPanel.Children> <!--UIElementCollection--> <TextBlock>Hello</TextBlock> <TextBlock>World</TextBlock> <!--/UIElementCollection--> </StackPanel.Children> </StackPanel> <!--simple--> <StackPanel> <TextBlock>Hello</TextBlock> <TextBlock>World</TextBlock> </StackPanel> 63

65 5.8 Markup επεκτάσεις Οι Markup επεκτάσεις είναι μια έννοια της γλώσσας XAML που χρησιμοποιείται πολύ στην XAML των Windows Phone εφαρμογών. Στη σύνταξη XAML attribute syntax, τα άγκιστρα υποδεικνύουν τη χρήση της markup επέκτασης. Η χρήση αυτή οδηγεί την επεξεργασία της XAML ώστε να ξεφύγει από τη γενική μεταχείριση των τιμών των attribute είτε ως κατεξοχήν συμβολοσειρά είτε ως μια συμβολοσειρά άμεσης μετατρέψιμης τιμής. Αντιθέτως, ένας αναλυτής καλεί συνήθως έναν κώδικα που υποστηρίζει ότι η συγκεκριμένη επέκταση markup, βοηθά στην κατασκευή ενός δέντρου αντικείμενου από το markup. Τα Windows Phone υποστηρίζουν τις παρακάτω επεκτάσεις markup που ορίζονται στο προεπιλεγμένο namespace XAML των Windows Phone και είναι κατανοητό από τον XAML αναλυτή του: Binding: υποστηρίζει σύνδεση δεδομένων, η οποία μεταθέτει την τιμή της ιδιότητας μέχρι να ερμηνευτεί από το πλαίσιο των δεδομένων. StaticResource: υποστηρίζει την αναφορά των τιμών των πόρων που ορίζονται σε ένα ResourceDictionary. TemplateBinding: υποστηρίζει πρότυπα controls σε XAML που μπορούν να αλληλεπιδράσουν με τις ιδιότητες του κώδικα του πρότυπου αντικειμένου. RelativeSource: επιτρέπει μια ιδιαίτερη μορφή δεσμευτικών προτύπων σύνδεσης. Τα Windows Phone υποστηρίζουν, επίσης, μια πολύ βασική επέκταση markup που ορίζεται στη XAML γλώσσα XAML namespace, το x: Null. 5.9 Μετατροπείς τύπων Ένας μετατροπέας τύπων είναι η εννοιολογική οντότητα που παίρνει μια τιμή παραμέτρου από τη XAML, και χρησιμοποιεί την τιμή συμβολοσειράς για να δημιουργήσει ως αποτέλεσμα μια τιμή που δεν είναι πραγματικά μια συμβολοσειρά. Οι μετατροπείς τύπων συνδυάζονται με τους τύπους υποστηρίξεως των αντικειμένων ή κάποιες φορές με τις ειδικές ιδιότητες τους. Η πρόσβαση στο μετατροπέα τύπων δεν απαιτεί καμία ειδική χρήση από markup XAML. Ένας επεξεργαστής XAML διαβάζει τους τύπους υποστήριξης, ως μέρος μίας συμπεριφοράς γενικού τύπου χαρτογράφησης όπου εκτελεί ένας επεξεργαστής XAML, καθορίζει αυτοί οι τύποι να υποστηρίζουν ένα μετατροπέα τύπου, και απευθύνεται σε αυτόν τον μετατροπέα τύπων όταν χρειαστεί για να λάβει τις τιμές. Όπως αναφέρθηκε προηγουμένως στην ενότητα "Ιδιότητες Ρύθμισης", οι μετατροπείς τύπων επιτρέπουν σύνταξη attribute στις περιπτώσεις όπου η σύνταξη property μπορεί να απαιτείται. Σε γενικές γραμμές αυτό γίνεται με σκοπό την απλοποίηση των εντύπων markup. Κάποιοι μετατροπείς τύπων έχουν σχετικά απλή συμπεριφορά για τη μετατροπή. Για παράδειγμα, ο NullableBoolConverter υποστηρίζει τη δυνατότητα να καθοριστούν οι 64

66 τρεις πιθανές καταστάσεις της Nullable <bool> τιμής ως τις συμβολοσειρές true (αληθές), false (ψευδές), και x: Null. Στα έγγραφα αναφοράς των Windows Phone, η XAML σύνταξη που αυτού του τύπου οι μετατροπείς επιτρέπουν δεν βρίσκονται συνήθως στις κλάσεις υποστήριξης TypeConverter. Αντιθέτως, υπάρχουν λεπτομέρειες σχετικά με τη σύνταξη attribute στις σελίδες αναφοράς για κάθε αντικείμενο ή ιδιότητα που μπορεί να χρησιμοποιήσει αυτή την TypeConverter δυνατότητα σύνταξης. Τυπικά, δεν υπάρχει καμία ανάγκη να επικαλούνται οι μέθοδοι TypeConverter απευθείας στα Windows Phone. Ένας μικρός αριθμός των μετατροπέων τύπων υποστηρίζει μια αρκετά περίπλοκη "μίνι γλώσσα" που μπορεί να απαιτήσει έναν οδηγό σύνταξης ή γραμματικής. Μετατροπείς τύπων υπάρχουν κατά κύριο λόγο στα Windows Phone ως υποστήριξη κλάσεων της XAML και λειτουργούν ως κλάσεις βάσης για οποιονδήποτε συγγραφικό μετατροπέα τύπων για να στηρίξουν ένα συγκεκριμένο τύπο Events Η XAML είναι μία δηλωτική γλώσσα για τα αντικείμενα και τις ιδιότητές τους, αλλά περιλαμβάνει επίσης μια σύνταξη για την τοποθέτηση χειρισμού συμβάντων(event handlers) σε αντικείμενα στο markup. Η σύνταξη των events XAML μπορεί να επεκταθεί από συγκεκριμένες τεχνολογίες όπως τα Windows Phone, τα οποία ενσωματώνουν τα XAML-δηλωμένα event μέσα από το μοντέλο προγραμματισμού. Μπορεί να καθοριστεί το όνομα του σχετικού γεγονότος ως χαρακτηριστικό όνομα για το αντικείμενο, όπου "συμβαίνει" το event. Για την χαρακτηριστική τιμή (attribute value), μπορεί να καθοριστεί το όνομα της συνάρτησης event-handler που έχει οριστεί στον κώδικα. Ο επεξεργαστής XAML χρησιμοποιεί αυτό το όνομα για να δημιουργήσει μια αναπαράσταση εκπροσωπώντας το δέντρο του αντικειμένου, και προσθέτει το συγκεκριμένο handler σε μια εσωτερική λίστα από handlers. Οι περισσότερες εφαρμογές των Windows Phone δημιουργούνται τόσο από το markup όσο και από τον πηγαίο κώδικα. Μέσα σε ένα project, η XAML είναι γραμμένη ως ένα αρχείο.xaml και μια γλώσσα CLR όπως η Visual Basic ή η C # χρησιμοποιείται για να γραφτεί ένα αρχείο πίσω - κώδικα. Όταν ένα αρχείο XAML είναι μεταγλωττισμένο σε markup ως μέρος μίας build ενέργειας ενός Windows Phone project, η θέση του αρχείου με τον κώδικα XAML για κάθε σελίδα XAML ταυτίζεται με τον καθορισμό ενός namespace και μίας κλάσης ως x:class attribute του στοιχείου root της σελίδας XAML XAML και XML Η γλώσσα XAML βασίζεται θεμελιωδώς στη γλώσσα XML. Κάθε έγκυρο αρχείο XAML είναι εξ ορισμού ένα έγκυρο αρχείο XML. Ωστόσο, η XAML σχετικά με την XML επεκτείνεται σημαντικά. Συγκεκριμένα, η αντιμετώπιση στην έννοια του σχήματος είναι αρκετά διαφορετική, λόγω της σχέσης της με την έννοια υποστήριξης τύπων, επίσης η XAML προσθέτει στοιχεία γλώσσας όπως επισυναπτόμενα μέλη και επεκτάσεις markup. Στη XAML ισχύει η attribute κωδικοποίηση (encoding). Μόνο οι UTF-8 και UTF-16 κωδικοποιήσεις υποστηρίζονται. Η UTF-32 δεν υποστηρίζεται. 65

67 5.12 Case sensitivity στη XAML Η XAML ως γλώσσα είναι case-sensitive. Αυτό είναι μία άλλη συνέπεια που δηλώνει ότι η XAML βασίζεται σε XML, η οποία είναι case-sensitive. Τα ονόματα των XAML στοιχείων και γνωρισμάτων είναι case-sensitive. Η τιμή ενός γνωρίσματος είναι ενδεχομένως case-sensitive. Αυτό εξαρτάται από το πώς η τιμή του γνωρίσματος αντιμετωπίζεται για συγκεκριμένες ιδιότητες. 66

68 5.13 Αναφορές και Βιβλιογραφία 5 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ 1. paces 67

69 Κεφάλαιο 6 - Silverlight 6.1 Σχετικά με το Silveright Το περιβάλλον διασύνδεσης περιλαμβάνει ένα εκλεπτυσμένο όνομα για το αντικείμενο που βλέπουν οι χρήστες όταν χρησιμοποιούν την εφαρμογή, τα κουμπιά, τα κείμενα, τις ετικέτες και τις εικόνες που ο χρήστης έρχεται σε επαφή για να κάνει αυτό που θέλει. Μέρος της δουλειάς του προγραμματιστή είναι να δημιουργήσει αυτό το περιβάλλον. Να δημιουργήσει τις κατάλληλες συμπεριφορές πίσω από την οθόνη της συσκευής, έτσι ώστε με την χρήση της εφαρμογής, ο χρήστης να παίρνει αυτό που θέλει από αυτή. 6.2 Σχεδίαση προγράμματος με το Silverlight Προκύπτει ότι οι περισσότεροι προγραμματιστές δεν είναι τόσο καλοί στο να σχεδιάζουν ελκυστικά περιβάλλοντα διασύνδεσης. Μία πραγματική εταιρία θα προσλάβει σχεδιαστές γραφικών για την δημιουργία κάποιου καλλιτεχνικού περιβάλλοντος. Ο ρόλος του προγραμματιστή θα είναι απλώς να γράψει τον κώδικα πάνω στον οποίο θα τρέχει το πρόγραμμα. Το Silverlight βλέπει αυτή την διαδικασία ενδυναμώνοντας ένα διαχωρισμό μεταξύ της προβολής της οθόνης και του κώδικα ο οποίος την ελέγχει. Έτσι είναι πολύ πιο εύκολο για ένα προγραμματιστή να δημιουργήσει το αρχικό περιβάλλον διασύνδεσης που θα μπορούσε αργότερα να εμπλουτίσει ένας σχεδιαστής. Επίσης είναι δυνατόν να χρησιμοποιήσει ένα έτοιμο περιβάλλον διασύνδεσης και να προσαρμόσει τις συμπεριφορές που θέλει στα ήδη υπάρχοντα στοιχεία. 6.3 Εργαλεία ανάπτυξης εφαρμογής Ο σχεδιαστής του περιβάλλοντος διασύνδεσης χρησιμοποιεί το πρόγραμμα Expression Blend και ο προγραμματιστής το Visual Studio για την συγγραφή του κώδικα. Το σύστημα του Silverlight παρέχει έναν εύκολο τρόπο για τον συνδυασμό των δύο προγραμμάτων. Το Windows Phone Software Development Kit εμπεριέχει τις εκδόσεις του Visual Studio και του Expression Blend που μπορούν να χρησιμοποιηθούν με αυτό τον τρόπο. 68

70 6.4 Το στυλ σχεδίασης Metro Το Windows Phone από σχεδιαστικής απόψεως φέρνει ένα νέο στυλ σχεδιαστικών κατευθυντήριων γραμμών, το οποίο λέγεται «Metro». Αυτό ορίζει το πώς πρέπει να προβάλλονται λειτουργικά στοιχεία και καθορίζει μία σειρά από κριτήρια για το πώς πρέπει να φαίνεται η εφαρμογή ούτως ώστε να είναι όμορφη. Αυτό το στυλ καθεστωτικά βρίσκεται σε κάθε γωνιά του λογισμικού και παρέχεται στον προγραμματιστή μέσα από τα προγράμματά για να το χρησιμοποιήσει κατά την ανάπτυξη της εφαρμογής του. Μια καλή συνέπεια αυτού είναι ότι χρησιμοποιώντας τα κουμπιά, τα text fields και τα λοιπά στοιχεία που παρέχονται στο Visual Studio θα προσκολληθούν αυτόματα οι κατευθυντήριες γραμμές του στυλ. 6.5 Στοιχεία και Αντικείμενα του Silverlight Από προγραμματιστικής απόψεως, κάθε ένα από τα στοιχεία που προβάλλονται στην οθόνη, είναι στην ουσία αντικείμενα λογισμικού. Ένα αντικείμενο είναι μία μίξη συμπεριφορών και δεδομένων. Εάν φτιάχναμε μια εφαρμογή για να παρατηρούμε τραπεζικούς λογαριασμούς, θα δημιουργούσαμε μία κλάση για να κρατάμε τις πληροφορίες για κάθε λογαριασμό: Public class Account Private decimal balance; Private string name; Private string GetName; () Return name; Public bool SetName; (string newname) // Final version will validate the name Name = newname ; Return true; 69

71 //other get and set methods here Αυτή η κλάση κρατάει το ποσό των χρημάτων που περιέχει (στο στοιχείο balance), καθώς και το όνομα του ιδιοκτήτη του λογαριασμού (στο στοιχείο Name). Εάν επιθυμούμε την δημιουργία ενός νέου λογαριασμού θα γράφαμε: Account rob = new Account(); rob.setname("rob"); Έτσι δημιουργούμε ένα νέο λογαριασμό. Μετά ορίζει το όνομα αυτού ως «Rob». Τα αντικείμενα είναι επίσης πολύ χρήσιμα στο να προβάλουμε στοιχεία με τα οποία θέλουμε να δουλέψουμε, στην οθόνη. Λαμβάνουμε υπόψη το παρακάτω παράδειγμα: 70

72 Αυτό είναι ένα πολύ απλό πρόγραμμα το οποίο λέγεται «Adding Machine», δηλαδή μηχανή πρόσθεσης, και το χρησιμοποιούμε για πολύ απλές προσθέσεις. <λειτουργεί πάρα πολύ απλά, εισάγουμε τα δυο νούμερα στα ΤextΒoxes στο πάνω μέρος της οθόνης και πατώντας το κουμπί equals βλέπουμε το αποτέλεσμα της πρόσθεσης. Αυτή τη στιγμή μας δείχνει 0 συν 0 ίσον 0. Αυτό προκύπτει από τις αρχικοποιημένες τιμές που έχουμε δώσει στα text boxes. Παρακάτω εξηγούμε τα στοιχεία που προβάλλονται στην οθόνη: 1. Ο μικρός τίτλος «Adding Machine». Είναι γνωστός στο στυλ κατευθυντήριας γραμμής του Windows Phone ως «Application Title». 2. Ο μεγαλύτερος τίτλος «Add». Είναι γνωστός ως «Page title». 3. Το πρώτο textbox, όπου γράφουμε το πρώτο νούμερο. 4. Ένα αντικείμενο κειμένου με τον χαρακτήρα Το δεύτερο textbox, όπου γράφουμε το δεύτερο νούμερο. 6. Ένα κουμπί, το οποίο πατώντας το εμφανίζεται το αποτέλεσμα. 7. Ένα textbox που εμφανίζεται το αποτέλεσμα, όταν πατιέται το κουμπί. Κάθε ένα από αυτά τα αντικείμενα, έχει μια συγκεκριμένη θέση στην οθόνη, ένα συγκεκριμένο μέγεθος κειμένου καθώς και πολλές ιδιότητες. Μπορούμε να αλλάξουμε το χρώμα του κειμένου στο text box, είτε αυτό είναι ευθυγραμμισμένο προς τα δεξιά είτε στα αριστερά είτε στο κέντρο του επισυναπτόμενου box, όπως και πολλές άλλες ιδιότητες. Υπάρχουν τρείς διαφορετικοί τύποι στοιχείων στην οθόνη μας: 1. TextBox επιτρέπει στον χρήστη να εισάγει κείμενο στο πρόγραμμα. 2. TextBlock ένα block κειμένου το οποίο απλά μεταφέρει πληροφορίες. 3. Button κάτι τo οποίο μπορούμε να πατήσουμε για να προκαλέσουμε κάποια γεγονότα στο πρόγραμμά μας. Με λίγη σκέψη, μπορούμε να διαχωρίσουμε τις ιδιότητες αυτών των στοιχείων σε δύο κατηγορίες, όλες αυτές τις οποίες τα στοιχεία χρειάζονται να έχουν, για παράδειγμα την θέση τους στην οθόνη, και αυτές που είναι συγκεκριμένες για τον κάθε τύπο του στοιχείου. Λόγου χάρη, ένα TextBox χρειάζεται να καταγράψει την θέση του στοιχείου, όπου το κείμενο θα μπορεί να εισαχθεί. Από σχεδιαστικής άποψης, αυτό έχει πολύ καλή εφαρμογή για την ιεραρχία των κλάσεων. 71

73 Παραπάνω φαίνεται η ιεραρχία που οι σχεδιαστές Silverlight χτίζουν. Η κλάση που είναι στην κορυφή, λέγεται Framework Element. Περιέχει όλες τις πληροφορίες που είναι κοινές σε όλα τα στοιχεία της οθόνης. Κάθε μία από αυτές τις κλάσεις είναι θυγατρική της κεντρικής κλάσης. Τα παιδιά της κληρονομούν όλες τις συμπεριφορές και τις ιδιότητες της θυγατρικής κλάσης και προσθέτουν και τις δικές τους. Στην πραγματικότητα, η σχεδίαση είναι πιο πολύπλοκη σε σχέση με τη σχεδίαση του παραπάνω σχήματος, δηλαδή η κλάση Framework Element είναι θυγατρική της κλάσης UIElement, αλλά έτσι ο προγραμματιστής μπορεί να δει στο περίπου τις αρχές πίσω από τις λειτουργίες. Το να δημιουργήσει μία ιεραρχία κλάσεων έχει πολλά πλεονεκτήματα. Εάν επιθυμεί ένα συνηθισμένο είδος κλάσης TextBox, μπορεί να επεκτείνει το TextBox και τότε να προσθέσει τις ιδιότητες και τις συμπεριφορές που χρειάζεται. Το σύστημα του Silverlight το ενδιαφέρει μόνο να συμπεριφέρεται το ίδιο σε όλες τις λειτουργίες και να μπορεί κάθε λειτουργία να ανταπεξέλθει στις απαιτήσεις του προγράμματος. 72

74 Άρα, ο προγραμματιστής πρέπει να θυμάται ότι όταν ρυθμίζει τα στοιχεία σε μία σελίδα, και όταν δημιουργεί και χειρίζεται τις λειτουργίες, στην πραγματικότητα αλλάζει τις ιδιότητες των αντικειμένων, όπως ακριβώς θα άλλαζε το όνομα και την κατάθεση ενός αντικειμένου «λογαριασμού τραπέζης». Όταν σχεδιάζει ένα περιβάλλον διασύνδεσης για ένα Silverlight, ορίζει τα δεδομένα μέσα στα στοιχεία, για να είναι δυνατή η προβολή τους. 6.6 Τα εργαλεία και η επιφάνεια σχεδίασης Ξεκινάμε περιγράφοντας το πώς δημιουργήθηκε το πρόγραμμα «Adding Machine». Είναι αρκετά εύκολο, όταν ξεκινάμε το Visual Studio και δημιουργούμε ένα project Silverlight μας δείχνει μια νέα, κενή σελίδα και ανοίγοντας την εργαλειοθήκη, ή όπως λέγεται στο Visual Studio, το Tool Box, το οποίο περιέχει όλες τις λειτουργίες που μπορούμε να χρησιμοποιήσουμε: 73

75 Μπορούμε να κατασκευάσουμε το περιβάλλον διασύνδεσης, απλά σέρνοντας τις λειτουργίες έξω από το Tool Box, πάνω στην επιφάνεια σχεδίασης. Παραπάνω βλέπουμε το αποτέλεσμα της πρόσθεσης ενός Text Box στην περιοχή σχεδίασης. Εάν τρέξουμε το πρόγραμμα, ο εξομοιωτής θα μας δώσει το παρακάτω αποτέλεσμα: 74

76 Επειδή όλες οι λειτουργίες είναι ήδη φτιαγμένες με το στιλ «Metro», όπως είναι και το περιβάλλον διασύνδεσης του Windows Phone, η εφαρμογή μας αυτόματα φαίνεται «πραγματική». Ο σχεδιαστής έχει πολλά εργαλεία που μπορούν να ευθυγραμμίσουν τις λειτουργίες, το οποίο είναι αρκετά βολικό. 75

77 6.7 Ιδιότητες των στοιχείων του Silverlight Όταν δώσουμε ένα πρέπων όνομα στο Text Box, μπορούμε να προχωρήσουμε στο να του δώσουμε όλες τις κατάλληλες ιδιότητες που απαιτούνται για το project. Μπορούμε επίσης να αλλάξουμε πολλές από τις ήδη δοσμένες ιδιότητες, όπως το μήκος του text box, το περιθώριο κλπ. Οι τιμές που βλέπουμε στο παράθυρο με τις ιδιότητες, είναι εκείνες που καθορίζουν την συγκεκριμένη θέση και το συγκεκριμένο μέγεθος του στοιχείου στην οθόνη. Εάν σύρουμε το στοιχείο στον σχεδιαστικό χώρο οι τιμές του περιθωρίου θα αλλάξουν αυτόματα. Εάν αλλάξουμε τις τιμές του περιθωρίου από το παράθυρο των ιδιοτήτων το στοιχείο θα μετακινηθεί στον χώρο μόνο του. 6.8 Ιδιότητες του Silverlight και της C#. Όταν αναφερόμαστε στις ιδιότητες των στοιχείων της σελίδας του Silverlight (για παράδειγμα το κείμενο που προβάλλεται στο Text Box), στην πραγματικότητα μιλάμε για τις ιδιότητες των τιμών της κλάσης που υλοποιεί το Text Box. Με άλλα λόγια όταν το πρόγραμμα περιέχει μία δήλωση όπως: resulttextblock.text = "0"; Αυτό θα έχει ως αποτέλεσμα να τρέξει η μέθοδος Set μέσα στο αντικείμενο resulttextblock, το οποίο ορίζει το κείμενο στο Text Block, με μια αποδεκτή τιμή. 76

78 6.9 Αναφορές και Βιβλιογραφία 6 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ 1. &gid=286 77

79 Κεφάλαιο 7 - Εισαγωγή στο Microsoft Visual Studio Express 2012 for Windows Phone 7.1 Γενικά περί Visual Studio Το Microsoft Visual Studio είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης ( IDE ) από τη Microsoft. Χρησιμοποιείται για την ανάπτυξη εφαρμογών κονσόλας και γραφικών διεπαφής χρήστη, μαζί με τα Windows Forms ή WPF εφαρμογές, ιστοσελίδες, εφαρμογές web, υπηρεσίες web και τόσο εγγενή κώδικα μαζί με διαχειριζόμενο κώδικα για όλες τις πλατφόρμες που υποστηρίζονται από τα Microsoft Windows, Windows CE,.NET Framework,.NET Compact Framework, το Microsoft Silverlight κ.α. Το Visual Studio περιλαμβάνει έναν επεξεργαστή κώδικα με υποστήριξη IntelliSense (reflection tool το οποίο ενεργοποιείται κατά τη διαδικασία της γραφής του κώδικα και εμφανίζει ένα pop-up window με όλες τις διαθέσιμες επιλογές), καθώς και code refactoring. Το ολοκληρωμένο πρόγραμμα εντοπισμού σφαλμάτων λειτουργεί τόσο ως ένα πρόγραμμα εντοπισμού σφαλμάτων επιπέδου - πηγής όσο και ως ένα πρόγραμμα εντοπισμού σφαλμάτων επιπέδου - μηχανής. Τα υπόλοιπα ενσωματωμένα εργαλεία περιλαμβάνουν έναν σχεδιαστή φορμών για τη δημιουργία εφαρμογών GUI, web designer, class designer και database schema designer. Αποδέχεται plugins που φροντίζουν για την ενίσχυση της λειτουργικότητας σχεδόν σε κάθε επίπεδο, συμπεριλαμβάνοντας πρόσθετη υποστήριξη για συστήματα ανοικτού κώδικα (όπως το Subversion και το Visual SourceSafe) και την προσθήκη νέων σετ εργαλείων όπως, editors και visual designers για domain-specific languages ή σετ εργαλείων για άλλες πτυχές του κύκλου ανάπτυξης λογισμικού ( όπως το client Team Foundation Server : Team Explorer ). Το Visual Studio υποστηρίζει διαφορετικές γλώσσες προγραμματισμού, με τη βοήθεια των γλωσσικών υπηρεσιών, οι οποίες επιτρέπουν στον επεξεργαστή κώδικα και στο πρόγραμμα εντοπισμού σφαλμάτων την υποστήριξη ( σε διάφορους βαθμούς ) σχεδόν οποιασδήποτε γλώσσας προγραμματισμού. Περιλαμβάνει γλώσσες όπως, C/C++ (διά μέσου Visual C++), VB.NET (μέσω Visual Basic.NET), C# (διά Visual C#), και F# (από Visual Studio 2010). Επίσης, υπάρχει υποστήριξη για άλλες γλώσσες, όπως M, Python, Ruby XML/XSLT, HTML/XHTML, JavaScript και CSS. Υπάρχουν επίσης, ατομικές συγκεκριμένες εκδόσεις γλωσσών του Visual Studio που παρέχουν πιο περιορισμένες γλωσσικές υπηρεσίες για το χρήστη: Microsoft Visual Basic, Visual J#, Visual C#, και Visual C++. Τέλος, η Microsoft παρέχει " Express " εκδόσεις του Visual Studio της, χωρίς κανένα κόστος. Εμπορικές εκδόσεις του Visual Studio μαζί με επιλεγμένες προηγούμενες εκδόσεις, είναι διαθέσιμες δωρεάν στους φοιτητές μέσω του προγράμματος DreamSpark της Microsoft. 78

80 7.2 Visual Studio 2012 H τελική κατασκευή του Visual Studio 2012 ανακοινώθηκε στις 1 Αυγούστου του 2012 και η επίσημη εναρκτήρια εκδήλωση πραγματοποιήθηκε στις 12 Σεπτεμβρίου του ίδιου έτους. Σε αντίθεση με τις προηγούμενες εκδόσεις, το Visual Studio 2012 δεν μπορεί να καταγράψει και να αναπαράγει μακροεντολές και ο macro editor δεν υπάρχει. Ένα σημαντικό νέο χαρακτηριστικό υποστηρίζεται για WinRT και C++ / CX (Component Extensions). Περιλαμβάνεται επίσης, υποστήριξη για C++ AMP (προγραμματισμού GPGPU). Το "Visual Studio 2012 Update 1" (Visual Studio ) κυκλοφόρησε το Νοέμβριο του Σε αυτή την ενημερωμένη έκδοση προστέθηκε υποστήριξη για τους στόχους των Windows XP και επίσης, προστέθηκαν και άλλα νέα εργαλεία και χαρακτηριστικά (π.χ. βελτίωση της διάγνωσης και υποστήριξης δοκιμών για Windows Store apps). Ο πηγαίος κώδικας του Visual Studio 2012 αποτελείται από περίπου 50 εκατομμύρια γραμμές κώδικα. Κάποια από τα πιο σημαντικά χαρακτηριστικά του Visual Studio 2012 είναι τα παρακάτω: Υποστήριξη ανάπτυξης παιχνιδιών Βελτιώσεις ομάδας ανάπτυξης Σημασιολογική ανάλυση κώδικα Υποστήριξη HTML5/CSS3 Ικανότητα να κατασκευαστούνε Metro-style εφαρμογές Microsoft.NET Framework 4.5 LightSwitch IIS Express Υποστήριξη για WinRT Νέος Solution Explorer Νέος SQL Server Object Explorer Ανανεωμένο UI 79

81 7.3 Solution Explorer Παρακάτω βλέπουμε μία απεικόνιση για κάποιο project με τα περιεχόμενα που μας παραθέτει το παράθυρο του Solution Explorer: Περιέχει τον φάκελο MainPage.xaml ο οποίος περιγράφει την εμφάνιση της κεντρικής οθόνης (το UI της εφαρμογής). Ακόμη, περιέχει τις εικόνες που θα χρησιμοποιηθούν μέσα στο project μας. Επίσης, όπως μπορούμε να δούμε, μας δίνεται και ο φάκελος με τον κώδικα code behind που τρέχει πίσω από το xaml. Στο project μας επίσης υπάρχουν όλες οι αναφορές (references) σε όλες τις βιβλιοθήκες του συστήματος, τις οποίες και μπορούμε να χρησιμοποιήσουμε. 80

82 7.4 Toolbox Το παράθυρο Toolbox βρίσκεται συνήθως πάνω αριστερά όταν ανοίγουμε ένα project στο Visual Studio. Το Toolbox προσαρμόζεται στα μέτρα του εκάστοτε project, δίνοντας μας έτσι τα κατάλληλα controls τα οποία, θα μας βοηθήσουνε να δώσουμε μία καλαίσθητη νότα στην εφαρμογή που κατασκευάζουμε. Το Toolbox περιλαμβάνει αρκετά controls για τις XAML σελίδες όπου, μερικά από τα οποία παρουσιάζονται παρακάτω: 81

83 7.5 Error List Είναι μία λίστα με τα συντακτικά και όχι μόνο λάθη (αν το πρόγραμμα τρέχει σωστά δεν εμφανίζονται στη λίστα) τα οποία εμφανίζονται κάθε φορά που πατάμε το κουμπί Build Solution ή το κουμπί Start Debugging.Αν το πρόγραμμα μας τρέχει σωστά θα μας εμφανίσει κάτι παρεμφερές με τη παρακάτω εικόνα: Αν το πρόγραμμα μας δεν τρέχει σωστά θα μας εμφανίσει κάτι παρόμοιο με τη παρακάτω εικόνα: 82

84 7.6 Emulator Ο εξομοιωτής (emulator) του Windows Phone είναι κατάλληλος για να κάνουμε δοκιμές στην εφαρμογή που αναπτύσσουμε, αλλά και να παίρνουμε μια γεύση, από την απεικόνιση της, σε πραγματικό χρόνο. Επίσης η απεικόνιση της εφαρμογής μας μπορεί να γίνει και με διαφορετικό τρόπο δηλαδή, επιλέγοντας συσκευή (Device) εφόσον είναι συνδεδεμένη στον υπολογιστή μας: Έτσι τρέχουμε είτε στον emulator, είτε στο κινητό μας την εφαρμογή, για να δούμε πως, θα εμφανίζεται στο χρήστη. Επίσης για να σταματήσουμε την εφαρμογή μας, κλείνουμε τον emulator ή αν τρέχει στη συσκευή μας πατάμε το κουμπί F6. 83

85 7.7 Δημιουργώντας ένα απλό Windows Phone project στο Visual Studio Ανοίγοντας το πρόγραμμα, κατευθυνόμαστε στο κύριο μενού του προγράμματος μας και πατάμε File > New Project > Visual C# > Windows Phone App και στη συνέχεια δίνουμε όνομα στο project μας, πηγαίνοντας στο πεδίο Name και το ονομάζουμε PhoneCallTask_App όπως φαίνεται παρακάτω: Στη συνέχεια μας εμφανίζει ένα νέο πλαίσιο, στο οποίο ουσιαστικά μας δίνει τη δυνατότητα να επιλέξουμε σε ποια έκδοση Windows Phone θέλουμε να αναπτύξουμε την εφαρμογή μας, όπως, μπορούμε να δούμε πιο κάτω: 84

86 Εμείς θα επιλέξουμε Windows Phone OS 7.1 για να τρέχει η εφαρμογή μας στην έκδοση 7.5 Mango ή στην ανανεωμένη 7.8 ή ακόμη και στην 8.0, αν όμως επιλέγαμε Windows Phone OS 8.0 θα έτρεχε μόνο για την 8.0 έκδοση. Στη συνέχεια θα μας εμφανιστεί εκτός των άλλων, ο Emulator, η Error List και ο κώδικας XAML ο οποίος θα είναι ο εξής: Στο επόμενο μας βήμα, θα ασχοληθούμε με τη XAML. Συγκεκριμένα, θα αλλάξουμε το όνομα της σελίδας μας σε "Τηλεφωνικές Κλήσεις" και θα προσθέσουμε ένα button στη σελίδα μας κάνοντας drag & drop από το Toolbox. Τώρα θα κάνουμε τροποποιήσεις στο button.θα το ονομάσουμε "ButtonDialer", θα του δώσουμε περιεχόμενο "Κλήση", ακόμη θα δώσουμε τιμές στις ιδιότητες Height, Width, Margin και θα ονοματίσουμε το click event ως "ButtonDialer_Click".Επομένως, ο κώδικας XAML θα αλλάξει στα παρακάτω σημεία: Στη συνέχεια, θα δούμε το αποτέλεσμα μας στον Emulator, ούτως ώστε, να έχουμε μία πλήρη άποψη για το UI της εφαρμογής μας: 85

87 Εμείς θέλουμε να κάνουμε μια κλήση, σε κάποιο άτομο, με τον αντίστοιχο αριθμό τηλεφώνου. Για να πραγματοποιηθεί όμως, αυτή η κλήση δεν αρκεί μόνο ο κώδικας XAML που χρησιμοποιήσαμε παραπάνω, θα πρέπει να χρησιμοποιήσουμε και κάποιον χειριστή γεγονότος (event handler) για την επίτευξη του αποτελέσματος. Ο τρόπος που χρησιμοποιούμε ένα event handler είναι πολύ απλός, αρκεί να πατήσουμε δεξί κλικ πάνω στο click event Click="ButtonDialer_Click" και στη συνέχεια να πατήσουμε Navigate to Event Handler. Αν το κάνουμε σωστά, θα μας κατευθύνει σε μια νέα καρτέλα η οποία, θα περιέχει τη MainPage.xaml.cs δηλαδή, τον code-behind (πίσω κώδικα) της εφαρμογής μας και θα μας εμφανίσει τη μέθοδο private void ButtonDialer_Click(object sender, RoutedEventArgs e) με την οποία ουσιαστικά θα πραγματοποιήσουμε τη κλήση που επιθυμούμε. Επομένως θα δημιουργήσουμε ένα νέο αντικείμενο του PhoneCallTask launcher και θα το ονομάσουμε phonecalltask. Επίσης, θα του δώσουμε κάποιες ιδιότητες όπως, PhoneNumber και DisplayName στις οποίες θα δώσουμε τις κατάλληλες τιμές για το άτομο που θέλουμε να τηλεφωνήσουμε και με τη μέθοδο Show θα καταφέρουμε να εμφανίσουμε τις τιμές στην οθόνη του Emulator μας, εκτελώντας παράλληλα και τη κλήση. Οι τιμές που επιλέξαμε είναι οι παρακάτω: 86

88 private void ButtonDialer_Click(object sender, RoutedEventArgs e) PhoneCallTask phonecalltask = new PhoneCallTask(); phonecalltask.phonenumber = " "; phonecalltask.displayname = "Δημήτρης"; phonecalltask.show(); Επίσης, επειδή χρησιμοποιήσαμε τον PhoneCallTask launcher πρέπει να προστεθεί η βιβλιοθήκη: using Microsoft.Phone.Tasks; αλλιώς δε θα τρέξει η εφαρμογή μας. Τέλος, βλέπουμε το αποτέλεσμα που θα εμφανιστεί στον Emulator, πατώντας πάνω στο button " Κλήση " και αφού στο message box που θα εμφανιστεί πατήσουμε "call". 87

89 7.8 Αναφορές και Βιβλιογραφία 7 ου Κεφαλαίου ΑΝΑΦΟΡΕΣ

90 Κεφάλαιο 8 - Ανάπτυξη της εφαρμογής PicMilling 8.1 Γενική περιγραφή Για την συγκεκριμένη εφαρμογή χρησιμοποίησα κάποιες συνδυαστικές τεχνικές, έτσι ώστε να κερδίσει σε λειτουργικότητα και ευχρηστία αλλά, ταυτόχρονα, να είναι και όσο το δυνατόν ικανοποιητική σχεδιαστικά. Έτσι, έχω χρησιμοποιήσει ένα scrollviewer μέσα στο οποίο, έχω τοποθετήσει κάποια images δίνοντας τη δυνατότητα στο χρήστη μέσω αυτών, να επεξεργάζεται κάποια εικόνα με διάφορες λειτουργίες όπως, κάνοντας resize, crop, προσθέτοντας κείμενο, εισάγοντας contrast, brightness καθώς και κάποια φίλτρα (Inverter, GaussianBlur,Sepia κ.α.). Επίσης, επειδή ο χρήστης όταν επεξεργαστεί την εικόνα θα χρειαστεί κάποια στιγμή να την αποθηκεύσει, για να τη κρατήσει στο media library, ή θα χρειαστεί να κάνει αποδοχή κάποια λειτουργία, ή ακύρωση κάποια άλλη όπως, ακόμη, και να ανοίξει κάποια καινούργια εικόνα, θεώρησα σωστό να εισάγω μια application bar. Πιο αναλυτικά, μέσω της application bar, υλοποιεί η εφαρμογή όλες τις προαναφερθείσες λειτουργίες καθώς, έχω χρησιμοποιήσει 4 ApplicationBarIconButtons όπου έχω εισαγάγει κατά σειρά τις λειτουργίες, open, apply, cancel και save. 8.2 Ο κώδικας του MainPage.xaml <phone:phoneapplicationpage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:telerikprimitives="clrnamespace:telerik.windows.controls;assembly=telerik.windows.controls.primitives" xmlns:controls="clrnamespace:microsoft.phone.controls;assembly=microsoft.phone.controls" xmlns:maps="clrnamespace:microsoft.phone.controls.maps;assembly=microsoft.phone.controls.maps" x:class="picmilling.mainpage" mc:ignorable="d" d:designwidth="480" d:designheight="768" FontFamily="StaticResource PhoneFontFamilyNormal" FontSize="StaticResource PhoneFontSizeNormal" Foreground="StaticResource PhoneForegroundBrush" Orientation="Portrait" shell:systemtray.isvisible="true" SupportedOrientations="Portrait"> Στο παρακάτω κώδικα έχουμε την application bar και στο σώμα της τα ApplicationBarIconButtons μέσω των οποίων δίνουμε ουσιαστικά το γραφικό περιβάλλον, για να υποδεχτεί η εφαρμογή μας τον code - behind κώδικα για κάποιες λειτουργίες της. 89

91 <phone:phoneapplicationpage.applicationbar> <shell:applicationbar IsVisible="True" IsMenuEnabled="True"> <shell:applicationbariconbutton IconUri="/Assets/AppBar/appbar.folder.rest.png" IsEnabled="True" Text="Open" Click="open_image"/> <shell:applicationbariconbutton IconUri="/Assets/AppBar/appbar.check.rest.png" IsEnabled="True" Text="Apply" Click="image_apply"/> <shell:applicationbariconbutton IconUri="/Assets/AppBar/appbar.cancel.rest.png" IsEnabled="True" Text="Cancel" Click="cancel_image"/> <shell:applicationbariconbutton IconUri="/Assets/AppBar/appbar.save.rest.png" IsEnabled="True" Text="Save" Click="save_image"/> <shell:applicationbar.menuitems> <shell:applicationbarmenuitem Text="about" Click=" _image"/> </shell:applicationbar.menuitems> </shell:applicationbar> </phone:phoneapplicationpage.applicationbar> <Grid x:name="layoutroot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="234"/> <RowDefinition Height="70"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel x:name="titlepanel" Grid.Row="0" Margin="12,17,0,28" Grid.RowSpan="2"> <TextBlock x:name="applicationtitle" Text="PicMilling" Style="StaticResource PhoneTextNormalStyle" FontFamily="Buxton Sketch" FontSize="36"/> <TextBlock x:name="pagetitle" Text="" Margin="9,-7,0,0" Style="StaticResource PhoneTextTitle1Style" FontSize="72" FontFamily="Times New Roman" Foreground="x:Null" Height="66" /> </StackPanel> <Image x:name="myimage" Stretch="UniformToFill" HorizontalAlignment="Left" VerticalAlignment="Stretch" Margin="24,- 30,12,12" Width="434" Grid.Row="1" Grid.RowSpan="2"/> 90

92 Στο παρακάτω κώδικα έχουμε ένα scrollviewer το οποίο περιέχει 10 images.αυτά τα images περιέχουν τα Tap events, τα οποία αφού συνεργαστούνε με το πίσω κώδικα(code - behind) τρέχουν οι υπόλοιπες λειτουργίες του προγράμματος. Επίσης ένα πολύ ενδιαφέρον κομμάτι κώδικα είναι και το <SolidColorBrush Color="StaticResource PhoneAccentColor"/> μέσω του οποίου, το χρώμα του scrollviewer αλλάζει με κάθε αλλαγή θέματος του κινητού τηλεφώνου. <ScrollViewer VerticalScrollBarVisibility ="Disabled" HorizontalScrollBarVisibility="Hidden" Margin="24,0,12,0"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,40,0,0"> <StackPanel.Background> <SolidColorBrush Color="StaticResource PhoneAccentColor"/> </StackPanel.Background> <Image Name="Resize" Source="Images\MenuIcons\Resize.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Resize_Tap" /> <Image Name="Crop" Source="Images\MenuIcons\Crop.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Crop_Tap"/> <Image Name="Text" Source="Images\MenuIcons\Text-Editor.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Text_Tap" /> <Image Name="DisplayContrast" Source="Images\MenuIcons\Display- Contrast.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Contrast_Tap"/> <Image Name="DisplayBrightness" Source="Images\MenuIcons\Display- Brightness.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="DisplayBrightness_Tap"/> <Image Name="Inverter" Source="Images\MenuIcons\filter1.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Inverter_Tap" /> <Image Name="GaussianBlur" Source="Images\MenuIcons\filter2.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="GaussianBlur_Tap" /> <Image Name="GrayscaleBT709" Source="Images\MenuIcons\filter3.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="GrayscaleBT709_Tap" /> <Image Name="Sepia" Source="Images\MenuIcons\filter4.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="Sepia_Tap" /> <Image Name="SobelX" Source="Images\MenuIcons\filter5.png" Height="102" HorizontalAlignment="Left" VerticalAlignment="Top" Tap="SobelX_Tap" /> </StackPanel> </ScrollViewer> </Grid> </phone:phoneapplicationpage> 91

93 8.3 Ο κώδικας του MainPage.xaml.cs using Microsoft.Phone.Controls; using Microsoft.Phone.Tasks; using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media.Animation; using System.Windows.Shapes; using ImageTools; using ImageTools.Filtering; using Microsoft.Xna.Framework.Media; using Coding4Fun.Toolkit.Controls; using System.Windows.Navigation; using System.IO.IsolatedStorage; namespace picmilling public partial class MainPage : PhoneApplicationPage ExtendedImage loadedimage; ExtendedImage filteredimage; Inverter filter1; GaussianBlur filter2; GrayscaleBT709 filter3; Sepia filter4; SobelX filter5; WriteableBitmap wb; public MainPage() InitializeComponent(); Στο παρακάτω κώδικα βλέπουμε τη μέθοδο crop όπου, ο χρήστης αφού επιλέξει την εικόνα από το media library και πατήσει πάνω στο crop image, πάει σε νέα σελίδα, επιλέγει περιοχή, βλέπει το αποτέλεσμα του crop και αν θέλει το αποθηκεύει ή πατά cancel και βλέπει την αρχική εικόνα. 92

94 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) if (e.navigationmode == NavigationMode.Back) IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; if (settings.contains("comingfromcroppage")) if ((bool)settings["comingfromcroppage"]) BitmapImage bmp = new BitmapImage(); bmp.setsource(app.loadedstream); MyImage.Source = bmp; wb = new WriteableBitmap(bmp); loadedimage.setpixels(bmp.pixelwidth,bmp.pixelheight, wb.tobytearray()); settings["comingfromcroppage"] = false; private void Crop_Tap(object sender, GestureEventArgs e) if (App.loadedStream!= null) NavigationService.Navigate(new Uri("/Crop.xaml", UriKind.Relative)); else MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); void photochoosertask_completed(object sender, PhotoResult e) if (e.taskresult == TaskResult.OK) BitmapImage bmp = new BitmapImage(); bmp.setsource(e.chosenphoto); MyImage.Source = bmp; App.loadedStream = e.chosenphoto; wb = new WriteableBitmap(bmp); loadedimage = new ExtendedImage(); loadedimage.setpixels(bmp.pixelwidth, bmp.pixelheight, wb.tobytearray()); Στο παρακάτω κώδικα βλέπουμε τη μέθοδο resize όπου, αρχικά υπάρχει ένα input prompt, μέσω του οποίου, δίνουμε τη δυνατότητα στο χρήστη να βάλει τις τιμές ανάλογα με την 93

95 αλλαγή μεγέθους που επιθυμεί και μέσα στη μέθοδο prompt4_completed βλέπουμε ουσιαστικά το κυρίως σώμα της μεθόδου resize. private void Resize_Tap(object sender, GestureEventArgs e) InputPrompt prompt4 = new InputPrompt(); prompt4.title = "Enter Width & Height ( )"; prompt4.completed += prompt4_completed; prompt4.show(); void prompt4_completed(object sender, PopUpEventArgs<string, PopUpResult> e) int width, height; string[] split = e.result.split(' '); if (split.length < 2) MessageBox.Show("Please enter two values"); else if (int.tryparse(split[0], out width) && int.tryparse(split[1], out height)) var bmp = new BitmapImage(); bmp.setsource(app.loadedstream); var myimage = new WriteableBitmap(bmp); wb = new WriteableBitmap(myImage.ResizeBicubic(width, height)); MyImage.Source = wb.toimage().tobitmap(); else MessageBox.Show("Please enter correct values"); Στο παρακάτω κώδικα βλέπουμε τη μέθοδο contrast όπου, αρχικά υπάρχει ένα input prompt, μέσω του οποίου, δίνουμε τη δυνατότητα στο χρήστη να βάλει τις τιμές (τυπικά από -100 έως 100, μπορεί και μεγαλύτερο εύρος) ανάλογα με την αντίθεση που επιθυμεί στην εικόνα του και μέσα στη μέθοδο prompt1_completed βλέπουμε ουσιαστικά το κυρίως σώμα της μεθόδου contrast. private void Contrast_Tap(object sender, GestureEventArgs e) 94

96 InputPrompt prompt1 = new InputPrompt(); prompt1.title = "Enter Contrast (-100 / 100)"; prompt1.completed += prompt1_completed; prompt1.show(); void prompt1_completed(object sender, PopUpEventArgs<string, PopUpResult> e) if (App.loadedStream!= null) int cont; if (int.tryparse(e.result, out cont) == true) Contrast c = new Contrast(cont); filteredimage = new ExtendedImage(loadedImage); c.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); try var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch (Exception ex) MessageBox.Show(ex.Message); MessageBox.Show(ex.InnerException.ToString()); else else MessageBox.Show("Unacceptable value"); MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); Στο παρακάτω κώδικα βλέπουμε τη μέθοδο brightness όπου, αρχικά υπάρχει ένα input prompt, μέσω του οποίου, δίνουμε τη δυνατότητα στο χρήστη να βάλει τις τιμές (τυπικά από -100 έως 100, μπορεί και μεγαλύτερο εύρος) ανάλογα με την φωτεινότητα που επιθυμεί στην εικόνα του και μέσα στη μέθοδο prompt2_completed βλέπουμε ουσιαστικά το κυρίως σώμα της μεθόδου brightness. 95

97 private void DisplayBrightness_Tap(object sender, GestureEventArgs e) InputPrompt prompt2 = new InputPrompt(); prompt2.title = "Enter Brightness (-100 / 100)"; prompt2.completed += prompt2_completed; prompt2.show(); void prompt2_completed(object sender, PopUpEventArgs<string, PopUpResult> e) if (App.loadedStream!= null) int bright; if (int.tryparse(e.result, out bright) == true) Brightness b = new Brightness(bright); filteredimage = new ExtendedImage(loadedImage); b.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); try var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch (Exception ex) MessageBox.Show(ex.Message); MessageBox.Show(ex.InnerException.ToString()); else MessageBox.Show("Unacceptable value"); else MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); Στο παρακάτω κώδικα βλέπουμε τη μέθοδο Text όπου, αρχικά υπάρχει ένα input prompt, μέσω του οποίου, δίνουμε τη δυνατότητα στο χρήστη να βάλει τις τιμές ανάλογα με την προσθήκη κειμένου που επιθυμεί στην εικόνα του και μέσα στη μέθοδο prompt3_completed βλέπουμε ουσιαστικά το κυρίως σώμα της μεθόδου Text. private void Text_Tap(object sender, GestureEventArgs e) 96

98 InputPrompt prompt3 = new InputPrompt(); prompt3.completed += prompt3_completed; prompt3.title="enter text."; prompt3.show(); void prompt3_completed(object sender, PopUpEventArgs<string, PopUpResult> e) if (App.loadedStream!= null) BitmapImage img = new BitmapImage(); img.setsource(myimage.toimage().tostream()); wb = new WriteableBitmap(img); TextBlock tb = new TextBlock(); tb.fontsize = 28; tb.foreground = new SolidColorBrush(Colors.Red); tb.fontfamily = new System.Windows.Media.FontFamily("Segoe WP"); tb.fontweight = FontWeights.ExtraBlack; tb.fontstyle = FontStyles.Italic; tb.text = e.result; TranslateTransform tf = new TranslateTransform(); tf.x = 18; tf.y = 430; try wb.render(tb, tf); wb.invalidate(); img.setsource(wb.toimage().tostream()); MyImage.Source = img; catch (Exception ex) MessageBox.Show(ex.Message); MessageBox.Show(ex.StackTrace); else MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); Παρακάτω βλέπουμε κατά σειρά τις μεθόδους, open, cancel, save και apply με τις οποίες ο χρήστης μπορεί να αξιολογήσει αν η επεξεργασμένη εικόνα είναι κατάλληλη για τον ίδιο ώστε, να αποθηκευτεί όπως, επίσης, να κρατηθεί ή να ακυρωθεί κάποια λειτουργία της ή να επιλεγεί μια καινούργια ή ακόμη και να απαθανατιστεί μέσω της μεθόδου open και του εικονιδίου της κάμερας. 97

99 private void open_image(object sender, EventArgs e) PhotoChooserTask photochoosertask = new PhotoChooserTask(); photochoosertask.completed += photochoosertask_completed; photochoosertask.showcamera = true; photochoosertask.show(); private void cancel_image(object sender, EventArgs e) try BitmapImage bmp = new BitmapImage(); bmp.setsource(app.loadedstream); MyImage.Source = bmp; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); private void save_image(object sender, EventArgs e) try BitmapImage bmp = new BitmapImage(); bmp.setsource(app.loadedstream); SaveImageToPhone(bmp); MessageBox.Show("Image Stored", "Success", MessageBoxButton.OK); catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); public static void SaveImageToPhone(BitmapImage im) WriteableBitmap wbmp = new WriteableBitmap(im); MemoryStream ms = new MemoryStream(); wbmp.savejpeg(ms, wbmp.pixelwidth, wbmp.pixelheight, 0, 100); MediaLibrary ml = new MediaLibrary(); ml.savepicture(datetime.now.tostring(), ms.toarray()); 98

100 private void image_apply(object sender, EventArgs e) try App.loadedStream = wb.toimage().tostream(); catch(exception ex) MessageBox.Show(ex.Message); Παρακάτω βλέπουμε τη μέθοδο OnBackKeyPress, μέσω της οποίας ο χρήστης πατώντας το κουμπί back της συσκευής, αποφεύγει να κάνει έξοδο από τη MainPage και μάλιστα, του εμφανίζεται ένα message box, μέσω του οποίου μπορεί να επιλέξει αν θέλει να φύγει από το πρόγραμμα, μέσω του button OK είτε να παραμείνει μέσω του button cancel. protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) MessageBoxResult exit = MessageBox.Show("Are you sure want to leave the page?", "Page Exit", MessageBoxButton.OKCancel); if (exit!= MessageBoxResult.OK) e.cancel = true; Παρακάτω βλέπουμε όλα τα φίλτρα τα οποία έχουν εισαχθεί στο υπάρχον project, μέσω μιας βιβλιοθήκης και συγκεκριμένα της ImageTools.Filtering όπου, έχουν επιλεγεί τα εξής: Inverter, GaussianBlur, GrayscaleBT709, Sepia και SobelX. private void Inverter_Tap(object sender, GestureEventArgs e) try filter1 = new Inverter(); filteredimage = new ExtendedImage(loadedImage); 99

101 filter1.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); private void GaussianBlur_Tap(object sender, GestureEventArgs e) try filter2 = new GaussianBlur(); filteredimage = new ExtendedImage(loadedImage); filter2.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); private void GrayscaleBT709_Tap(object sender, GestureEventArgs e) try filter3 = new GrayscaleBT709(); filteredimage = new ExtendedImage(loadedImage); filter3.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); 100

102 private void Sepia_Tap(object sender, GestureEventArgs e) try filter4 = new Sepia(); filteredimage = new ExtendedImage(loadedImage); filter4.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); private void SobelX_Tap(object sender, GestureEventArgs e) try filter5 = new SobelX(); filteredimage = new ExtendedImage(loadedImage); filter5.apply(filteredimage, loadedimage, new ImageTools.Rectangle(0, 0, loadedimage.pixelwidth, loadedimage.pixelheight)); var bitmap = filteredimage.tobitmap(); wb = new WriteableBitmap(bitmap); MyImage.Source = bitmap; catch MessageBox.Show("Select an image first", "Error.", MessageBoxButton.OK); 101

103 Παρακάτω βλέπουμε τη μέθοδο _image η οποία μας κατευθύνει σε μια νέα σελίδα μέσω της οποίας ο χρήστης μπορεί να στείλει κάποιο πατώντας πάνω στο ανάλογο image. private void _image(object sender, EventArgs e) NavigationService.Navigate(new Uri("/about.xaml", UriKind.Relative)); 102

104 8.4 Screenshots από την εφαρμογή 103

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

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

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

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

Google Apps για το Office 365 για επιχειρήσεις

Google Apps για το Office 365 για επιχειρήσεις Google Apps για το Office 365 για επιχειρήσεις Πραγματοποίηση της μετάβασης Το Office 365 για επιχειρήσεις έχει διαφορετική εμφάνιση από το Google Apps. Για το λόγο αυτό, όταν συνδεθείτε, θα δείτε αυτήν

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

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

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

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

C# (Sharp) ΤΕΙ Λάρισας. Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών. βιβλίο μελέτης εργαστηρίου. προγραμματισμός ΙΙ. έκδοση 1.0.

C# (Sharp) ΤΕΙ Λάρισας. Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών. βιβλίο μελέτης εργαστηρίου. προγραμματισμός ΙΙ. έκδοση 1.0. ΤΕΙ Λάρισας Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών προγραμματισμός ΙΙ C# (Sharp) βιβλίο μελέτης εργαστηρίου έκδοση 1.0.1 Νεβράντζας Βάιος-Γερμανός Λάρισα Φεβρουάριος 2011 σελίδα 2 από 39 Ευρετήριο

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

Windows 8 2_windows8.indd 39 10/5/2014 2:10:10 μμ 10/5/2014 2:10:10

Windows 8 2_windows8.indd 39 10/5/2014 2:10:10 μμ 10/5/2014 2:10:10 2_windows8.indd 39 10/5/2014 2:10:10 μμ Εισαγωγή στα 1 ΚΥΡΙΑ ΣΗΜΕΙΑ ΤΟΥ ΚΕΦΑΛΑΙΟΥ Εισαγωγή στα Windows Διαφοροποίηση των.1 από άλλες εκδόσεις Χειρισμός των Windows με ποντίκι και αφή Οθόνη κλειδώματος

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

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

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

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

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53 Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53 Περιεχόμενα 1. 1. Διαδικασία των Windows 8 2. Απαιτήσεις συστήματος 3. Προετοιμασία 2. 3. 4. 5. με τη 6. 1. Εξατομίκευση 2. Ασύρματο 3.

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

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

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Οδηγός χρήστη. Xperia SmartTags NT1/NT2

Οδηγός χρήστη. Xperia SmartTags NT1/NT2 Οδηγός χρήστη Xperia SmartTags NT1/NT2 Περιεχόμενα Εισαγωγή...3 Οδηγός έναρξης...4 Ενεργοποίηση της λειτουργίας NFC...4 Περιοχή εντοπισμού NFC...4 Χρήση του Smart Connect για τη διαχείριση των ετικετών

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

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Μάθημα: Ενότητα: Πληροφορική Α' Γυμν. Το του Υπολογιστή 1. Τι ονομάζεται Πρόγραμμα; Είναι οι οδηγίες που δίνονται στον υπολογιστή για να εξηγήσουμε πώς γίνεται μια εργασία (δηλαδή η

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή 6 Δημιουργία λογαριασμού 13 Εγκατάσταση και λειτουργία του Skype 28 Βασικές λειτουργίες 32 Επιλογές συνομιλίας 48 Γενικές ρυθμίσεις Skype 64 Το Skype σε φορητές συσκευές 78 Εγγραφή

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER Η εφαρμογή LiveTripTraveller διατίθεται για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Στο υπο-ιστοσελίδα www.livetrips.com/sources μπορείτε να κατεβάσετε την εφαρμογή

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

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Τηλ/νιών Τομέας Προγ/σμού & Τεχνολογίας Λογισμικού Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Δρ. Νικόλαος Θ. Λιόλιος Καθηγητής Φεβρουάριος 2012 1. Εισαγωγή Το Visual

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

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

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

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

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΤΙ ΕΊΝΑΙ ΛΟΓΙΣΜΙΚΟ Για τη λειτουργία ενός υπολογιστικού συστήματος χρειάζεται εκτός από το υλικό (hardware) και το λογισμικό (software). Σε αυτό περιλαμβάνονται όλα τα Προγράμματα

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

Οδηγός των Ελληνικών Microsoft WINDOWS 7

Οδηγός των Ελληνικών Microsoft WINDOWS 7 Οδηγός των Ελληνικών Microsoft WINDOWS 7 Chris Fehily Απόδοση: Αγαμέμνων Μήλιος Μηχανικός Λογισμικού Εκδόσεις: Μ. Γκιούρδας Ζωοδόχου Πηγής 70-74 - Τηλ.: 210 3630219 106 81 Αθήνα, 2010 www.mgiurdas.gr Τίτλος

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

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΣΤΟΧΟΙ: 1. Λογισμικό 2. Λογισμικό Λειτουργικού Συστήματος 3. Προσαρμοστικό Γραφικών Χρήστη 4. Λογισμικών Εφαρμογών 5. Διαφορά Μεταξύ Λογισμικού Λειτουργικού Συστήματος Και

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

Εισαγωγή 6. Είσοδος στα Windows και οθόνη κλειδώματος 11. Οι πρώτες ρυθμίσεις των Windows 8 29. H επιφάνεια εργασίας 49

Εισαγωγή 6. Είσοδος στα Windows και οθόνη κλειδώματος 11. Οι πρώτες ρυθμίσεις των Windows 8 29. H επιφάνεια εργασίας 49 περιεχόμενα Εισαγωγή 6 Είσοδος στα Windows και οθόνη κλειδώματος 11 Οι πρώτες ρυθμίσεις των Windows 8 29 H επιφάνεια εργασίας 49 Πλοήγηση στο Internet με τον Internet Explorer 65 Επικοινωνία και Κοινωνική

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

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

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

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

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

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

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. Τι είναι ο

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

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

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

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

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

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

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

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

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

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

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο

Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο Gmail: Η προσέγγιση της Google στο ηλεκτρονικό ταχυδρομείο (Από την ομάδα εργασίας του Gmail) Το Gmail κάνει το ηλεκτρονικό ταχυδρομείο εύκολο και αποτελεσματικό.. Οι 10 κυριότεροι λόγοι για να χρησιμοποιήσετε

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

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

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

Μια εισαγωγή στο Linux με την διανομή Fedora. Βάιος Κολοφωτιάς MSc Informational Systems

Μια εισαγωγή στο Linux με την διανομή Fedora. Βάιος Κολοφωτιάς MSc Informational Systems Μια εισαγωγή στο Linux με την διανομή Fedora Βάιος Κολοφωτιάς MSc Informational Systems Τι είναι το Fedora Project? Είναι το όνομα μιας παγκόσμιας κοινότητας ανθρώπων που αγαπούν, χρησιμοποιούν και φτιάχνουν

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

Κεφάλαιο 2: Λογισμικό (Software) Εφαρμογές Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2: Λογισμικό (Software) Εφαρμογές Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος Κεφάλαιο 2: Λογισμικό (Software) 1 2.1 Λογισμικό Συστήματος και Λογισμικό Εφαρμογών Λογισμικό Συστήματος: διαχειρίζεται το υλικό του υπολογιστή και αποτελεί τη βάση πάνω στην οποία αναπτύσσεται και εκτελείται

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

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤΙΚΟ 1/53

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤΙΚΟ 1/53 Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤΙΚΟ 1/53 Περιεχόμενα 1. 1. Διαδικασία των Windows 8 2. Απαιτήσεις συστήματος 3. Προετοιμασία 2. 3. 4. 5. με τη 6. 1. Εξατομίκευση 2. Ασύρματο 3.

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

Interactive Power Point

Interactive Power Point Interactive Power Point Οι περισσότεροι χρήστες γνωρίζουν τη χρήση του Microsoft Power Point για τη δημιουργία παρουσιάσεων. Αυτό όμως που λίγοι γνωρίζουν, είναι ότι το πρόγραμμα αυτό, έχει δυνατότητες

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

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

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

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

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

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

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

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System) Υλικό Hardware Λογισμικό Software... κώδικας ΥΛΙΚΟ Κάθε ηλεκτρονικό, ηλεκτρικό και μηχανικό μέρος του Η/Υ. ΛΟΓΙΣΜΙΚΟ Προγράμματα,δηλαδή οδηγίες γιατοτιπρέπεινακάνειοη/υ. Λειτουργικό Σύστημα Είναι ένα βασικό

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

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

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

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

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

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

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

Κοινή χρήση πόρων με τα Windows XP

Κοινή χρήση πόρων με τα Windows XP Κοινή χρήση πόρων με τα Windows XP Α. Κοινή χρήση αρχείων και φακέλων Θα μάθετε: Να θέτετε σε κοινή χρήση ένα αρχείο ή ένα φάκελο του υπολογιστή με τα Windows XP. Να θέτετε σε κοινή χρήση στο δίκτυο μουσική,

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

ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR

ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR ΔΗΜΙΟΥΡΓΙΑMOBILE ΕΦΑΡΜΟΓΩΝ ΓΙΑ ANDROID ΣΥΣΚΕΥΕΣ ΜΕ APPINVENTOR Σοφία Τζελέπη Σύμβουλος Πληροφορικής Δυτ. Θεσ/νικης Απρίλιος 2013 http://users.sch.gr/stzelepi/portal stzelepi@sch.gr ΑΠΡΙΛΙΟΣ 2013 App Inventor

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

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Ανάπτυξη διαδικτυακής εφαρμογής υποστήριξης των δράσεων περιβαλλοντικής διαχείρισης της παράκτιας ζώνης του Θερμαϊκού Κόλπου και διαδραστικής εφαρμογής αναφοράς περιβαλλοντικών προβλημάτων Εγχειρίδιο Χρήσης-Οδηγός

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

Marmitek UltraViewPro 1

Marmitek UltraViewPro 1 IP CAMERA SERIES IP Eye Anywhere 10 11 20 21 470 IP RoboCam 10 11 21 541 641 ULTRAVIEW PRO ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1..1 ΕΙΣΑΓΩΓΗ....1 ΚΕΦΑΛΑΙΟ 2.. 2 ΕΓΚΑΤΑΣΤΑΣΗ... 2 ΚΕΦΑΛΑΙΟ......3 ΧΡΗΣΗ MARMITEK Ultraview

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

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

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

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

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

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

ΨΗΦΙΑΚΟΣ ΓΡΑΜΜΑΤΙΣΜΟΣ

ΨΗΦΙΑΚΟΣ ΓΡΑΜΜΑΤΙΣΜΟΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΨΗΦΙΑΚΟΣ ΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 2: Software ΠΑΝΑΓΙΩΤΗΣ ΠΑΝΑΓΙΩΤΙΔΗΣ ΤΜΗΜΑ ΓΑΛΛΙΚΗΣ ΓΛΩΣΣΑΣ ΚΑΙ ΦΙΛΟΛΟΓΙΑΣ Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE INTERNET PHONE A.S. DRIGAS Applied Technologies Department NCSR DEMOKRITOS Ag. Paraskevi GREECE dr@imm.demokritos.gr http://imm.demokritos.gr Το Internet Phone θέτει καινούργια δεδοµένα για την επικοινωνία

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

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

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1 Σελίδα 1 ΓΕΝΙΚΑ - ΕΙΣΑΓΩΓΗ Το GRS-1 της TOPCON διαθέτει λειτουργικό σύστημα Windows CE NET 6.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 στην

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

1. Τα τμήματα της επιφάνειας εργασίας των Windows

1. Τα τμήματα της επιφάνειας εργασίας των Windows 1. Τα τμήματα της επιφάνειας εργασίας των Windows Εικονίδια συντομεύσεων (αρχείου-φακέλου) Εικονίδια Ανενεργά Ενεργό Επιφάνεια (αρχείου-φακέλου) παράθυρα παράθυρο εργασίας Γραμμή μενού Γραμμή εργαλείων

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

Χρήσιμες Λειτουργίες των. Windows 7

Χρήσιμες Λειτουργίες των. Windows 7 Χρήσιμες Λειτουργίες των Windows 7 1 Περιεχόμενα Εισαγωγή... 3 Χαρακτηριστικά των Windows 7... 3 1. Θέματα (themes):... 3 1.1. Aero Peek... 4 1.2. Aero Shake:... 4 1.3. Aero Snap:... 4 1.4. Αero Flip:...

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

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

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

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

Ξεκινώντας NSZ-GS7. Network Media Player. Οι εικόνες επί της οθόνης, οι λειτουργίες και οι προδιαγραφές μπορεί να αλλάξουν χωρίς προειδοποίηση.

Ξεκινώντας NSZ-GS7. Network Media Player. Οι εικόνες επί της οθόνης, οι λειτουργίες και οι προδιαγραφές μπορεί να αλλάξουν χωρίς προειδοποίηση. Ξεκινώντας EL Network Media Player NSZ-GS7 Οι εικόνες επί της οθόνης, οι λειτουργίες και οι προδιαγραφές μπορεί να αλλάξουν χωρίς προειδοποίηση. Ξεκινώντας: ON/STANDBY Ενεργοποιεί ή απενεργοποιεί τη συσκευή

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

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

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

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

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

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

Δομή. 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση. 8 Πλήκτρο Home 3 Θύρα MicroUSB. 9 Είσοδος Κάρτας SD. 6 Μπροστινή κάμερα

Δομή. 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση. 8 Πλήκτρο Home 3 Θύρα MicroUSB. 9 Είσοδος Κάρτας SD. 6 Μπροστινή κάμερα Γρήγορος Οδηγός, Δομή 1 2 3 4 5 6 7 7 8 6 10 11 1 Πλήκτρα αυξομείωσης έντασης ήχου 7 Ηχεία 2 Θύρα Φόρτιση 8 Πλήκτρο Home 3 Θύρα MicroUSB 9 Είσοδος Κάρτας SD 4 Υποδοχή ακουστικών 3.5mm 10 Πίσω κάμερα 5

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

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

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

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

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

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

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

Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α

Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α 1 Windows 8.1 1.1 Βασικές Έννοιες Πληροφορικής και Επικοινωνιών Εισαγωγή 19 Τι είναι ο Ηλεκτρονικός Υπολογιστής 20 Κατηγορίες Υπολογιστών 21 Κύρια μέρη ενός Προσωπικού Υπολογιστή

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR Τηλέφωνο: 2810-211111 Διαδικασία εισόδου στο opensms Η πρόσβαση στην πλατφόρμα του opensms πραγματοποιείται με την εισαγωγή του Ονόματος χρήστη και του

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

Κεφάλαιο 6 Λογισμικό Εφαρμογών. Εφαρμογές Πληροφορικής Κεφ.6 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 6 Λογισμικό Εφαρμογών. Εφαρμογές Πληροφορικής Κεφ.6 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 6 Λογισμικό Εφαρμογών Καραμαούνας Πολύκαρπος 1 Λογισμικό Εφαρμογών (application software) Είναι όλα τα προγράμματα που μετατρέπουν τον ΗΥ σε εξειδικευμένο μηχάνημα για συκεκριμένες εργασίες. Περιέχει

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΓΙΑ ΛΟΓΙΣΜΙΚΟ CISCO JABBER ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΠΣ-ΕΔ/76

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΓΙΑ ΛΟΓΙΣΜΙΚΟ CISCO JABBER ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΠΣ-ΕΔ/76 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΓΙΑ ΛΟΓΙΣΜΙΚΟ CISCO JABBER ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΠΣ-ΕΔ/76 31/07/2014 ΠΕΡΙΕΧΟΜΕΝΑ ΕΓΚΑΤΑΣΤΑΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 3 ΛΕΙΤΟΥΡΓΙΑ

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

Ολοκληρωμένες Δράσεις προβολής δημοσιότητας για το Δήμο Αρχανών Αστερουσίων Εγχειρίδιο Χρήσης - Παρουσίαση

Ολοκληρωμένες Δράσεις προβολής δημοσιότητας για το Δήμο Αρχανών Αστερουσίων Εγχειρίδιο Χρήσης - Παρουσίαση Novel Tech «Μέλος του Επιστημονικού & Τεχνολογικού Πάρκου Κρήτης» http://www.noveltech.gr info@noveltech.gr Ολοκληρωμένες Δράσεις προβολής δημοσιότητας για το Δήμο Αρχανών Αστερουσίων Εγχειρίδιο Χρήσης

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

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

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

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

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας από βάση δεδομένων Όταν εκκινήσουμε τον Discoverer εμφανίζεται στην οθόνη μας το παράθυρο διαλόγου του βοηθητικού προγράμματος

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

6 Εισαγωγή στο Wordpress 3.x

6 Εισαγωγή στο Wordpress 3.x Περιεχόμενα 1 Εγκατάσταση του WordPress... 11 Ελάχιστες απαιτήσεις... 11 Easy PHP... 12 Εγκατάσταση Easy PHP... 12 Βήματα εγκατάστασης EasyPHP με εικόνες... 13 Το EasyPHP στα Ελληνικά... 17 Κατέβασμα και

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

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

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

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1

Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1 Αναλυτικός οδηγός της ενημέρωσης των Windows 8.1 Εγκατάσταση και ενημέρωση των Windows 8.1 Ενημερώστε το BIOS, εφαρμογές, προγράμματα οδήγησης και εκτελέστε το Windows Update Επιλέξτε τον τύπο εγκατάστασης

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

Μορφοποίηση εικόνων. Εισαγωγή. Στόχος κεφαλαίου

Μορφοποίηση εικόνων. Εισαγωγή. Στόχος κεφαλαίου Περιεχόμενα Κεφάλαιο 1: Προετοιμασία παρουσίασης...1 Κεφάλαιο 2: Διαχείριση διαφανειών...18 Κεφάλαιο 3: Διαχείριση γραφικών...31 Κεφάλαιο 4: Επεξεργασία εικόνων με το Adobe Photoshop...56 Κεφάλαιο 5: Μορφοποίηση

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

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα 1. Εισαγωγή 2. Εγκατάσταση λογαριασμού 3. Οδηγίες χρήσης 4. Ανάγνωση ελληνικών 1. Εισαγωγή Σ αυτό το εγχειρίδιο αναγράφονται

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

Γνωρίστε το χώρο εργασίας του PowerPoint

Γνωρίστε το χώρο εργασίας του PowerPoint Γνωρίστε το χώρο εργασίας του PowerPoint Για να εκκινήσουμε το Office PowerPoint 2007 ακολουθούμε τα εξής βήματα: Έναρξη à Όλα τα προγράμματα PowerPoint 2007. à Microsoft Office à Microsoft Office Όταν

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

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

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

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ GPRS 1. ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ GOOGLE EARTH

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ GPRS 1. ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ GOOGLE EARTH Αχαρναί 20.7.09 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ GPRS 1. ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ GOOGLE EARTH Για τη σωστή λειτουργία του προγράμματος πρέπει να έχετε εγκαταστήσει στον υπολογιστή σας το λογισμικό χαρτογράφησης

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

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

ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ σ. 1 από 18 _ Εγχειρίδιο ρυθµίσεων για την πρόσβαση σε ηλεκτρονικούς πόρους bibliotecas Εγχειρίδιο

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

Περιεχόμενα. Μέρος 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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

MASTER-MID GPS. Εγχειρίδιο. Mobility, Versatility, Flexibility MT7000

MASTER-MID GPS. Εγχειρίδιο. Mobility, Versatility, Flexibility MT7000 MASTER-MID GPS Mobility, Versatility, Flexibility MT7000 Εγχειρίδιο GR Εισαγωγή...2 Περιεχόμενα συσκευασίας...2 Επισκόπηση...2 Κουμπιά...3 Ενεργοποίηση συσκευής...3 Απενεργοποίηση συσκευής...3 Κατάσταση

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

Εισαγωγή 6. Οδηγίες για καλύτερη χρήση του YouTube 12. Δημιουργία λογαριασμού 16. Δημιουργία καναλιού 26. Έσοδα από τα βίντεο 42

Εισαγωγή 6. Οδηγίες για καλύτερη χρήση του YouTube 12. Δημιουργία λογαριασμού 16. Δημιουργία καναλιού 26. Έσοδα από τα βίντεο 42 περιεχόμενα Εισαγωγή 6 Οδηγίες για καλύτερη χρήση του YouTube 12 Δημιουργία λογαριασμού 16 Δημιουργία καναλιού 26 Έσοδα από τα βίντεο 42 Εμφάνιση στατιστικών 57 Μηνύματα και επικοινωνία 65 Επεξεργασία

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

www.e-katartisi.com Equal Society e-learning platform

www.e-katartisi.com Equal Society e-learning platform www.e-katartisi.com Equal Society e-learning platform Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΙΣΟ ΟΣ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ ΤΗΛΕΚΑΤΑΡΤΙΣΗΣ Για να εισέλθετε στην πλατφόρµα τηλεκατάρτισης της Equal Society και να έχετε πρόσβαση στα περιεχόµενά

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

2 Αποδοτική εργασία στα Windows Vista 103

2 Αποδοτική εργασία στα Windows Vista 103 Περιεχόμενα Οι συγγραφείς... 11 Εισαγωγή στα Windows Vista... 13 Οι εκδόσεις των Windows Vista...14 Ας ξεκινήσουμε!...18 Το πρόγραμμα πιστοποίησης επιχειρήσεων της Microsoft... 19 Πληροφορίες για νέους

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

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά MANAGER SIDE BAR Η Manager side bar είναι μία εφαρμογή σχεδιασμένη να προσφέρει μια σειρά από λειτουργίες και ευκολίες σε κάθε χρήστη Η/Υ προχωρημένο ή αρχάριο. Βασική λειτουργία της εφαρμογής είναι ότι

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

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

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

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

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

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