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

Μέγεθος: 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=" xmlns:x=" > <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=" xmlns:x=" Το 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=" xmlns:x=" xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone" xmlns:d=" xmlns:mc=" 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

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

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

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

Κλάσεις, Αντικείμενα & Μέθοδοι

Κλάσεις, Αντικείμενα & Μέθοδοι 4 Κλάσεις, Αντικείμενα & Μέθοδοι Τι θα δούμε σε αυτό το μάθημα 1. Γενικά περί Κλάσεων 2. Δημιουργία μίας Κλάσης 3. Παράδειγμα: η κλάση Oxhma 4. Δημιουργία ενός αντικειμένου 5. Μέθοδοι 6. Κατασκευαστές

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

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

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

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

Ενημέρωση σε 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 σε τηλέφωνο Android

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

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

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

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

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

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

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

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

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

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

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

Επιμέλεια: Μαργαρίτα Ρουγγέρη Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011

Επιμέλεια: Μαργαρίτα Ρουγγέρη Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011 Επιμέλεια: Μαργαρίτα Ρουγγέρη 71953 Επιβλέπων: Γεώργιος Στυλιαράς Πληροφορική Πολυμέσα ΓΤΠ61 4 η Εργασία 2011 Λειτουργικό σύστημα κινητή τηλεφωνία Google Open source Smart phones, tablets, mp3, τηλεοράσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις

10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 10 Νέα χαρακτηριστικά του Facebook που (πιθανόν) δεν γνωρίζεις 6 Μαρτίου 2016 Παναγιώτης Σακαλάκης Αν υπάρχει κάτι που γνωρίζει ο περισσότερος κόσμος για το Facebook, αυτό είναι πως κατέχει την πρώτη θέση

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

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...

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

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

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

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

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

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 με ποντίκι και αφή Οθόνη κλειδώματος

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

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

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαλεία. Επικοινωνίας & Συνεργασίας Πανεπιστήμιο Κύπρου

Εργαλεία. Επικοινωνίας & Συνεργασίας Πανεπιστήμιο Κύπρου Εργαλεία Επικοινωνίας & Συνεργασίας Πανεπιστήμιο Κύπρου Ιούλιος 2017 Copyright 2017 Πανεπιστήμιο Κύπρου. Όλα τα πνευματικά δικαιώματα κατοχυρωμένα. Δημιουργός: Λευτέρης Γ. Ζαχαρία Σ ε λ ί δ α 1 Πίνακας

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

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

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

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

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου 1. Τι ονομάζουμε κόμβο και τι σύνδεσμο σε μια μη γραμμικά διαρθρωμένη ύλη; Με την έννοια σύνδεσμος (link) σε μια μη γραμμικά διαρθρωμένη

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

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

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

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

Ράβδος Εργαλείων, σχεδόν τα ίδια εργαλεία και εικονίδια υπάρχουν όπως στα άλλα προγράμματα που έχετε μάθει μέχρι σήμερα.

Ράβδος Εργαλείων, σχεδόν τα ίδια εργαλεία και εικονίδια υπάρχουν όπως στα άλλα προγράμματα που έχετε μάθει μέχρι σήμερα. Σαχπατζίδης Αβραάμ Καθηγητής Πληροφορικής Π.Ε 20 Master of Arts (M.A) in "Gender, New Forms of Education, New Forms of Employment and New Technologies in the Information Age". Η Γλώσσα Προγραμματισμού

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

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

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

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

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού Κεφάλαιο 6 ο Διαχείριση στοιχείων λογισμικού Διδακτικοί στόχοι Να περιγραφούν οι κύριοι τύποι λογισμικού Να εξεταστεί το λογισμικό συστήματος και τα λειτουργικά συστήματα Να αναλυθούν οι πιο σημαντικές

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

Εισαγωγή 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 Επικοινωνία και Κοινωνική

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

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

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

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

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

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

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

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Τι είναι Λειτουργικό Σύστημα Κάθε Η/Υ αποτελείται από το Υλικό (Hardware) και το Λογισμικό (Software). Το Υλικό είναι το ηλεκτρικό, ηλεκτρονικό και

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> 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 υποστηρίζει

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου 49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - 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 Πολλοί άνθρωποι

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

Οδηγός αναβάθμισης των 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.

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

Ει ναι τα Windows που γνωρι ζετε, αλλα καλυ τερα

Ει ναι τα Windows που γνωρι ζετε, αλλα καλυ τερα Ει ναι τα Windows που γνωρι ζετε, αλλα καλυ τερα Γνώριμα και καλύτερα από ποτέ άλλοτε Τα Windows 10 είναι γνώριμα και εύχρηστα και με πολλές ομοιότητες με τα Windows 7, συμπεριλαμβανομένου του μενού Έναρξης.

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

