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



Σχετικά έγγραφα
Εισαγωγή στην ASP.NET. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας 4.0

Εισαγωγή στη C# και το.net 4.0

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

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

Περιεχόμενα. Πρόλογος 15

Οντοκεντρικός Προγραμματισμός

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

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

Περιεχόμενα. Πρόλογος... xiii

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

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

Περιεχόμενα. Πρόλογος 15

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ. e-library

Ανάπτυξηλογισμικού υλοποίησης του ανοικτού πρότυπου EPCALEv1.1 για εφαρμογές RFID

Περιεχόμενα. Προλεγόμενα... ix Κεφάλαιο 1 Εισαγωγή Κεφάλαιο 2 Δεδομένα και εκφράσεις Κεφάλαιο 3 Λογικές συνθήκες και δομές ελέγχου...

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

E π A π π ª π. Â È ÛÌfi ÔÁÈÛÌÈÎÔ. TfiÌÔ ' ÏÒÛÛÂ ÚÔÁÚ ÌÌ ÙÈÛÌÔ II. KÏÂ ÓıË Ú ÌappleÔ Ï Ë. (AÓÙÈÎÂÈÌÂÓÔÛÙÚÂÊ ÚÔÁÚ ÌÌ ÙÈÛÌfi )

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

2 η Εργαστηριακή Άσκηση

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

ΤΛΟΠΟΙΗΗ STANDALONE ΕΦΑΡΜΟΓΗ ΚΡΑΣΗΕΩΝ ΔΩΜΑΣΙΩΝ ΞΕΝΟΔΟΧΕΙΟΤ ΜΕ C-SHARP ΚΑΙ SQL-SERVER

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Π2.3.1 Πηγαίος κώδικας των εφαρμογών για την υποβολή, προβολή και παραμετροποίηση του ψηφιακού περιεχομένου

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

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

* Enterprise Resource Planning ** Customer Relationship Management

Company LOGO. Nazaret Kazarian. 1

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

Ευχαριστίες...xi Εισαγωγή...xiii. ΚΕΦΑΛΑΙΟ 1 Άνοιγµα και εκτέλεση ενός προγράµµατος Visual Basic.NET

Γλώσσες Προγραμματισμού

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

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

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

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Ευχαριστίες Εισαγωγή Καλωσορίσατε στη C#... 35

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

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

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

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

4 η Εργαστηριακή Άσκηση

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Ιόνιο Πανεπιστήμιο Τμήμα Αρχειονομίας - Βιβλιοθηκονομίας Μεταπτυχιακό Πρόγραμμα Αθήνας Έτος

Περιεχόμενα. Πρόλογος... 17

Week. 6: Java Collections

Ανάπτυξη και Σχεδίαση Λογισμικού

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Microsoft Visual Studio Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas

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

Μεθοδολογία Προγραμματισμού

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

C# 3.0. Οδηγός της. Εκδόσεις: Μ. Γκιούρδας. Herbert Schildt. Απόδοση: Γιάννης Β. Σαμαράς Ηλεκτρολόγος Μηχανολόγος Ε.Μ.Π. M.Sc.

Περιεχόμενα. Πρόλογος... 21

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

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

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

Μεταπτυχιακή Διατριβή

Υπηρεσίες Ιστού (Web Services) Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

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

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

Εισαγωγή στο Microsoft Visual Web Developer 2005 Express Edition...19

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

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Πληροφοριακό Σύστημα Μονάδας Διασφάλισης Ποιότητας (ΜΟ.ΔΙ.Π) της Ανωτάτης Σχολής Καλών Τεχνών

Βασικές Έννοιες Web Εφαρμογών

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

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Επανάληψη

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Διδάσκων: Παναγιώτης Ανδρέου

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

Εργαστήριο Σημασιολογικού Ιστού

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

Π1.3.1 Πηγαίος κώδικας των εφαρμογών για την δημιουργία του μητρώου δικαιούχων και αξιολογητών/κριτικών αναγνωστών

