690 likes | 803 Views
. Net & C#. Chen Shan & Liu Ying Master 2 pro GI - SRR 2003-2004. Plan. . NET Introduction Historique .NET Framework C# .NET Remoting. Qu’est ce que .Net?. Une technologie prônée par Microsoft Une nouvelle plate-forme de développement logiciel
E N D
. Net & C# Chen Shan & Liu Ying Master 2 pro GI - SRR 2003-2004
Plan • . NET • Introduction • Historique • .NET Framework • C# • .NET Remoting . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Qu’est ce que .Net? • Une technologie prônée par Microsoft • Une nouvelle plate-forme de développement logiciel • Une version sur les architectures distribuées • Un ensemble de spécifications • Des nouveaux langages(C#, …) • Le langage CIL(Commom Intermediate Langage) • … . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Historique • Des 1998, Microsoft veut développer un nouveau produit pour résoudre les pbs de COM • Le 13 février 2002 la première version exploitable de .NET est publiée • En mars 2003, la version 1.1 du Framework .NET est disponible • Fournisseurs de base de données(Oracle et ODBC) • La sécurité • XML/XSLT • … . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Framework • Introduction • Assemblage • Avantage • Structure • CLR • Définition • Rôle • Bibliothèque de classes de base . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Vue générale de .Net CLS ( Common Langage Specification) C #, VB.NET… Outils Infrastructure pour le développement d’application distribuées (COM+, .NET Remoting, ASP.NET) Bibliothèque de classes de base ( ADO.NET, Forms, XML …) Implémentation du CLI (Commom Langage Infrastructure) CLR (Common Langage Runtime) . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Type d’applications • Interface utilisateur Windows (Windows form) • Application en mode console Windows • Service Windows • Service web • Application web . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Assemblages • Avantages des assemblages • Structure d’un assemblage . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Avantages des assemblages • L’enfer des DLLs résolu • La base des registres n’est plus sollicitée • Les assemblages sont infalsifiables • Les assemblages sont prévus pour être portables • Un assemblage peut être morcelé en plusieurs fichiers . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un assemblage Représentation physique d’un assemblage Assemblage Foo2.netmodule Foo1.exe Image.jpg Manifeste Ref ver Foo2 Ref ver Image.jpg Métadonnées de type Code CIL des méthodes des types méthodes des types Code IL des méthodes des types Ressources (image, sons …) . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
CLR • Common Langage Runtime • Le moteur d’exécution des applications .NET • Actions: • Compilation à l’exécution du code CIL • Gestion des exceptions • Gestion des domaines d’applications . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Compilation à l’exécution du code CIL Assemblage Compilation JIT Langage source ------------------>code CIL -------------------------->langage machine • JIT – Just In Time • Compiler le méthode juste avant le premier appel • Avantages • Compiler qu’une fois le code source de haut niveau • Distribuée sous forme d’assemblages • Exécutable sur différents machines et différents OS . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Compilation à l’exécution du code CIL • 2 types de compilateurs • Compilateur normal • Effectuer nombre d’optimisations • Mais gourmand en mémoire et en temps machine • Compilateur économe • Remplacer CIL par langage machine équivalent • ngen.exe(Native Image Generator) . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Gestion des exceptions • Chercher le gestionnaire d’exception • Si ne pas trouvé, terminer le programme • Sérialiser et propager l’exception • Parfois rattraper une exception . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Gestion des domaines d’application • un domaine d’application • conteneur logique d’assemblage(s) • Assemblages chargés par CLR • Décharger un domaine d’application tout entier • Garantir l’isolation des domaines d’applications . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Bibliothèque de classes de base • Environ 1400 classes • Namespace : ensemble de classes • La racine des namespaces : System • les types basiques comme Byte, Boolean, Object… • Les application graphiques (Windows Forms) • System.Windows.Forms • ADO.NET et XML . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Les conceptions nouveaux • La gestion du code durant l’exécution • Indépendance du OS et du matériel sous-jacent • Introduction d’une entité plus léger que processus • Interaction entre un grand nombre de langages • … . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Le langage C#plan • Introduction • Types • Structure d’un programme • Membres • Instructions • Notations complémentaires . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Introduction C# • Nouveau langage créé pour .NET • Hérite de C++ (Espace de nom:Namespace, pointeur: unsagecode, unsigned types) • Ressemble à Java • Concepts clés : • Composants orientés • Tout est objet • Utilise les classes du framework .NET • Exemple: Hello World object Stream Hashtable int double MemoryStream FileStream using System; class HelloWorld { static void Main( ) { Console.WriteLine("Hello world"); Console.ReadLine(); // Hit enter to finish } } csc HelloWorld.cs HelloWorld.exe . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
IntroductionModèle d’exécution MSIL compilation Code C# Assemblage JIT Code natif Runtime du système .NET CLR Code Natif Code Natif Code Natif Code Natif . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Types • Un programme C# est une collection de type • Classes,interfaces,structures,délégués,énumérations • C# fournis un ensemble de types prédéfinis • i.e. int, byte, char,string, object,… • Les types sont • Des données membres • Des fonctions membres • D’autres types • Il y a 2 catégories de types:valeur et référence Champs, constantes, tableaux, évènements Méthodes, opérateurs, constructeurs, propriétés, indexeurs . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
i 123 s "Hello world" Types • Type Valeur • Contient des données • Ne peut être ‘null’ • Primitives int i ; float x; • Enumérations enum State { Off, On } • Structures struct Point {int x, y; } • Type référence • Contient des références vers des objets • Peut être ‘null’ • Racine object • Chaîne string • Classes class Foo: Bar, IFoo {… } • Interfaces interface IFoo: IBar {… } • Tableau string[] a = new string [10] • Delegates delegate void Empty(); int i = 123; string s = "Hello world"; . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Types • Bénéfice des types valeurs • Pas d’allocation dans le tas, moins de travail pour le GC • Meilleur utilisation de la mémoire • Moins de référence indirecte . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Types • Types définis par l’utilisateur . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesEnums • Enums • Grouper certaines constantes de même catégorie. • Dérive de System.Enum • C# • public enum Color {red, green, black, blue}; • public void setColor(Color color) { • if (Enum.IsDefined(typeof(Color), color) { • … • } • } • Java • public void setColor(int color) { • if (color != RED && color != GREEN && • color != BLACK && color!=BLUE) { • … • } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesInterfaces • Une interface définie un contrat • Elle contient méthodes, propriétés, indexeurs, évènements • Chaque classe or structure implémentant une interface doit supporter toute les parties du contrat • Les interfaces permettent le polymorphisme • Plusieurs classes et structures peuvent implémenter la même interface • Une interface ne contient pas d’implémentation • Elle doit être implémentée par une classe ou une structure . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesClasses public class JvnServerImpl: MarshalByRefObject, IJvnLocalServer, IJvnRemoteServer { … }//class jvnServerImpl • Type référence défini par l’utilisateur • Similaire aux classes C++ ou Java • Héritage simple sur la classe • Peuvent implémenter de multiples interfaces • Contrôle d’accès • public, private, internal, protected, protectedinternal • Le mode par défaut est private • Membres • Constantes, champ (fields), méthodes, opérateurs (constructeurs et destructeurs) • Propriétés, indexeurs, évènements • Membres par classe (static) ou par instance • Instantancié par l’opérateur new . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesStruct • Similaire aux classes, mais • Type valeur défini par l’utilisateur • Hérite toujours d’objet • Ideal pour des objets ‘légers’ • int, float, double, etc., sont des structures • Permet la définition de type primitifs par l’utilisateur • Complex, point, rectangle, color, rational • Héritage multiple des interfaces • Même membres que les classes • Contrôle d’accès • public, internal, private • Instancié par l’opérateur new . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesDelegates • Un délégué (delegate) est un type référence qui défini la signature d’une méthode • Quand il est instancié, un délégué peut faire référence à une ou plusieurs méthodes • De manière intuitive : un pointeur sur une fonction dans le modèle objet • Sert de base pour la gestion des évènements . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Assembly Module(.dll/.exe) File Type Structure d’un programme Organisation des types • Organisation physique • Les types sont définis dans des fichiers • Les fichiers sont compilés en modules • Les modules sont regroupés en assemblage . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programmeAssembly • Désigner un ensemble de code/sources • Comporte 3 parties: • Un manifest • Des classes • Des meta-données . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programme Espaces de noms • Un nom de type doit être unique au sein d’un espace de nom (Namespace) • Permet l’organisation logique des types • Il n’y a pas de relation entre les espaces de noms et les fichiers (différence avec Java) . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programme Espaces de noms • C# namespace Irc { … namespace Jvn { … } //namespace Jvn }//namespace Irc Exemple • Java pakage Jvn; public class JvnServerImpl{ … } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
C#(JvnServerImpl.cs) namespace Jvn { using System; using System.Runtime.Remoting; public class JvnServerImpl { … } } csc \r:System.dll JvnServerImpl.cs Structure d’un programmeL’import de bibliothèques • Java (JvnServerImpl.java) pakage Jvn; import java.rmi.*; public class JvnServerImpl { … } • javac –classpath XX.class JvnServerImpl.java • Variable d’environnement CLASSPATH . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programmeMéthode Main • L’exécution d’un programme démarre à la méthode statique Main() • Une seule méthode avec une de ces signatures par assemblage • static void Main() • static int Main() • static void Main(string[] args) • static int Main(string[] args) . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresPlan • Constantes • Champ (fields) • Opérateurs (constructeurs et destructeurs) • Propriétés • Indexeurs • évènements . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresOpérateur: Constructeur • Implémenter les actions nécessaires à l’initialisation d’une instance de la classe • Le même nom que la classe • Ne retourne aucun paramètre Java public class JvnServerImpl { … private JvnServerImpl { super(); … } … } C# public class JvnServerImpl { … private JvnServerImpl():base() { … } … } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresOpérateur: Destructeur • Implémenter les actions nécessaire pour détruire une instance de la classe • Le même nom que la classe, précédé du caractère ~ • Ne peut pas être appelé directement public class JvnServerImpl { … private ~JvnServerImpl() { … } … } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
C# public class JvnCoordImpl { private int identification; public int Identification { get { return identification; } set { identification = value; } } } JvnCoordImpl coord = new JvnCoordImpl(); int id = coord.Identification; //get coord.Identification = id + 1; //set coord.Identifecation += 1; //get / set Java public class JvnCoordImpl { private int identification; public int getId() { return identification; } public void setId(int id) { this.id = id; } … } JvnCoordImpl coord = new JvnCoordImpl(); int id = coord.getId(); coord.setId(id + 1); MembresPropriétés • Une propriété est un champ virtuel • Ressemble à un champ, mais est implémenté par du code • Peut être read-only, write-only ou read/write . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresIndexeurs • Un indexeur permet à une instance d’être un tableau virtuel • Peut être surchargé(i.e. indexé parint et par string) • Peut être read-only, write-only ou read/write public class ListBox: Control { private string[] items; public string this[int index] { get { return items[index]; } set { items[index] = value;} } } ListBox listBox = new ListBox(); listBox[0] = "hello"; Console.WriteLine(listBox[0]); . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresEvènements • C# supporte les évènements • Basé sur la notion de délégué • L’émetteur de l’événement, défini le délégué • Les clients de l’évènement enregistrent le traitement à associer à l’évènement • Appel de += et de -= sur les délégués • Il ne peuvent pas créer les évènements • Les délégués multicast permettent à plusieurs objets de s’enregistrer pour le même évènement . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresEvènements • C# class Irc { … Button read_button = new Button(); read_button.Text = “read”); read_button .Click += new System.EventHandler(this.read_Click); … private void read_Click(object serder, EventArgs e) { … } … } • Exemple • Java • public class Irc • { • … • Button read_button = new Button(“read”) • read_button.addActionListener • (new readListener(this)); • … • } • class readListener implements ActionListener { • … • public void actionPerformed (ActionEvent e) { • … • } • } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions Survol • Expressions • checked, unchecked • lock • using • Conditionnels • if • Switch • Boucles • while • do • for • foreach • Sauts • break • continue • goto • return • throw • Exceptions • try • throw . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
InstructionsThreads: synchronisation • Lock • Exclusion mutuelle • Mis en oeuvre à l’aide de la classe System.Threading.Monitor(Wait(),PulseAll(),Pulse()) public class CheckingAccount { decimal balance; public void Deposit(decimal amount) { lock (this) { balance += amount; } } public void Withdraw(decimal amount) { lock (this) { balance -= amount; } } } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions checked et unchecked • Les instructions checked et unchecked permettent de contrôler le débordement dans les expressions arithmétique et les affectations • checked force le contrôle • unchecked supprime le contrôle • Le mode par défaut est unchecked • L’utilisation de la directive /checked du compilateur permet d’utiliser le mode checked par défaut . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions checked et unchecked using System; class CheckedTest { public static void Main() { int num = 5000; /* OVERFLOW I */ byte a = (byte) num; /* overflow detected only if /checked compiler option on */ /* OVERFLOW II */ checked { byte b = (byte) num; /* overflow ALWAYS detected */ } /* OVERFLOW III */ unchecked { byte c = (byte) num; /* overflow NEVER detected */ } }//Main } . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
C# public static JvnServerImpl JvnGetServer() { try { … } catch { … } finally { … } } Java public static JvnServerImpl JvnGetServer() throws RemoteException{ try { … } catch { … } finally { … } } InstructionsExceptions . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Notions complémentaires • Classes et structures • Boxing et unboxing • Attributs • Commentaires en XML . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Classes et StructuresDifférences . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Classes et StructuresSimilarités • Chacune • Est un type défini par l’utilisateur • Peut implémenter plusieurs interfaces • Peut contenir • Données • Champs, constantes, événements, tableaux • Fonctions • Méthodes, propriétés, indexeurs, opérateurs, constructeurs • Définition de types • Classes, structures, énumérations, interfaces, délégués . NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying