LE LANGAGE C# Introduction au framework .NET BIBLIOGRAPHIE ET RESSOURCES Livres

LE LANGAGE C# Introduction au framework .NET BIBLIOGRAPHIE ET RESSOURCES Livres Oreilly.CSharp.4.0.in.a.Nutshell.4th.Edition (le meilleur à mon avis)  en anglais  Une référence: très complet  Nécessite à mon avis quelques notions CSharp.2010.and.the.dotNET.4.Platform.5th.Edition:  en anglais  Bien C# et .Net - Versions 1 à 4:  En francais  Bon livre pour les débutants  Moins complet que CSharp.4.0.in.a.Nutshell APPRENTISSAGE DU LANGAGE C# 2008et du Framework .NET 3.  Poly de cours de C# par Serge Tahé  En francais Pratique de .NET et C# (patrick SMACCHIA)  En francais  Mal structuré à mon avis: partie 1 du livre très technique (informations que vous ne trouverez pas dans les autres livres) et partie 2: Très bien Internet http://msdn.microsoft.com/fr-fr/library/ms229335(v=VS.80).aspx http://www.developpez.com/ www.codeproject.com/ http://www.codeguru.com/ Sur les design pattern des articles très ditactiques: http://www.siteduzero.com/tutoriel-3-10601-programmation-en-java.html#part_65564 et tous les autres……. RECOMMENDATIONS La maîtrise d'un langage passe par une pratique importante. Vous devez: - Lire et relire le cours en vous appuyant sur la bibio donnée ci après - reprendre les exemples du poly dans Visual Studio (copier/coller) , les éxécuter et les étudier. - Vous devez FAIRE les exercices d'auto apprentissage - 3 - INTRODUCTION L’objectif de ce polycopié n’est pas une présentation exhaustive du langage C#. Pour cela une littérature nombreuse existe sur Internet (en version papier aussi d’ailleurs). Le C# peut être considéré comme une synthèse du C++ et de Java. Tout en gardant les points forts du C++, il corrige certains points faibles et permet une abstraction de données plus poussée et une approche complètement orientée objet. Toutefois certains inconvénients existent à savoir : Un langage qui reste en partie « propriétaire » Langage Non temps réel ( ramasse miette non déterministe, langage intermédiaire interprété) La plate forme .NET Framework La première couche CLS est composée des spécifications communes à tous les langages qui veulent produire des applications .NET qui soient exécutables dans cet environnement et les langages eux-même. La seconde couche est un ensemble de composants graphiques disponibles dans Visual Studio .NET La troisième couche est constituée d'une vaste librairie de plusieurs centaines de classes La quatrième couche forme l'environnement d'exécution commun (CLR ou CommonLanguage Runtime) de tous les programmes s'exécutant dans l'environnement .NET. Le CLR exécute un bytecode écrit dans un langage intermédiaire (MSIL ou MicroSoft Intermediate Language L'environnement d'exécution du CLR Le CLR (Common Language Runtime) est un environnement complet d'exécution semblable au JRE de Sun pour Java : il est indépendant de l'architecture machine sous-jacente. Bien que se terminant par le suffixe exe, un programme issu d'une compilation sous .NET n'est pas un exécutable en code natif. mais un bytecode en MSIL.Cela signifie que vous ne pourrez pas l’exécuter directement sur un ordinateur qui n'aurait pas la machine virtuelle.NET. Lorsque le processeur P n'est pas une machine qui existe physiquement mais un logiciel simulant (ou interprétant) une machine on appelle cette machine pseudomachine ou p-machine. Le programme source est alors traduit par le compilateur en instructions de la pseudo-machine et se dénomme pseudo-code. La p-machine standard peut ainsi être implantée dans n'importe quel ordinateur physique à travers un logiciel qui simule son comportement; un tel logiciel est appelé interpréteur de la p-machine. - 4 - La compilation JIT progressive JIT (Just-in-time) est une technique de traduction dynamique durant l'interprétation. La machine virtuelle CLR contient un compilateur optimiseur qui recompile localement le bytecode MSIL afin de n'avoir plus qu'à faire exécuter des instructions machines de base. Le compilateur JIT du CLR compile une méthode en code natif dès qu'elle est appelée dans le code MSIL. Le processus recommence à chaque fois qu'un appel de méthode a lieu sur une méthode non déjà compilée en code natif. La compilation AOT AOT (ahead-of-time) est une technique de compilation locale de tout le bytecode MSIL avant exécution (semblable à la compilation native). Le compilateur AOT du CLR compile, avant une quelconque exécution et en une seule fois, toutes les lignes de code MSIL et génère des images d’exécutables à destination du CLR. - 5 - ELEMENTS DE BASES DU C# Les données natives ATTENTION : le char est un nombre entier non signé sur 2 octets Nature des objets Le système de types C# comporte les catégories suivantes :  Types valeur  Types référence  (Types de pointeur) Les variables de types valeur stockent des données alors que les variables de types référence stockent les références aux données. Les types référence sont également considérés comme des objets. Les types pointeur ne peuvent être utilisés qu'en mode non sécurisé et sont donc à éviter. Contrairement au C++ le programmateur ne maîtrise pas l'emplacement des objets en mémoire et que partiellement leur durée de vie ( c'est le ramasse miette qui est le maître d'œuvre du cycle de vie des objets). L’emplacement des objets en mémoire dépendra de plusieurs paramères: - de leur nature :type valeur ou type référence - de la durée vie de l'objet o pour des durées courtes (registre processeur ou pile) o pour des durées longues: le TAS Les variables Les variables basées sur des types valeur contiennent directement des valeurs. L'attribution d'une variable de type valeur à une autre, copie la valeur contenue,d'où le terme "type valeur" (copie par valeur) Cela est différent de l'assignation des variables de type référence, qui copient une référence vers l'objet mais pas l'objet lui-même (copie des références). y est de « type » variable. Le contenu de la variable reflète le contenu de la variable y x est de type référence. Le contenu de la variable contient "un lien" vers la donnée situé ailleurs en mémoire. //types flottant float y = 4.5f; short z = 5; double w = 1.7E+3; // declaration structure struct StructAmoi { int b; void meth(int a){ b = 1000+a; } } // instantiation structure StructAmoi y = new StructAmoi ( ) ; Le tas est en fait un espace de mémoire vive disponible pour le processus courant, c'est-à-dire l'ensemble de votre programme (et de ses thread, s'il y en a plusieurs). La pile est une zone mémoire privée allouée pour chaque thread. - 6 - Les types "valeur" sont répartis en deux catégories principales :  Struct  Énumérations Les struct sont répartis dans les catégories suivantes :  Types numériques  Types intégraux (des entiers)  Types virgule flottante  decimal  bool  Structures définies par l'utilisateur. Les références Précision sur la notion de référence: - Une référence établit "un lien" vers l’objet visé o Attention: une référence n'est pas l'adresse de l'objet référencé. Il peut s'agir par exemple d'un index ou identificateur spéficique maintenu par le ramasse miette et /ou le CLR. - Une référence ne donne pas accès à l’adresse physique de l’objet - Les opérations arithmétiques sont interdites - Une référence doit être « initialisée » à la création - Une référence est nullable ( string chaine=NULL ;) - Une référence permet d'accéder au contenu de l'objet visé et de le modifier - Une référence est de type variable: A l'instantt la référence est connecté à l'objet A puis à t+1 àl'objet B. Les mots clés suivants induisent la création d’une variable de type référence  class  interface  delegate  object  string sans oublier les objets tableaux et chaînes. Exemple: class TypeRefExemple { public float note; public string nomEtudiant; } …………………… TypeRefExemple Ref1;// allocation d'une référence (non initialisée!) TypeRefExemple Ref1=new TypeRefExemple(); // création d'un objet du type TypeRefExemple , Ref1 "pointe" vers l'objet TypeRefExemple Ref2=Ref1; // création d'une nouvelle référence "pointant" vers l'objet précédent Req: Ref1, et Ref2 se retrouve dans la pile du thread courant L'objet référencé est placé dans la TAS Nous avon sdonc 2 référénces mais un seul objet de type TypeRefExemple Structure d’un programme type console using System; namespace date_test_minute { class Program { static void Main(string[] args) { // vos lignes de codes ici } } } Commentaires : using : permet de rajouter des composants logiciels namespace : permet de construire ses propres distributions de classes class : Une classe permet de regrouper au sein d'une même structure le format des données qui définissent l'objet et les fonctions destinées à manipuler ces objets. On dit qu'une classe permet d'encapsuler les différents éléments et les fonctions dans un ensemble appelé objet string a = "hello"; string b = "h"; // Append to contents of 'b' b += "ello"; Console.WriteLine(a == b); Console.WriteLine((object)a == (object)b); - 7 - Un exemple à étudier attentivement sur la création d'objets (lisez les commentaires!): using System; namespace Exemple_valeur_reference { struct TypeValExemple { public int code_Apoge; public string nomEtudiant; } class TypeRefExemple { public float note; public string nomEtudiant; } class Program { static void Main() { string nom_1="Dupont"; //type référence float note=13.5f; //type valeur int code=12321; //type valeur string nom_2; //type référence // creation de deux variables du type TypeValExemple TypeValExemple Etudiant1_TypeVal; // forme 1 TypeValExemple Etudiant2_TypeVal=new TypeValExemple();// forme 2 d'allocation TypeRefExemple Etudiant3_TypeRef1;// référence non initialisée TypeRefExemple Etudiant3_TypeRef2=new TypeRefExemple(); // fait référence au nouvel objet crée par l'opréarateur new //la ligne suivante ne compile pas:Etudiant1_TypeVal est un objet uploads/Industriel/ courscsharp-id5876.pdf

  • 20
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager