SlideShare une entreprise Scribd logo

Dotnet csharp

S
SDFG5

language

1  sur  48
Télécharger pour lire hors ligne
.NET & C#
Sandra CHAVES
Sylvain CUAZ
DESS GI SRR 2002-2003
IMA - Université Grenoble 1
.NET & C#
Plan
I. Origine de .NET
II. .NET
III. Le langage C#
IV. Les alternatives
V. Conclusion
.NET & C#
Origine de .NET
 1995 : Microsoft se tourne vers le net
 gros compromis pour vite produire des
outils et technologies basés sur l’Internet
 tentative de ramener un peu d’ordre avec
le concept DNA
.NET & C#
DNA
 3 niveaux
 Active Server Pages pour la présentation,
 Objets métiers en COM au milieu,
 Une base de donnée pour le bas.
 Concept sain, mais difficile à mettre en oeuvre
 D’autres plateformes offrait de bien meilleures
solutions (Unix, J2EE)
 essentiel pour Microsoft de résoudre les
limitations de DNA
.NET & C#
Le remplaçant
 1998 : début de Next Generation Windows
Services (NGWS).
 Développement confidentiel
 NGWS rebaptisé .NET le 22 Juin 2000
.NET & C#
.NET : une plateforme
logicielle
Description
Le framework

Recommandé

Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteFabrice JEAN-FRANCOIS
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 

Contenu connexe

Tendances

Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancéeMahfoud EL HOUDAIGUI
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz Darouichi
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Jean-Baptiste Vigneron
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp FrGregory Renard
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Formation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procéduraleFormation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procéduralekemenaran
 
Cours c#
Cours c#Cours c#
Cours c#zan
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIJihenHedhli1
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1Beligh HAMDI
 

Tendances (20)

Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Programmation orientée objet avancée
Programmation orientée objet avancéeProgrammation orientée objet avancée
Programmation orientée objet avancée
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Formation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procéduraleFormation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procédurale
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Cours c#
Cours c#Cours c#
Cours c#
 
Héritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLIHéritage et polymorphisme- Jihen HEDHLI
Héritage et polymorphisme- Jihen HEDHLI
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
 

Similaire à Dotnet csharp

Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
La technologie net par karim kalti
La technologie net par karim kalti La technologie net par karim kalti
La technologie net par karim kalti Imen Naés
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tousMicrosoft
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPfrwebhelp
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Microsoft
 

Similaire à Dotnet csharp (20)

C#
C#C#
C#
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Chapitre 1
Chapitre 1Chapitre 1
Chapitre 1
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
Apple : iOS
Apple : iOSApple : iOS
Apple : iOS
 
La technologie net par karim kalti
La technologie net par karim kalti La technologie net par karim kalti
La technologie net par karim kalti
 
.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
 
intro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APPintro-csharp developement master 2 IF APP
intro-csharp developement master 2 IF APP
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre Windows 8 et Windows Phone 8.
 

Dernier

Fabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqFabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqTxaruka
 
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...Michael Barbour
 
Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Gabriel Gay-Para
 
Français langue étrangère: L'impératif présent 2024
Français langue étrangère: L'impératif présent 2024Français langue étrangère: L'impératif présent 2024
Français langue étrangère: L'impératif présent 2024Paulo Marques
 
Français langue étrangère: Le but et l'obligation 2024
Français langue étrangère: Le but et l'obligation 2024Français langue étrangère: Le but et l'obligation 2024
Français langue étrangère: Le but et l'obligation 2024Paulo Marques
 
Marseille XIXe fiche de travail 2024.pdf
Marseille XIXe fiche de travail 2024.pdfMarseille XIXe fiche de travail 2024.pdf
Marseille XIXe fiche de travail 2024.pdfNadineHG
 

Dernier (7)

Cours prothèse dentaire bac professionnel
Cours prothèse dentaire bac professionnelCours prothèse dentaire bac professionnel
Cours prothèse dentaire bac professionnel
 
Fabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie DarrieussecqFabriquer une femme.Livre écrit par Marie Darrieussecq
Fabriquer une femme.Livre écrit par Marie Darrieussecq
 
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
DLAC 2024 - L’état de l’apprentissage électronique de la maternelle à la 12e ...
 
Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)Le langage n'est-il qu'un instrument de communication ? (V2)
Le langage n'est-il qu'un instrument de communication ? (V2)
 
Français langue étrangère: L'impératif présent 2024
Français langue étrangère: L'impératif présent 2024Français langue étrangère: L'impératif présent 2024
Français langue étrangère: L'impératif présent 2024
 