Εισαγωγή στην επιστήμη των υπολογιστών

Transcript:

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

2

Π ί ν α κ α ς Π ε ρ ι ε χ ο μ έ ν ω ν Πίνακας Περιεχομένων... 1 1. Εισαγωγή... 11 1.1. Γλώσσες και γλώσσες προγραμματισμού... 11 1.2. Κύκλος ανάπτυξης λογισμικού... 12 1.3. Πρότυπα Προγραμματισμού... 14 1.3.1. Προστακτικός Προγραμματισμός... 16 1.3.2. Συναρτησιακός Προγραμματισμός... 16 1.3.3. Λογικός Προγραμματισμός... 16 1.3.4. Αντικειμενοστρεφής Προγραμματισμός... 17 2. Το.NET framework και η C#... 21 2.1. Λίγη Ιστορία... 21 2.2. Χαρακτηριστικά του.net Framework... 22 2.2.2. Αρχιτεκτονική του.net Framework... 24 2.2.3. Εκδόσεις του.νετ Framework... 29 2.3. Η γλώσσα προγραμματισμού C#... 30 2.3.1. Χαρακτηριστικά της γλώσσας C#... 30 2.3.2. Ιστορικό εκδόσεων της C#... 31 2.3.3. Το πρώτο πρόγραμμα σε C#... 33 2.3.4. Μεταγλώττιση και εκτέλεση ενός προγράμματος... 34 3. Microsoft Visual Studio... 40 3.1. Εκδόσεις του Visual Studio... 40 3.1.1. Visual Studio Express... 40 3.1.2. Visual Studio LightSwitch... 40 3.1.3. Visual Studio Professional... 41 3.1.4. Visual Studio Premium... 41 3.1.5. Visual Studio Ultimate... 41 3.2. Εγκατάσταση... 41 3.3. Το περιβάλλον του Visual C# 2010 Express... 44 3.3.1. Ο Solution Explorer... 44 3.3.2. Τα παράθυρα εργαλείων... 48 3.3.3. Ο επεξεργαστής κειμένου... 50 4. Το συντακτικό της C#... 56 4.1. Η λεκτική δομή της C#... 56 4.1.1. Προσδιοριστές... 56 4.1.2. Δεσμευμένες λέξεις... 57 4.1.3. Κυριολεκτικά... 57 4.1.4. Τελεστές... 58 4.1.5. Χαρακτήρες Στίξης... 62 3

4.1.6. Εκφράσεις... 62 4.1.7. Προτάσεις... 63 4.2. Μεταβλητές... 64 4.3. Τύποι Δεδομένων... 65 4.3.1. Τύποι τιμών... 66 4.3.2. Αριθμητικοί τύποι... 67 4.3.3. Ο τύπος Boolean... 72 4.4. Έλεγχος ροής προγράμματος... 74 4.4.1. Πρόταση If-else... 74 4.4.2. Πρόταση switch... 75 4.4.3. Προτάσεις επανάληψης... 76 4.4.4. Προτάσεις μεταφοράς... 77 4.4.5. Προτάσεις try-catch, try-finally, try-catch-finally... 78 4.4.6. Πρόταση throw... 79 5. Κλάσεις και αντικείμενα... 80 5.1. Δήλωση κλάσης... 80 5.2. Μέλη κλάσης... 81 5.2.1. Μέλη δεδομένων... 81 5.2.2. Μέλη λειτουργιών... 83 5.2.3. Προσπέλαση μελών κλάσης... 90 5.3. Δημιουργία αντικειμένων... 91 5.3.1. Κατασκευαστές... 91 5.3.2. Δήλωση αντικειμένων... 93 5.3.3. Ο τελεστής new... 93 5.3.4. Αρχικοποιητές... 94 5.4. Καταστροφή αντικειμένων... 94 5.4.1. Καταστροφείς... 95 5.5. Στατικά μέλη και κλάσεις... 95 5.5.1. Στατικά μέλη... 96 5.5.2. Στατικές κλάσεις... 98 6. Κληρονομικότητα και πολυμορφισμός... 99 6.1. Κληρονομικότητα και μέλη μιας κλάσης... 100 6.1.1. Κρύψιμο μελών βασικής κλάσης... 100 6.1.2. Πρόσβαση στα μέλη της βασικής κλάσης... 101 6.1.3. Παράκαμψη μεθόδων... 102 6.1.4. Παράκαμψη άλλων μελών... 104 6.1.5. Κληρονομικότητα και κατασκευαστές... 104 6.2. Πολυμορφισμός... 106 6.2.1. Casting και μετατροπές αναφορών... 107 7. Οργάνωση σε Assemblies και Namespaces... 110 4

