Académique Documents
Professionnel Documents
Culture Documents
Net
Développement .Net 1
Développement .Net
Objectifs du cours
Développement .Net 2
1
Développement .Net
Qu’est ce que le .net Framework?
Développement .Net 3
Développement .Net
Objectifs du .Net Framework
Développement .Net 4
2
Développement .Net
Caractéristiques du .NET Framework
• Gestion de la mémoire: gérer la durée de vie des
objets
• Système de type commun: les types de base sont
définis par NET Framework
• Bibliothèque de classes étendue
• Infrastructures et technologies de
développement: ASP.NET pour les applications
web, ADO.NET pour l'accès aux données et
Windows Communication Foundation pour les
applications orientées service.
Développement .Net 5
Développement .Net
Caractéristiques du .NET Framework
• Plateforme commune à 27 langages (VB, C#, VISUAL
F#, C++,…)
• Interopérabilité des langages. Les compilateurs de
langage qui ciblent le .NET Framework émettent un
code intermédiaire nommé Common Intermediate
Language (CIL) qui est compilé moment de
l'exécution par CLR
• Compatibilité des versions
• Exécution côte à côte: plusieurs versions
d'applications peuvent également coexister
Développement .Net 6
3
Développement .Net
Architecture .Net
Langages : C#, F#, VB.net, …
Visual Studio .Net
Développement .Net 7
Développement .Net
Common Language Runtime (CLR)
• CLR est la base du .NET Framework
• CLR peut être considéré comme un agent qui:
– manage le code au moment de l'exécution,
– fournit des services essentiels,
– Assure la gestion du code: sécurisé et robuste
• Le code qui cible le runtime porte le nom de
code managé, tandis que le code qui ne cible
pas le runtime porte le nom de code non
managé.
Développement .Net 8
4
Développement .Net
Bibliothèque de classes .NET Framework
Développement .Net 9
Développement .Net
Common Language Specification (CLS)
Développement .Net 10
5
Programmation .Net
1. Langage C#
Développement .Net 11
Langage C#
Plan
• Présentation générale de C#
• Syntaxe du langage (les fondamentaux)
• Les plus de C#
• TPs
Développement .Net 12
6
Langage C#
Présentation générale
Développement .Net 13
Langage C#
Notion de classe
Développement .Net 14
7
Langage C#
Notion de classe
[access] [sealed | abstract] class NomClasse [: Classe, Interface(s)]
{
[définition de la classe]
}
Exemple:
class Personne
{
private string nom;
private string prenom;
public Personne(string n, string p)
{
nom = n;
prenom = p;
}
}
Développement .Net 15
Langage C#
la classe Object
• La classe Object est la classe de base ultime de toutes
les classes du .NET Framework.
• Toutes les classes du .NET Framework héritent
directement ou indirectement de la classe Object.
Développement .Net 16
8
Langage C#
Notion de méthode
• Une méthode est un bloc de code contenant une série
d'instructions.
• Une méthode définit les actions ou opérations soutenues
par une classe.
• Une méthode est définie en spécifiant le niveau d'accès, le
type de retour, le nom de la méthode, et une liste
optionnelle de paramètres entre parenthèses, suivie par
un bloc de code entre accolades.
public void Identifie()
{
Console.WriteLine("{0} {1}", nom, prenom);
}
Développement .Net 17
Langage C#
Notion de constructeurs
• Les constructeurs sont des méthodes spéciales de classe
qui sont exécutées quand une nouvelle instance d'une
classe est créée.
• Les constructeurs sont utilisés pour initialiser les attributs
de l'objet.
• Les constructeurs doivent avoir exactement le même nom
que la classe, et ils ne disposent pas d'un type de retour.
• On peut définir plusieurs constructeurs d’une classe
(chacun avec une signature unique)
Développement .Net 18
9
Langage C#
Notion de constructeurs
Exemple:
class Personne
{
private string nom;
private string prenom;
Développement .Net 19
Langage C#
Notion d’objets
• On utilise la classe d’objet qui définit la façon dont les
objets devraient être construits.
• Tous les objets créés à partir de la même classe
ressemblent et se comportent d'une manière similaire.
Développement .Net 20
10
Langage C#
Notion de visibilité
• L'encapsulation consiste à rendre les membres d'un
objet plus ou moins visibles pour les autres objets.
• L'encapsulation est un mécanisme consistant à
rassembler les données et les méthodes au sein d'une
structure en cachant l'implémentation de l'objet
Accessibilité Description
public Accessible à tous
private Accessible seulement aux objets de la classe elle-même
protected Accessible seulement aux objets dérivés de la classe
internal Accessible à l'assembly en cours.
Protected internal l'assembly en cours ou aux objets dérivés de la classe
Développement .Net 21
Langage C#
Notion de propriété
• Une propriété est un membre qui fournit un
mécanisme flexible pour la lecture, l'écriture ou le
calcul de la valeur d'un champ privé.
• C’est une méthodes d'instance spéciale s'appuyant
sur les accesseurs get/set pour accéder à l'état de
l'objet
• Objectifs :
– Respecter une encapsulation forte ( tous les champs
restent privés)
– Mettre en place un mécanisme d'accès souple 'simulant'
un accès direct aux champs
Développement .Net 22
11
Langage C#
Notion de propriété
Exemple:
class Personne
{
private string nom;
private string prenom;
private int age;
Développement .Net 23
Langage C#
TP
Développement .Net 24
12
Langage C#
Notion d’héritage
• L'héritage est un mécanisme de transmission des
caractéristiques d'une classe (ses attributs et méthodes)
vers une sous-classe.
• La classe dérivée contient les attributs et les méthodes
de sa superclasse
public class Mere {
.....
}
Langage C#
Notion d’héritage
Développement .Net 26
13
Langage C#
Notion d’héritage: les classes abstraites
• Les classes abstraites fournissent une définition
commune d'une classe de base qui peut être
partagée par plusieurs classes dérivées.
• La classe abstraite fournit souvent une
implémentation incomplète.
• Pour instancier une classe abstraite, il faut
hériter d’elle et terminer son implémentation.
Développement .Net 27
Langage C#
Notion d’héritage: les classes abstraites
Développement .Net 28
14
Langage C#
Notion d’héritage: les classes sealed
• Le mot clé sealed permet d'empêcher l'héritage d'une classe ou
de certains membres de la classe
• Une classe sealed ne peut pas être utilisée comme une classe de
base.
Développement .Net 29
Langage C#
Notion de polymorphisme
• Le polymorphisme représente la faculté d'une
méthode à pouvoir s'appliquer à des objets de
classes différentes
• Permet d'effectuer une action sélectionnée
contextuellement en fonction de la classe d'objets
à laquelle elle s'applique
• Le couple virtual/override permet d’appeler la
méthode de substitution adéquate à partir d'une
référence de base pointant vers des objets de type
classe dérivée
Développement .Net 30
15
Langage C#
Notion de polymorphisme
• Exemple:
public class Shape
{
public virtual void Draw()
{ Console.WriteLine("Performing base class drawing
tasks");}
}
Langage C#
La surcharge
• Objectif: créer des méthodes qui ont la même
fonctionnalité mais qui acceptent des paramètres
différents
• Les méthodes de surchage (overload) ont le même
nom
• Chaque méthode a une signature unique qui la
différencie des autres méthodes
• La signature de la méthode comprend le nom de
la méthode et la liste des paramètres (mais pas le
type de retour)
Développement .Net 32
16
Langage C#
La surcharge
• Exemple:
Développement .Net 33
Langage C#
Paramètres optionnels
• Les paramètres optionnels permettent d'omettre
des arguments pour certains paramètres
• Dans la signature de la méthode, les paramètres
optionnels doivent être cités après les paramètres
obligatoires
Développement .Net 34
17
Langage C#
Paramètres optionnels
• Appel de méthode en spécifiant les paramètres
obligatoires:
var forceStop = true;
StopService(forceStop);
Développement .Net 35
Langage C#
Paramètres nommés
• Permettent de spécifier un argument pour un
paramètre particulier en l'associant au nom du
paramètre, et non pas à la position du paramètre
dans la liste de paramètres.
• Permettent d’éviter d'avoir à mémoriser ou à
rechercher l'ordre des paramètres dans les listes
de paramètres des méthodes appelées
• Appel de méthode en utilisant un paramètre
nommé:
Développement .Net 36
18
Langage C#
Paramètres Output
• Une méthode peut retourner une valeur en
utilisant le return, mais si on a besoin de retourner
plusieurs valeurs
Paramètre output
Développement .Net 37
Langage C#
Paramètres Output
• Méthode avec paramètre output:
bool IsServiceOnline(string serviceName, out string statusMessage)
{
var isOnline = CoffeeServices.GetStatus(serviceName);
if (isOnline)
{ statusMessage = "Services is currently running."; }
else
{ statusMessage = "Services is currently stopped."; }
return isOnline;
}
Développement .Net 38
19
Langage C#
Syntaxe du C# : Le mot clé this
• Le mot-clé this est une référence à l'instance actuelle de
la classe.
Développement .Net 39
Langage C#
Syntaxe du C# : Le mot clé static
20
Langage C#
Syntaxe du C# : Le mot clé static
Développement .Net 41
Langage C#
TP
Développement .Net 42
21
Langage C#
Principales instructions :
if
while
do
for
switch
Foreach
Développement .Net 43
Langage C#
Principales instructions :
Instruction if
Développement .Net 44
22
Langage C#
Principales instructions :
Switch
public int Test(string label)
{
int result;
switch(label)
{
case null :result = 1; break;
case "medium": goto case "small";
case "large":
case "small":
result = 2; break;
default:
result = 0; break;
}
return result;
}
Développement .Net 45
Langage C#
Principales instructions :
While (boucle selon une expression booléenne)
int i = 0;
while (i < 5) int i = 0;
{ do
..... {
i++; .....
} i++;
}
while(true) while (i < 5);
{
.....
}
Développement .Net 46
23
Langage C#
Principales instructions :
For
// for(initialisation, condition, step)
Développement .Net 47
Langage C#
Principales instructions :
Foreach
Permet de parcourir un tableau, une collection
(list,queue,…)
Développement .Net 48
24
Langage C#
Opérateurs
Type Opérateur
Arithmétique +, -, *, /, %
Incrémentation ++, --
Comparaison ==, !=, <, >, <=, >=, is
Concaténation String +
Logique &, |, &&, ||
Indexing []
Casting ( ), as
Affectation =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=,
>>=, ??
Développement .Net 49
Langage C#
Opération entrée-sortie console
int i, j;
i=1; j=2;
Console. WriteLine("Somme"); // affiche Somme
Console.WriteLine("Somme = " + (i+j)); // affiche Somme = 3
string s = Console.ReadLine();
Développement .Net 50
25
Langage C#
Variables: Principaux types prédéfinis
Type Description Exemple
object Type de base fondamental de tous les autres types. object o = null;
string Type chaîne ; string s = "hello";
short Type intégral signé 16 bits short val = 12;
int Type intégral signé 32 bits int val = 12;
long Type intégral signé 64 bits long val1 = 12;
long val2 = 34L;
float Type virgule flottante à simple précision float val = 1.23F;
double Type virgule flottante à double précision double val1 = 1.23;
double val2 = 4.56D;
bool Type Boolean ; une valeur bool est true ou false bool val1 = true;
bool val2 = false;
char Type caractère ; char val = 'h';
decimal Type décimal de précision avec 28 chiffres decimal val = 1.23M;
significatifs Développement .Net 51
Langage C#
Variables: Déclaration et affectation
• Déclaration de variable:
// DataType variableName; // DataType variableName1, variableName2;
Ou int price, tax;
int price;
• Affectation de variable:
// variableName = value;
price = 10;
Développement .Net 52
26
Langage C#
Variables: Déclaration et affectation
Variable d’objet:
• Création d’une instance de classe
ServiceConfiguration config = new ServiceConfiguration();
Développement .Net 53
Langage C#
Variables: Conversion de types
Conversion implicite:
– Fonctionne automatiquement et sans risque d’échec
– Pas de perte de précision/d’information
– En C #, on peut faire le cast d’un objet à l'un de ses types de base.
• Affectation d'un objet de classe dérivée à un objet de classe de
base ne nécessite pas de syntaxe particulière:
• Exemples:
– Int x = 123456;
– Long y = x; // implicite
Développement .Net 54
27
Langage C#
Variables : Conversion de types
Conversion implicite:
• Le tableau suivant montre les conversions implicites supportées
par C#
De A
short int, long, float, double, decimal
int long, float, double, decimal
long float, double, decimal
float double
char int, long, float, double,decimal
Développement .Net 55
Langage C#
Variables : Conversion de types
Conversion explicite:
– Nécessite un cast
– Peut être refusé
– De l’information/précision peut être perdue
• Affectation d'un objet de classe de base à un objet de la classe
dérivée doit être fait explicitement:
Développement .Net 56
28
Langage C#
Variables : Conversion de types
Conversion explicite:
• Exemples:
– double d = 1,235689;
– float f = (flaot)d; //explicite
• Le cast ne peut pas être utilisé si le format de donnée doit être
changé (ex: conversion de string à integer)
Développement .Net 57
Langage C#
Variables : Conversion de types
Conversion par System.Convert:
– string possibleInt = "1234";
– int count = Convert.ToInt32(possibleInt);
Conversion par TryParse:
int number = 0;
string numberString = "1234";
if (int.TryParse(numberString, out number))
{
// Conversion succeeded, number now equals 1234.
}
else
{
// Conversion failed, number now equals 0.
}
Développement .Net 58
29
Langage C#
Variables : L’opérateur is
• Pour éviter les erreurs d'exécution de conversion, comme le
InvalidCastException, l'opérateur is peut être utilisé pour vérifier
si le cast est autorisée avant de l'effectuer.
Développement .Net 59
Langage C#
Variables : L’opérateur as
• L'opérateur as est similaire à l'opération cast, mais dans le cas ou
la conversion de type n’est pas possible, null est renvoyé au lieu
de lever une exception.
Développement .Net 60
30
Langage C#
Variables : String
• La concaténation de string peut se faire par:
– L’utilisation de l’opérateur +: mauvais codage puisque à
chaque concaténation, une nouvelle variable string est crée
en mémoire.
Développement .Net 61
Langage C#
TP
Développement .Net 62
31
Langage C#
Variables : Array
• Array est un ensemble d'objets qui sont regroupés
ensemble et gérés comme une unité.
• C# suuporte:
– Array à une dimension (liste)
– Aray à deux dimensions (tableau)
– Array à plusieurs dimensions
• Array d’un type (objet) particulier ne peut contenir que
les éléments de ce type (pour la manipulation d’objets
différents, il faut utiliser les collections)
datatype[] arrayName;
Développement .Net 63
Langage C#
Variables : Array
• Déclaration de Array de type int :
int[] arrayName;
• Initialisation de Array de type int :
int[] arrayName = new int[5];
• Affectation des valeurs:
arrayName [0] = 8;
• Affectation des valeurs avec la declaration!
Développement .Net 64
32
Langage C#
Variables : Array
• Accès aux données d’un Array:
– Accès par index:
int[] oldNumbers = { 1, 2, 3, 4, 5 };
int number = oldNumbers[2];
Développement .Net 65
Langage C#
Variables: enum
• Un type énumération (enum) permet de créer une variable avec
un ensemble fixe de valeurs possibles.
enum enum_name {enumeration list};
Développement .Net 66
33
Langage C#
List
• Représente une class Personne
{ public string Name { get; set; }
liste fortement public int Id { get; set; }
typée d'objets static void Main(string[] args)
accessibles par { List<Personne> personneListe = new
List<Personne>
index. { new Personne
• Fournit des {
Id=123,
méthodes de Name= "Ali"
recherche, de tri },
et de new Pesonne
{
manipulation de Id=554,
listes. Name= "Ahmed"
}
};
}
}
Développement .Net 67
Langage C#
List
• List[index]: obtenir l’élément de l’index spécifié
• List.Add : ajouter un élément à la liste
• List.Contains : retourne True si la liste contient l’élément
spécifié
• List.Clear : supprime tous les éléments de la liste
• List.Find : retourne l’élément recherché
• List.ForEach : exécute l’instruction pour chaque élément de la
liste
• List.Remove : supprime l‘élément spécifié de la liste
• …
Développement .Net 68
34
Langage C#
Classification des variables
• Variable de type valeur:
– La variable contient la valeur de la donnée
– Les types prédéfinis, les structures et les enum sont
de type valeur. Ex: int mavariable=100;
• Variable de type référence
– La variable de type référence stocke une référence
aux données
– Une référence établit "un lien" vers l’objet visé
– une référence n'est pas obligatoirement l'adresse de
l'objet référencé – cependant les concepteurs du C#
ont opté pour cette option technologique
– Exceptés les cas plus hauts (variables), tout le reste
est référence
Développement .Net 69
Langage C#
Classification des variables
• Illustration valeur vs référence
Développement .Net 70
35
Langage C#
Structures
• 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
Développement .Net 71
Langage C#
Structures
• Déclaration de structure:
public struct Coffee
{
public int Strength;
public string Bean;
public string CountryOfOrigin;
// Other methods, fields, properties, and events.
}
• Instanciation:
Coffee coffee1 = new Coffee(); // constructeur par défaut
coffee1.Strength = 3;
coffee1.Bean = "Arabica";
coffee1.CountryOfOrigin = "Kenya";
Développement .Net 72
36
Langage C#
Différence entre Structures et classes
Développement .Net 73
Langage C#
TP
Développement .Net 74
37
Langage C#
Les indexeurs
Développement .Net 75
Langage C#
Les indexeurs
Exemple:
– Création de structure qui inclut un indexeur:
public struct Menu
{
public string[] boissons;
public Menu()
{ boissons = new string[]; }
// This is the indexer.
public string this[int index]
{
get { if(index>=0 && index<boissons.Length)
{ return this.boissons[index]; }
else return "error"; }
set { if (index >= 0 && index < boissons.Length)
{ this.boissons[index] = value; } }
}
}
Développement .Net 76
38
Langage C#
Les indexeurs
Exemple:
Accès aux valeur du tableau en utilisant l’indexeur:
static void Main(string[] args)
{// Create new instance and assign elements in the array through the indexer.
Menu menu1 = new Menu(4);
menu1[0] = "Americano";
menu1[1] = "Espresso";
menu1[2] = "Cappuccino";
menu1[3] = "Café au Lait";
Développement .Net 77
Langage C#
Type Delegate
• le type delegate est un type référence qui peut être utilisé
pour encapsuler une méthode nommée ou anonyme
• C’est un type "pointeur sur une fonction"
• C’est une variable qui contient une fonction
• Un délégué peut pointer sur plusieurs fonctions (multicast).
• Déclaration de delegate:
delegate int unDelegue (int x, int y);
• Instanciation de delegate:
unDelegue delg = new unDelegue(addition);
Ou
Développement .Net 78
39
Langage C#
Type Delegate
Exemple:
delegate int monDelegue(int x);
class Program
{
public static int incremente (int a)
{ return ++a; }
Langage C#
Expression Lambda
• Une expression lambda est une fonction anonyme
utilisée pour créer des types délégués .
• Une expression lambda comprend :
– Des paramètres
– Le signe =>
– Une expression résultat.
• Quelques expressions :
( n) => n%2
( a, b) => a+b
• Les expressions lambda sont particulièrement utiles pour
écrire des expressions de requête LINQ.
Développement .Net 80
40
Langage C#
Expression Lambda
• Exemple:
delegate int del(int i);
static void Main(string[] args)
{
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
Console.WriteLine(j);
Console.ReadKey();
}
Développement .Net 81
Langage C#
Exception
• Une exception est une instance de la classe System.exception
ou d’une classe dérivée
– Contient des information à propos de l’exception
– Propriétés:
• Message (le message associé à l’exception)
• StackTrace (la pile d’appel des méthodes)
• InnerException (en cas d’exception imbriquée)
Développement .Net 82
41
Langage C#
Exception
Try …. Catch …. Finally
Développement .Net 83
Langage C#
Exception
• Exemple: Il est possible de relever la même exception ou de la capturer
(bloc catch) pour en lever une autre
Try
{ Console.WriteLine("try");
throw new Exception("message");
}
catch(ArgumentNullException e)
{
Console.WriteLine("caught null exception");
}
catch
{
Console.WriteLine("catch");
}
finally
{
Console.WriteLine("finally");
}
Développement .Net 84
42
Langage C#
TP
Développement .Net 85
43