1 Introduction... 21 1.1 Un nouveau langage... 23 1.2 À qui ce livre est-il destiné?... 25 1.3 Quels sont les domaines abordés?... 26 1.4 Remerciements... 27 1.5 Contacts... 28 2.NET et C#... 29 2.1 Le Framework.NET... 31 Apports du Framework... 31 Fonctionnement du Framework.NET... 34 2.2 C#... 40 Objectif du C#... 40 Avantages du langage C#... 40 3 Introduction à la programmation... 43 3.1 La programmation... 45 La programmation machine... 45 L assembleur... 47 Les langages dédiés... 48
Les langages structurés... 50 Les langages objet... 51 3.2 La compilation... 52 3.3 Différents langages et différents modes de compilation.. 53 Langages interprétés... 53 Langages compilés... 53 Langages intermédiaires... 54 Et le langage C#?... 54 Récapitulatif des principaux langages... 54 3.4 Programmation orientée objet... 55 La conception objet... 55 But d un programme... 56 Le tout-objet... 56 Les instances de classe... 59 Les membres d instances... 60 L héritage... 62 Les membres statiques ou membres de classes... 64 Polymorphisme... 64 4 Installation et configuration du Framework.NET... 67 4.1 Installation... 69 4.2 Configuration du système... 70 4.3 Saisir un code source... 74 4.4 Compilation d un fichier source... 78 5 Hello C#... 81 5.1 Un premier programme... 83 5.2 Analyse du code... 85 Les classes... 85 Les méthodes... 87 5.3 La présentation du code source... 92 5.4 Les tokens... 92 Les commentaires... 94 6 Les objets... 97 6.1 Les constructeurs : générateurs d objets... 99
Méthode Constructeur... 99 Création d un objet... 101 6.2 Retenir les objets : les handles... 105 Créer un handle dans un programme... 106 Faire pointer un handle... 106 La référence à un membre d une classe... 110 6.3 Fin de vie des objets : le garbage collector... 113 7 Les types de données... 115 7.1 La mémoire d un ordinateur... 117 Les types : des marques en mémoire... 117 Les types... 118 Où se trouvent les données manipulées par C#?... 118 Présentation des différents types du C#... 119 7.2 Les primitives... 119 Les types entiers... 119 Les types à virgule flottante... 125 Le type bool... 127 7.3 Les identificateurs... 127 Savoir écrire un identificateur... 127 Les mots clés... 128 7.4 Les constantes... 129 Constantes non nommées... 129 Constantes nommées... 138 7.5 Les variables... 143 Initialisation... 144 Affectation... 145 7.6 Valeurs par défaut des primitives... 146 7.7 Portée... 149 Portée des identificateurs de variables ou de constantes... 149 Portée des identificateurs de méthodes... 152 Identificateurs des objets... 153 7.8 Les types fondamentaux objets... 153 La classe Object... 153 La classe String... 155 Les objets déclarés avec const... 159 7.9 Un programme final... 159
8 Les classes... 169 8.1 L héritage... 172 Héritage en langage C#... 173 Instances et membres de super-classes... 180 Typage multiple... 183 Redéfinition de méthodes... 184 8.2 Les méthodes... 188 Paramètres... 189 Valeur retournée... 195 Surcharge de méthode... 206 Surcharge de constructeur... 210 8.3 Le mot clé This... 214 8.4 Le constructeur par défaut... 216 8.5 Les paramètres Ref et Out... 218 Passage d arguments par référence... 218 Passage d argument avec Out... 222 8.6 Le paramètre Params... 224 8.7Programme final... 225 9 Les opérateurs... 235 9.1 Les deux instructions :... 237 9.2 Les catégories d opérateurs... 237 9.3 Les expressions... 238 9.4 Priorité et associativité... 239 Priorité... 239 Associativité... 240 9.5 Les opérateurs arithmétiques... 242 Fonctionnement... 243 Modulo... 244 9.6 Les opérateurs de comparaison... 244 9.7Les opérateurs logiques... 248 ET logique... 249 OU logique... 252 9.8 Les opérateurs de bits... 255 Opérateurs logiques bit à bit... 255 Les opérateurs de décalage... 265 9.9 Les opérateurs d affectation... 272
Opérateur d affectation simple... 274 Opérateurs d affectations combinées... 275 Incrémenter et décrémenter... 276 9.10 L opérateur conditionnel... 279 9.11 Les opérateurs sizeof et typeof... 283 9.12 Les parenthèses et les crochets... 288 9.13 Conversion de type... 289 Conversions explicites... 291 Conversion lors d opérations... 292 Conversion lors d affectations... 293 9.14 L opérateur is... 295 9.15 L opérateur as... 298 9.16 La surcharge d opérateurs... 301 Code source complet... 308 10 Les structures de contrôle... 311 10.1 Les instructions conditionnelles... 313 L instruction if... 313 Améliorer les expressions de condition... 317 L instruction if-else... 320 L instruction switch... 321 Instruction de saut... 323 10.2 Les instructions répétitives... 329 L instruction while... 329 L instruction for... 334 Boucle do-while... 341 Boucle foreach... 344 Boucles imbriquées... 344 10.3 Les instructions de saut... 347 L instruction break... 348 L instruction continue... 351 L instruction goto... 354 11 Le préprocesseur... 357 11.1 Les constantes symboliques et la compilation conditionnelle... 360 11.2 Option /define du compilateur... 366
11.3 La directive #undef... 367 11.4 La directive #error... 368 11.5 La directive #warning... 370 11.6 La directive #line... 370 11.7Les directives #région et #endregion... 371 12 Les types de données complexes... 375 12.1 Les structures... 377 Imbrication de structures... 381 12.2 Les énumérations... 382 Donner un type aux membres d une énumération... 385 Donner une valeur aux membres de l énumération... 386 La class Enum... 387 12.3 Les propriétés... 393 12.4 Les tableaux... 405 Tableau en mémoire... 406 Tableaux multidimensionnels... 417 La structure itérative foreach... 420 13 La programmation de classes avancée... 423 13.1 Constructeurs statiques... 425 13.2 Constructeurs privés... 426 13.3 Champs readonly... 427 13.4 Protection de classes et de membres... 428 Protection de classes... 428 Protection de membres... 429 13.5 Les classes scellées... 430 13.6 Les classes abstraites... 431 13.7Les interfaces... 444 Classe implémentant plusieurs interfaces... 447 Déterminer si une classe implémente une interface... 450 Cacher les membres d une classe implémentée... 451 Implémentation d interface sur plusieurs niveaux... 452 13.8 Les espaces de noms... 452 Les unités de compilation... 452 Déclaration des espaces de noms... 454 Utilisation des espaces de noms... 457
Les alias... 460 13.9 Les indexeurs... 463 13.10 Contrôler la création de classes héritées... 466 14 Le contrôle des erreurs... 473 14.1 Exemple d exceptions... 476 14.2 Fonctionnement des exceptions... 477 14.3 Capturer une exception... 477 La clause try... 479 La clause catch... 481 Utiliser les objets créés par les exceptions... 484 14.4 Générer soi-même des exceptions... 485 14.5 Les membres de la classe Exception... 486 14.6 La clause finally... 488 14.7Créer ses propres exceptions... 490 14.8 Conseil sur les exceptions... 493 Quand utiliser les exceptions?... 493 Quand ne pas utiliser les exceptions?... 493 14.9 Checked et unchecked : surveiller les dépassements de capacité... 494 Dépassement de capacité sur les réels... 497 15 Les délégués et le traitement d événements... 499 15.1 Délégués... 501 Manipuler les délégués... 506 Délégué avec d autres types de méthodes... 507 Délégué membre de classe... 509 15.2 Événements... 511 15.3 Code source complet... 521 16 Processus... 527 16.1 Domaine d application... 529 Fonctionnement et avantages... 530 Domaines d application et assemblys... 531 Domaines d application et threads... 533 Programmer les domaines d application... 534
16.2 Assembly... 538 Rôle des assemblys... 538 Programmer avec les assemblys... 539 16.3 Processus... 553 Démarrer un processus... 553 Stopper un processus... 556 Contrôler un processus... 558 Surveiller un processus... 561 16.4 Threads... 565 ThreadPool... 566 Gérer les threads soi-même... 577 17 Les classes de base du Framework... 589 17.1 La classe Object... 591 Méthode ToString()... 591 Méthode Equals()... 592 Méthode GetType()... 594 Méthode Finalize()... 595 17.2 La classe Math... 597 Propriétés de Math... 597 Méthodes de la classe Math... 598 17.3 La class Random... 600 17.4 Manipuler le temps en langage C#... 601 Structure DateTime... 602 Classe TimeSpan... 606 Afficher les dates correctement... 608 17.5 La classe Array et les tableaux... 611 Propriétés de la classe Array... 611 Méthodes de la classe Array... 612 17.6 Les classes conteneurs... 615 Tableaux dynamiques (vecteurs)... 616 17.7 La classe Stack... 623 17.8 Les classes encapsulant les types primitifs... 628 Méthode Parse... 630 Méthode ToString... 630 Constantes des classes primitives... 630 Boxing et Unboxing... 633 17.9 Le garbage collector... 634 17.10 Les collections... 635
Construire une énumération... 636 Comparaison d objets... 640 Clonage d objets... 647 18 Manipulation des fichiers et répertoires... 651 18.1 L architecture de l espace de noms... 655 18.2 La classe Directory... 657 La méthode CreateDirectory... 657 La méthode Delete... 659 La méthode Exists... 661 La méthode GetCreationTime... 661 La méthode GetCurrentDirectory... 662 La méthode GetDirectories... 663 La méthode GetDirectoryRoot... 665 La méthode GetFiles... 666 La méthode GetLastAccessTime... 668 La méthode GetLastWriteTime... 669 La méthode GetLogicalDrives... 669 La méthode GetParent... 671 La méthode Move... 671 La méthode SetCurrentDirectory... 672 Les méthodes SetCreationTime, SetLastAccessTime et SetLastWriteTime... 673 18.3 La classe DirectoryInfo... 674 Le constructeur de la classe DirectoryInfo... 675 La propriété Exists... 676 La propriété Attributes... 676 La propriété CreationTime... 680 La propriété Extension... 680 Les propriétés FullName et Name... 681 Les propriétés LastAccessTime et LastWriteTime... 683 La méthode Delete... 683 La méthode Refresh... 684 18.4 La classe File... 685 La méthode Copy... 686 La méthode Create... 687 La méthode CreateText... 689 La méthode Delete... 690
La méthode Exists... 691 Les méthodes GetAttributes et SetAttributes... 691 La méthode GetCreationTime... 694 La méthode GetLastAccessTime... 695 La méthode GetLastWriteTime... 696 La méthode Move... 696 Les méthodes Open... 697 La méthode OpenRead... 701 La méthode OpenWrite... 702 La méthode OpenText... 703 Les méthodes SetCreationTime, SetLastAccessTime et SetLastWriteTime... 703 18.5 La classe FileInfo... 705 Le constructeur de la classe FileInfo... 705 La propriété Exists... 706 La propriété Attributes... 706 La propriété CreationTime... 710 La propriété Extension... 710 La propriété Directory... 711 La propriété DirectoryName... 712 Les propriétés FullName et Name... 712 Les propriétés LastAccessTime et LastWriteTime... 713 La propriété Length... 714 La méthode Delete... 715 La méthode Refresh... 716 La méthode AppendText... 717 La méthode CopyTo... 717 La méthode MoveTo... 719 La méthode Create... 721 La méthode CreateText... 721 Les méthodes Open... 721 La méthode OpenRead... 725 La méthode OpenWrite... 726 La méthode OpenText... 726 Les exceptions pour éviter les erreurs... 727 18.6 Les flux... 727 La classe Stream... 728 La classe FileStream... 732 Les classes de lecture et d écriture... 742
19 C#etXML... 753 19.1 Introduction à XML... 755 Les fichiers binaires... 755 Les fichiers texte... 756 Le balisage... 757 SGML... 758 Les origines de XML... 759 Les parseurs... 760 19.2 L écriture de XML... 761 L arborescence des fichiers xml... 762 Le langage XML... 764 Les commentaires... 766 Les attributs... 768 La déclaration XML... 770 Les caractères spéciaux... 771 Les espaces vierges... 772 19.3 La transformation en XML... 775 XSLT... 776 19.4 XML et C#... 783 La classe XmlDocument... 783 Les nœuds d un XML... 786 Le déplacement de nœud en nœud... 789 La création d un élément d arbre... 790 La création d un attribut... 791 La classe XmlAttributeCollection... 793 La transformation d un xml via un xslt... 798 19.5 XmlTextReader... 799 Les constructeurs... 800 La lecture d un document xml... 803 19.6 XmlTextWriter... 815 Les constructeurs... 816 L écriture d un document xml... 816 20 La programmation réseau... 827 20.1 Les sockets... 829 La classe TcpClient... 830 La classe UdpClient... 833 La classe TcpListener... 836
La classe Socket... 838 20.2 Les classes WebRequest et WebResponse... 848 La classe WebRequest... 848 La classe WebResponse... 851 La classe Cookie... 854 La classe Dns... 855 20.3 La classe WebClient... 859 Création... 859 Lecture... 859 Écriture... 861 Propriétés... 865 21 La sérialisation... 867 21.1 La sérialisation binaire... 870 Principes de la sérialisation... 870 Sérialisation simple... 872 Sérialisation Sélective... 876 Implémentation de la sérialisation... 877 Gestion des versions... 880 21.2 La sérialisation XML... 880 Sérialisation simple... 881 Contrôle de la sérialisation... 895 Espaces de noms XML... 912 XSD... 914 Messages Soap... 915 22 Les chaînes de caractères... 923 22.1 Le premier contact avec les chaînes... 925 22.2 La classe String... 926 Propriétés de la classe String... 926 Méthodes de la classe String... 926 22.3 La classe StringBuilder... 930 Propriétés de la classe StringBuilder... 931 Méthodes de la classe StringBuilder... 931 22.4 Le formatage d une chaîne... 932
23 La programmation Windows... 935 23.1 La création d une application Windows à la main... 937 23.2 La création d une application Windows sous Visual Studio.NET... 939 23.3 Les caractéristiques communes des contrôles... 947 23.4 Le contrôle Button... 951 23.5 Le contrôle RadioButton... 951 23.6 Le contrôle CheckBox... 952 23.7Le contrôle Label... 954 23.8 Le contrôle TextBox... 954 23.9 Les événements... 955 23.10 Les boîtes de dialogue... 960 Les différentes boîtes de dialogue... 960 23.11 La récupération du retour d une boîte de dialogue... 975 24 Les bases de données... 977 24.1 Historique des bases de données... 979 Historique commun à toutes les sociétés... 979 Parcours de Microsoft... 980 Origine d ADO.NET... 980 24.2 Fonctionnement d ADO.NET... 981 24.3 Qu est-ce qu une base de données?... 982 24.4 Plan du chapitre... 983 24.5 Construire sa base de données... 983 La classe DataColumn : manipulation de colonnes... 985 La classe DataColumnCollection... 1002 La classe DataRow... 1022 La classe DataRowCollection... 1065 La classe DataTable... 1078 La classe DataTableCollection... 1107 La classe DataSet... 1118 24.6 La classe PropertyCollection... 1144 Ajout d une propriété... 1144 Lecture d une propriété... 1145 Effacer une propriété... 1146 24.7Constraint et ConstraintCollection : les contraintes... 1149 La classe UniqueConstraint... 1149
La classe ForeignKeyConstraint... 1152 La classe ConstraintCollection... 1155 24.8 Les relations... 1157 24.9 La connexion à une base de données... 1161 Travailler avec le provider OleDb... 1162 Travailler avec le provider SQL... 1187 25 ASP.NET et C#... 1211 25.1 Un premier exemple... 1213 25.2 Un deuxième exemple... 1218 25.3 Les scripts C# dans les fichiers ASP.NET... 1221 25.4 Les différents contrôles web... 1222 Les membres généraux des composants web... 1223 Les membres particuliers des composants web... 1224 25.5 Un troisième exemple... 1229 25.6 Un quatrième exemple, la création d une application web avec Visual Studio... 1233 L objet Application et Session... 1240 Utiliser les objets Application et Session... 1242 25.7Suite du quatrième exemple... 1243 Modification de la première page... 1245 26 Trois programmes en exemple... 1253 26.1 FrogIRC... 1255 26.2 Packer... 1255 26.3 Makeworld... 1256 27 Annexes... 1257 27.1 Les mots clés du langage... 1259 27.2 Les différents types du langage C#... 1259 27.3 Les 256 premiers caractères du code Unicode... 1260 27.4 La table des caractères ASCII... 1261 27.5 Les exceptions courantes du langage C#... 1271 27.6 Les options de la ligne de commande... 1272 Fichiers générés... 1273 Assemblys.NET... 1273
Débogage... 1273 Préprocesseur... 1274 Ressource... 1274 Divers... 1275 Exemples... 1275 27.7 La documentation XML... 1276 27.8 Les paramètres de la ligne de commande... 1289 27.9 Lecture/écriture sur l entrée/sortie standard... 1290 La méthode Write... 1290 La méthode WriteLine... 1299 Changement du caractère de fin de ligne... 1299 La méthode Read... 1300 La méthode ReadLine... 1300 27.10 Les entrées-sorties asynchrones... 1301 Première implementation : E/S asynchrones... 1302 Deuxième implémentation : E/S synchrones... 1306 27.11 Les correspondances entre les types XSD et les types.net... 1309 27.12 Les attributs... 1311 Syntaxe... 1312 Les attributs du langage... 1314 27.13 La compilation de plusieurs fichiers source... 1316 28 Index... 1317