7.1. Δημιουργία μιας απλής βιβλιοθήκης... 110 7.2. Ονοματοχώροι... 116 7.2.1. Όνομα ονοματοχώρου... 116 7.2.2. Οι οδηγίες using... 118 7.2.3. Οι οδηγίες using με ψευδώνυμα... 119 8. Ενθυλάκωση... 120 8.1. Τροποποιητές πρόσβασης και μέλη κλάσεων... 120 8.1.1. Κανόνες σωστής χρήσης των private και public... 121 8.1.2. Τροποποιητές πρόσβασης και κληρονομικότητα... 122 8.1.3. Τροποποιητές πρόσβασης και assemblies... 123 8.2. Τροποποιητές πρόσβασης και κλάσεις... 124 8.3. Τροποποιητές πρόσβασης και κατασκευαστές... 124 9. Περισσότερα για τις κλάσεις... 126 9.1. Αφαιρετικές κλάσεις και μέλη... 126 9.2. Μερικές κλάσεις... 127 9.2.1. Μερικές μέθοδοι... 128 9.3. Ένθετες κλάσεις... 129 9.3.1. Ορατότητα ενσωματωμένων κλάσεων... 130 9.4. Interfaces... 131 9.4.1. Ορισμός interface... 131 9.4.2. Υλοποίηση ενός interface... 132 9.4.3. Interfaces και τύποι αναφοράς... 133 9.4.4. Υλοποίηση πολλαπλών interfaces... 134 9.4.5. Interfaces και κληρονομημένα μέλη... 137 9.4.6. Κληρονομικότητα σε interfaces... 137 9.5. Δομές... 138 9.5.1. Αντιγραφή δομών... 139 9.5.2. Κατασκευαστές και καταστροφείς δομών... 139 9.5.3. Άλλα θέματα για τις δομές... 140 9.6. Enums... 141 9.7. Indexers... 142 9.7.1. Δήλωση ενός indexer... 143 9.7.2. Υπερφόρτωση indexers... 145 9.7.3. Τροποποιητές πρόσβασης σε indexers... 145 9.8. Υπερφόρτωση τελεστών... 146 9.8.1. Δήλωση υπερφορτωμένων τελεστών... 146 9.8.2. Περιορισμοί στην υπερφόρτωση τελεστών... 146 10. Πίνακες... 148 10.1. Μονοδιάστατοι και ορθογώνιοι πίνακες... 149 10.2. Πίνακες πινάκων... 152 5