Ηλεκτρονικά έγγραφα - επεξεργασία

Ηλεκτρονικά έγγραφα - επεξεργασία ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΑΥΤΟΔΙΟΙΚΗΣΗΣ Ηλεκτρονικά έγγραφα - επεξεργασία Το υλικό παραχωρήθηκε από τον Δρ Σπυρίδων Σαλαμούρα (ssalamouras@gmail.com) και προσαρμόστηκε για χρήση στο μάθημα Έγγραφο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΕΡΩΤΗΣΗ 1: Σε ποιες μεγάλες κατηγορίες μπορούμε να χωρίσουμε το Λογισμικό. Μπορούμε να χωρίσουμε το Λογισμικό στις παρακάτω μεγάλες κατηγορίες: στο Λογισμικό Συστήματος (System Software),

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

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

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

Copyright 2016 HP Development Company, L.P.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

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

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

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

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Επιμέλεια: Γκέκα Ασπασία Ιωάννου Ελένη Κούνουπα Άννα Τμήμα Εφαρμογών Πληροφορικής Α 1 Εξάμηνο Δ.ΙΕΚ Αιγάλεω 1 ΠΕΡΙΕΧΟΜΕΝΑ

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

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL:  στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση Αναζήτηση στον Ιστό Χρήση μιας μηχανής αναζήτησης Επιλογή συγκεκριμένης μηχανής αναζήτησης Είναι συχνό το φαινόμενο να θέλει ο χρήστης να εντοπίσει πληροφορίες στο διαδίκτυο και να μην ξέρει που να κοιτάξει.

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

Η συσκευή υποστηρίζει την αποστολή/λήψη μηνυμάτων. Πιέστε το πλήκτρο μηνυμάτων για να γράψετε ένα νέο. Επιλέξτε Μενού Μήνυμα Γράψε Μήνυμα στην

Η συσκευή υποστηρίζει την αποστολή/λήψη μηνυμάτων. Πιέστε το πλήκτρο μηνυμάτων για να γράψετε ένα νέο. Επιλέξτε Μενού Μήνυμα Γράψε Μήνυμα στην Οδηγίες Χρήσης 1 1.Μηνύμα Η συσκευή υποστηρίζει την αποστολή/λήψη μηνυμάτων SMS. Πιέστε το πλήκτρο μηνυμάτων για να γράψετε ένα νέο μήνυμα. Σύνταξη μηνύματος Επιλέξτε Μενού Μήνυμα Γράψε Μήνυμα στην συνέχεια

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

«DIGITAL STORY TELLING» PROJECT

«DIGITAL STORY TELLING» PROJECT «DIGITAL STORY TELLING» PROJECT ΕΙΣΑΓΩΓΗ: Στα πλαίσια της εξοικείωσής μας με τα «πολυμέσα» θα ασχοληθούμε με το project «digital story telling». Το project αυτό θα μας μάθει πώς να «αφηγούμαστε» ψηφιακά

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

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

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

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

Interactive Power Point

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

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

Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές Προδιαγραφές. Απαιτήσεις συστήματος. Ελληνική Έκδοση SWEEX.COM

Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές Προδιαγραφές. Απαιτήσεις συστήματος. Ελληνική Έκδοση SWEEX.COM Εισαγωγή IP001 Sweex USB Internet Phone with Display Αρχικά, σας ευχαριστούμε που αγοράσατε το Sweex USB Internet Phone with Display. Με αυτό το τηλέφωνο εύκολης σύνδεσης μπορείτε να πραγματοποιήσετε κλήσεις

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

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

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

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

Διαδικασιακός Προγραμματισμός

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

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

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

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

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

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT) Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT) Τι είναι Είσοδος και τι Έξοδος Με τον όρο Είσοδο (Input) αναφερόμαστε στη ροή δεδομένων προς την Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ), ενώ με τον όρο

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

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

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

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

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

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

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

Εφαρμογή Skype Μαθησιακά Αποτελέσματα

Εφαρμογή Skype Μαθησιακά Αποτελέσματα ΕΦΑΡΜΟΓΗ SKYPE Εφαρμογή Skype Μαθησιακά Αποτελέσματα Κατανόηση της εφαρμογής Skype και της χρησιμότητάς του. Εφαρμογή στην καθημερινότητά μας. Να κάνουμε δωρεάν κλήσεις εσωτερικού και εξωτερικού. Να δεχόμαστε

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