Français langue étrangère: Le but et l'obligation 2024
Français langue étrangère: Le but et l'obligation 2024Français langue étrangère: Le but et l'obligation 2024
Français langue étrangère: Le but et l'obligation 2024
 
Marseille XIXe fiche de travail 2024.pdf
Marseille XIXe fiche de travail 2024.pdfMarseille XIXe fiche de travail 2024.pdf
Marseille XIXe fiche de travail 2024.pdf
 

Dotnet csharp

  • 1. .NET & C# Sandra CHAVES Sylvain CUAZ DESS GI SRR 2002-2003 IMA - Université Grenoble 1
  • 2. .NET & C# Plan I. Origine de .NET II. .NET III. Le langage C# IV. Les alternatives V. Conclusion
  • 3. .NET & C# Origine de .NET  1995 : Microsoft se tourne vers le net  gros compromis pour vite produire des outils et technologies basés sur l’Internet  tentative de ramener un peu d’ordre avec le concept DNA
  • 4. .NET & C# DNA  3 niveaux  Active Server Pages pour la présentation,  Objets métiers en COM au milieu,  Une base de donnée pour le bas.  Concept sain, mais difficile à mettre en oeuvre  D’autres plateformes offrait de bien meilleures solutions (Unix, J2EE)  essentiel pour Microsoft de résoudre les limitations de DNA
  • 5. .NET & C# Le remplaçant  1998 : début de Next Generation Windows Services (NGWS).  Développement confidentiel  NGWS rebaptisé .NET le 22 Juin 2000
  • 6. .NET & C# .NET : une plateforme logicielle Description Le framework
  • 7. .NET & C# Description  Plateforme logicielle : programmes ne cible pas une combinaison matériel/OS mais .NET  => marcheront partout où est implémenté .NET  environnement indépendant d'un langage  But : écrire des programmes qui interopère facilement et de façon sécurisé.
  • 8. .NET & C# Description  .NET nom collectif pour des logiciels variés qui sont construit sur la plateforme .NET  produits : Visual Studio.NET, Windows.NET Server, …  services : Passport, HailStorm, …  Les composants qui constituent .NET-la- platforme sont appelés le Framework .NET.
  • 9. .NET & C# .NET Framework  2 parties principales:  1. La CLR (Common Language Runtime)  2. Un ensemble hièrarchique de bibliothéques de classes
  • 10. .NET & C# La CLR  Le “moteur d’exécution” de .NET  Les caractéristiques :  Conversion IL -> code natif  Gestion Mémoire (garbage collection)  Vérifie et applique la sécurité  Charge et exécute les programmes
  • 11. .NET & C# Intermediate Language  Indépendant du CPU  Indépendant du langage  => chaque langage choisi un sous-ensemble  Code accessible depuis d’autres langages  => respect de la Common Language Specification (CLS) Code source IL compilation Exécution par la CLR
  • 12. .NET & C# Managed Code  code qui cible .NET  contient des informations supplémentaires (metadonnées) pour se décrire  => CLR peut garantir la sécurité, l’interopérabilité…
  • 13. .NET & C# Common Type System  sert à décrire les types indépendamment du langage =>  type-fidelity : permet à des types d'un langage d'interagir avec des types d'un autre langage  type-safety : garanti que le code n'accède pas à des zone mémoires interdites
  • 14. .NET & C# Unmanaged Code  .NET peut utiliser du code sans métadonnées : 1. non « géré » • peut utiliser la bibliothéque de .NET • peut compiler en IL • ne peut bénéficier du GC 2. natif • pour de meilleures performances • par exemple WinForms
  • 15. .NET & C# Assemblies  Briques des programmes .NET  unité fonctionnelle atomique  Collection de code et de métadonnées  Contient un Manifest, qui décrit  son nom  sa version  la liste des fichiers  les dépendances  les fonctions fournies…
  • 16. .NET & C# Module  Code compilé sans Manifest  Sert à modularisé le développement
  • 17. .NET & C# JIT  La CLR utilise la compilation Just-In-Time  Chaque méthode appelée est compilée en code natif  appels suivants n’ont pas à être recompilés  Qq problèmes : exige des resources  mémoire  processeur
  • 18. .NET & C# JIT  2 compileurs JIT:  un normal : optimise pas mal, mais intensif au niveau de la mémoire et du processeur  un "EconoJIT” : optimise pas aussi bien, mais requiert moins de ressources  Promesse d’un 3eme : un compileur pre-JIT  = un compileur normal !  Le seul plus : compile à l’installation => pas besoin de distribuer du code spécifique pour chaque plateforme
  • 19. .NET & C# Attributes  Façon flexible et extensible de modifier l’environnement à la compilation ou à l’exécution  Marquer une fonction comme étant obsolète => warning à la compilation  Attacher un auteur à chaque bout de code => on interroge ces attributs à l’exécution
  • 20. .NET & C# La bibliothéque de Classes  Namespace : ensemble de classes  La racine des namespaces est System  Contient les types basiques comme Byte, Double, Boolean, and String, Object…  Tous les objets dérivent de System.Object  value types ≠ objets  Moyens efficace de convertir des value types en objets
  • 21. .NET & C# Côté client  L’ensemble des classes est assez complet :  Collections  File  Screen  network I/O  Threading  XML  Connection aux bases de données…  Windows Forms alternative au développement traditionnel pour Windows
  • 22. .NET & C# Côté serveur  Web Services : composant sur un serveur web utilisé par :  Une application  Un autre Web Service
  • 23. .NET & C# Web Services  SOAP (Simple Object Access Protocol)  RPC qui utilise XML sur HTTP  WSDL (Web Service Description Language)  décrit la structure des messages  UDDI (Universal Description, Discovery and Integration)  annuaire global des services web
  • 24. .NET & C# Web Services WebServiceA SOAP AppA Recherche service d’info sur WallStreet WSDL WSDL Je fournis des services d’info sur WallStreet WSDL Annuaire UDDI WSDL
  • 25. .NET & C# Plan  Présentation générale de C#  Syntaxe du langage  Les plus de C#
  • 26. .NET & C# I. Présentation générale  Nouveau langage de Microsoft  Langage orienté objet  Ressemble à C++  Utilise les classes définies dans .NET  Pas une partie de .NET, langage comme un autre  Permet d’utiliser les concepts de .NET proprement
  • 27. .NET & C# II. Syntaxe du langage  Définition d’une classe  Définition d’une méthode  Principales instructions  Types valeur et référence
  • 28. .NET & C# Définition d’une classe namespace namespaceName { using Namespace(s); [access] [sealed | abstract] class NomClasse [: Classe, Interface(s)] { [définition de la classe] } }  Accessibilité à la classe public private protected internal protected internal
  • 29. .NET & C# Définition d’une méthode  Une méthode [access] [new] [static] [abstract] [sealed] [extern] [virtual | override] [TypeRetour | void] NomMethode ([TypeParam param]) [: base ([param])] { [corps de la méthode] }  La méthode Main public static [int | void] Main([String[] args]){ [corps de la méthode] }
  • 30. .NET & C# public class Parent{ public void DoStuff(string str) { Console.WriteLine("In Parent.DoStuff: "); } } public class Child: Parent { public void DoStuff(string str) { Console.WriteLine("In Child.DoStuff: "); } } public class VirtualTest { public static void Main(string[] args) { Child ch = new Child(); ch.DoStuff("Test"); ((Parent) ch).DoStuff("Second Test"); } }
  • 31. .NET & C#  Méthode m(), liste arguments A, une instance I dont type à la compilation est C et le type àl’exécution est R (R = C ou sous classe de C)  lors de l’appel de méthode m() sur I 1. Recherche méthode dans C (peut être héritée) 2. Si la méthode de C non virtuelle, on l’appelle 3. Si la méthode de C virtuelle, on recherche méthode de même signature la plus dérivée que R peut appeler
  • 32. .NET & C# Principales instructions  if  while  do  for  switch  Foreach foreach (typeObj identifiant in collectionObj) action;
  • 33. .NET & C# Types valeur et référence  Type référence  créé sur le « tas » (grâce à new)  libéré par le ramasse miettes  Type valeur  créé sur la pile  supprimé au retour d’un appel de méthode  pas sous la responsabilité du ramasse miettes  Déclaration : mot-clé struct (au lieu de classe)
  • 34. .NET & C# III. Les plus de C#  Structures  Le boxing/unboxing  Les properties  Les attributs  Les indexeurs  Les délégués  Pointeur et code non protégé: unsafe code  Le versionning
  • 35. .NET & C# Structs  Mot-clé struct  Objets de type valeur  Déclaration des mêmes types de membres qu’une classe possible  Pas d’héritage possible  Peut implémenter des interfaces  La visibilité par défaut = protected
  • 36. .NET & C# Le boxing / unboxing  Conversion type valeur <-> type référence  Boxing (type valeur -> type référence) : une instance de type objet allouée et la valeur copiée dans cet objet  Unboxing (type référence -> type valeur) : . Vérifie que le type de la valeur de l’instance et le type du type valeur voulu correspondent . sort la valeur de l’instance  ex : object box = 123; int i = (int)box;
  • 37. .NET & C# Les properties  extension des champs (objet.prop)  Ne définit pas d’emplacement mémoire  Définit des accesseurs décrivant instructions à exécuter  propriétés en lecture, écriture ou lecture/écriture  public class User { private string name; public string Name{ set { name = value; } // ecriture } }
  • 38. .NET & C# Les attributs  un moyen d'insérer des annotations (i.e méta- données)  Ex: [Serializable]: Similaire à l'implémentation de l'interface java.io.Serializable de Java.  Peut créer ses propres attributs en sous-classant System.Attribute
  • 39. .NET & C# [AttributeUsage(AttributeTargets.All)] public class HelpAttribute: Attribute { private string url; public HelpAttribute(string url) { this.url = url; } } [Help("http://www.mycompany.com/.../Class1.htm")] public class Class1 { public void F() {} } class Test { static void Main() { Type type = typeof(Class1); object[] arr = type.GetCustomAttributes(typeof(HelpAttribute), false); HelpAttribute ha = (HelpAttribute) arr[0]; Console.WriteLine("Url = {0}", ha.Url); } }
  • 40. .NET & C# Les indexers  Permet à un objet d’être indexé  Exemple : peut accèder aux éléments d’une pile sans dépiler les éléments  déclaration similaire à la déclaration d’une property  différences : . nom de la propriété est « this » . Paramêtre représentant l’indexe  ex : public object this[int index] { get { … } set { … } }
  • 41. .NET & C# Les délégués  proche des pointeurs de fonction en C ou C++  Encapsule 1 methode ou plus : «callable entity»  Pour methode d’instance, callable entity = 1 instance et la méthode à appliquer sur l’instance  Pour methode statique, callable entity = la methode  L’appel à la méthode = appel au délégué auquel on fournit les bons paramêtres  Déclaration, instanciation, appel:  delegate [type | void] delegateName ([type param]*);  delegateName d = new delegateName (nomFonction);  D(param);
  • 42. .NET & C# Unsafe code  déclare des pointeurs (noté type*)  void* = pointeur vers un type inconnu  Du code « unsafe » doit être marqué avec le mot-clé « unsafe »  Pointeurs ne sont pas gérés par le GC  un pointeur peut être null  opérateurs  & adresse d’une variable  * déréférencement  [] indexe un pointeur  ==, !=, <, >, <= et => pour comparer des pointeurs
  • 43. .NET & C# Le versionning  possibilité d'exécuter plusieurs versions différentes d'une même classe  les programmes C# référencent statiquement des bibliothèques de classes à l'aide de leur nom mais aussi de leur version  Une nouvelle version est  source compatible : si du code qui en dépend doit être recompilé pour marcher  binary compatible : si du code qui en dépend marche sans rien avoir à faire
  • 44. .NET & C# Les alternatives  J2EE (JOnAS, JBoss)  Mono (Ximian)  Compilateur C#  CLR  Bibliothéques  Très actif  DotGnu (FSF)  Remplaçant complet de .NET  Fonctionalités de HailStorm  Pas très actif
  • 45. .NET & C# Microsoft .NET vs. J2EE  Offrent les mêmes fonctionnalités  Seule ≠ de .NET : indépendant du langage  + : paradis pour dévelopeur  - : enfer pour chef de projet  La barrière Java est vite franchie
  • 46. .NET & C# Conclusion  Microsoft se vante de la portabilité et de l’ouverture mais :  Si app accède à des services natifs « pour la performance » alors réduit à une app Windows  Exemple : WinForms  Peut faires des extensions propriètaires  cf J++, HTML, WMP plug-in, …
  • 47. .NET & C# Références  http://arstechnica.com/paedia/n/net/net-1.html  http://www.osnews.com/topic.php?icon=36  http://www-adele.imag.fr/~donsez/cours/  http://microsoft.com/net  http://www.linuxdevices.com/files/misc/prasad- 28oct01.html
  • 48. .NET & C# Références  http://www.dotnetguru.org/article.php?sid=18  http://tutorials.beginners.co.uk/index/category/ 87  http://www.jaggersoft.com/csharp_standard/  http://www.go-mono.com/  http://dotgnu.org/