10.3. Η πρόταση foreach... 154 10.4. Προσπέλαση με το IEnumerator και το IEnumerator<T>... 156 10.5. Η μέθοδος Clone... 157 11. Generics... 158 11.1. Generic κλάσεις... 159 11.2. Περιορισμοί στους τύπους παραμέτρων... 162 11.2.1. Προτάσεις where... 163 11.2.2. Τύποι περιορισμών... 163 11.3. Generic μέθοδοι... 164 11.4. Generic Structs... 166 11.5. Generic Interfaces... 166 12. Collections... 169 12.1. Enumeration... 170 12.1.1. IEnumerable και IEnumerator... 170 12.1.2. IEnumerable<T> και IEnumerator<T>... 171 12.1.3. Υλοποίηση των enumeration interfaces... 171 12.2. ICollection<T> και ICollection... 174 12.3. Generic Lists... 175 12.3.1. Η κλάση List<T>... 175 12.3.2. LinkedList<T>... 177 12.4. Generic Dictionaries... 178 12.4.1. Το interface IDictionary<TKey,TValue>... 178 12.4.2. Η κλάση Dictionary<TKey,TValue>... 179 12.4.3. Ταξινομημένα Dictionaries... 180 12.5. Generic Sets... 181 12.5.1. Το interface ISet<T>... 181 12.5.2. Οι κλάσεις HashSet<T> και SortedSet<T>... 181 12.6. Queue<T>... 183 12.7. Stack<T>... 184 12.8. Σύγκριση στοιχείων... 184 12.8.1. Τo interface IComparer<T>... 184 12.8.2. Το interface IEqualityComparer<T>... 185 12.9. Επιλέγοντας το σωστό collection... 185 13. Strings... 187 13.1. Οι τύποι String και Char... 187 13.1.1. String και char literals... 188 13.1.2. Escape Sequences... 189 13.1.3. Κενά strings... 190 13.2. Επεξεργασία αλφαριθμητικών... 190 13.2.1. Substrings... 190 6

13.2.2. Σύγκριση συμβολοσειρών... 190 13.2.3. Αλλάζοντας μέρη μιας συμβολοσειράς... 191 13.2.4. Concatenation, Joining, Splitting... 191 13.3. Η κλάση StringBuilder... 192 13.4. Μορφοποίηση string... 193 13.4.1. Standard format specifiers... 193 13.4.2. Custom Format Strings... 194 13.4.3. Σύνθετη μορφοποίηση... 195 13.5. Regular Expressions... 196 13.5.1. Οι κλάσεις για regular expressions... 196 13.5.2. Επαλήθευση ενός string με Regular Expressions... 198 13.5.3. Χρήση των Regular Expressions για ταύτιση Substrings... 198 14. Αρχεία και Streams... 199 14.1. Αρχεία και οι κλάσεις File και Directory... 199 14.1.1. Χρήση των κλάσεων File και Directory... 200 14.1.2. Οργάνωση δεδομένων σε ένα αρχείο... 201 14.2. Streams... 202 14.2.1. Διάβασμα και γράψιμο σε ένα αρχείο κειμένου... 204 14.2.2. Αναζήτηση σε ένα αρχείο κειμένου... 206 14.3. Serialization και Deserialization... 207 15. Delegates... 210 15.1. Δήλωση ενός τύπου delegate... 210 15.2. Δημιουργία ενός αντικειμένου Delegate... 210 15.3. Ανάθεση τιμών σε Delegates... 211 15.4. Συνδυάζοντας Delegates... 212 15.5. Προσθήκη μεθόδων σε Delegates... 212 15.6. Αφαίρεση μεθόδων από Delegates... 212 15.7. Κλήση ενός Delegate... 212 15.8. Παράδειγμα... 213 15.9. Κλήση ενός delegate με επιστροφή τιμής... 213 15.10. Κλήση ενός delegate με παραμέτρους αναφοράς... 214 15.11. Ανώνυμες μέθοδοι... 214 15.11.1. Χρήση ανώνυμων μεθόδων... 215 15.11.2. Συντακτικό ανώνυμων μεθόδων... 215 15.12. Λάμδα εκφράσεις... 217 16. Events... 219 16.1. Δήλωση του Event... 219 16.2. Έγερση ενός Event... 220 16.3. Συνδρομή σε ένα event... 221 16.4. Αφαίρεση των χειριστών... 222 7

16.5. Χρήση των events... 222 16.6. Η κλάση EventArgs... 223 16.7. Χρησιμοποιώντας custom delegates... 223 16.8. Η κλάση MyTimerClass... 224 17. Windows Forms... 226 17.1. Ένα απλό GUI... 227 17.1.1. Delegates και χειρισμός των events... 229 17.1.2. Χρησιμοποιώντας τα properties για χειριστές event... 229 17.2. Controls... 230 17.2.1. Συνηθισμένα controls... 232 17.3. Χειρισμός του mouse... 234 17.4. Χειρισμός του πληκτρολογίου... 234 18. Windows Presentation Foundation... 236 18.1. Τι είναι το WPF... 236 18.1.1. Το WPF για τους designers... 236 18.1.2. Το WPF για τους προγραμματιστές C#... 237 18.2. Μια εφαρμογή WPF... 238 18.2.1. Δημιουργία του project... 238 18.2.2. XAML... 239 18.2.3. Properties και Attributes... 240 18.2.4. Properties και Nested Elements... 240 18.2.5. Attached Properties... 240 18.2.6. Σχόλια... 241 18.2.7. Προσθήκη ενός κουμπιού... 241 18.2.8. Προσθήκη και χρήση ενός Style... 242 18.3. Προσθήκη της λειτουργικότητας... 243 18.3.1. Προσθήκη του Namespace... 245 18.3.2. Προσθήκη της κλάσης σαν Static Resource... 245 18.3.3. Data Binding... 246 18.3.4. Χειρισμός των events... 246 18.3.5. Ολοκλήρωση της εφαρμογής... 246 19. Threads... 248 19.1. Χρήσεις των threads... 248 19.2. Threading στο.νετ... 249 19.3. Δημιουργία ενός thread... 249 19.4. Πέρασμα δεδομένων σε ένα thread... 250 19.5. Καταστάσεις ενός thread... 251 19.6. Προτεραιότητες και χρονοπρογραμματισμός... 252 19.7. Thread Synchronization... 253 19.8. Σχέση producer/consumer... 254 8

19.9. Threads και GUIs... 259 20. Task Parallel Library... 262 20.1. Προσεγγίσεις στον παράλληλο προγραμματισμό... 262 20.2. Η κλάση Task... 262 20.2.1. Δημιουργία ενός Task... 263 20.2.2. Χρήση μιας έκφρασης λάμδα... 265 20.2.3. Επιστροφή τιμής από ένα Task και πέρασμα παραμέτρων... 266 20.2.4. Η μέθοδος Wait... 267 20.2.5. Κατάσταση μιας Task... 268 20.2.6. Ακύρωση μιας Task... 269 20.3. Η κλάση Parallel... 270 20.3.1. Παραλληλία εργασιών με την Invoke... 270 20.3.2. Χρήση της μεθόδου For... 272 20.3.3. Χρήση της μεθόδου Foreach... 276 21. Networking... 277 21.1. Πρωτόκολλα μετάδοσης δεδομένων... 277 21.2. TCP Server... 278 21.3. TCP Client... 279 21.4. Μια client/server chat εφαρμογή... 279 21.5. Ασυνδεσμική επικοινωνία με datagrams... 282 21.5.1. Ένας UDP Server... 282 21.5.2. Ενας UDP Client... 282 22. Windows Communication Foundation... 284 22.1. Web Services... 284 22.2. Simple Object Access Protocol (SOAP)... 284 22.3. Representational State Transfer (REST)... 285 22.4. JavaScript Object Notation (JSON)... 285 22.5. Δημιουργία μιας SOAP WCF Web Service... 286 22.5.2. Deployment του service... 287 22.5.3. Web Services Description Language... 288 22.5.4. Consuming μια web service με έναν client... 288 22.6. Publishing και Consuming μιας RESTful XML web service... 290 22.6.1. Αιτήσεις HTTP get και post... 290 22.6.2. Δημιουργία μιας WCF web service βασισμένης στο REST... 291 22.6.3. Consuming μιας REST-based XML WCF web service... 292 22.7. Publishing & consuming μιας REST JSON web service... 293 22.7.1. Δημιουργία μιας REST-Based JSON WCF Web Service... 293 23. ADO.NET... 294 23.1. Το μοντέλο Data Provider... 294 23.1.1. Άμεση επικοινωνία με τη βάση... 295 9