Cours 2
Cours 2
Cours 2
Net
Meya HAROUNE
meye.haroune@gmail.com
Meya HAROUNE
PLAN
Introduction
Architecture .Net
Les bases de C#
Meya HAROUNE 2 2
Introduction
Microsoft .NET est une plate-forme commune de développement libre et open source ,
fortement distribué.
Meya HAROUNE 3 3
Objectifs du .Net
Meya HAROUNE 3
4 4
Architecture du .Net
VB C++ C# JScript …
Windows
ASP.NET ADO.NET
Forms
Operating System
Meya HAROUNE 5 3
5
Architecture du .Net
Meya HAROUNE 3
6 6
Common Language specification (CLS)
La CLS est une normalisation qui doit être respecté et implémenté par tout langage de
La CLS a pour objectif de garantir l'interopérabilité entre les langages .NET. Il est
possible par exemple de créer une classe dans un langage conforme à la CLS qui hérite
Meya HAROUNE 7 3
7
La bibliothèque .NET
La bibliothèque .NET est constituée de trois couches:
• La Base classes Library (BCL): rassemble des classes permettant d'effectuer les
opérations de base telles que la manipulation de chaînes de texte, la gestion des
entrées/sorties, des communications réseaux, des threads, etc.
• Les classes de données et XML est composée de deux bibliothèques de classes
d'accès aux données :
- La bibliothèque ADO.NET, permettant l'accès sous format XML aux interfaces de
bases de données SQL Server ODBC, OLEDB, ORACLE, et aux fichiers XML.
- Une bibliothèque de classes permettant de manipuler les données XML.
• Les services Web, les applications Web et les applications Windows
Meya HAROUNE 3
8 8
Common Language Runtime (CLR)
La CLR est la machine virtuelle qui assure l'exécution des programmes .NET. Elle assure :
Meya HAROUNE 3
9 9
Exécution en CLR
Source VB C# C++
code
Compiler Compiler Compiler
Native Code
Toutes les classes d'une application sont compilées dans un même assemblage (assembly).
Au moins un de ces assemblages doit contenir un point d'entrée pour démarrer l'application
(fonction principale)
Un assemblage contient:
Meya HAROUNE 3
11 11
EDI pour .Net
programmation tels que VB, C#, C++ .Net, J# .Net, etc. Il est disponible dans plusieurs
éditions.
Meya HAROUNE 3
12 12
C# (C Sharp)
C# est simple et complètement orienté objet → pas de possibilité d’écrire des fonctions
Permet l’écriture des programmes plus surs et plus stables grâce à la gestion automatique
la directive « using ».
Meya HAROUNE 3
13 13
Les bases de C#
Meya HAROUNE 3
14 14
Bonjour tout le monde
using System ;
class Prog
{
static void Main()
{
// commentaire sur une seule ligne
/* Je suis un commentaire sur
plusieurs lignes. */
}}
Meya HAROUNE 3
16 16
Les variables
les types valeur: contiennent directement leurs données, les types de valeur de
C# sont divisés entre types simples, types enum, types struct et types valeur
nullable.
Les types référence : contiennent des références à leurs données, connues sous
le nom d’objets, les types de référence de C# sont encore divisés en types de
classes, types d’interfaces, types de tableaux et types délégués
Déclaration:
Type NomVariable (ex int age);
Déclaration et affectation:
Int age = 30;
Meya HAROUNE 3
17 17
Types de données
Les types fournit par C# :
• bool (booléens),
• char (caractère Unicode 16 bits),
• string (chaîne de caractères Unicode),
• types intégraux non signés (byte, ushort, uint, ulong),
• types intégraux signés (sbyte, short, int, long),
• types flottants (float, double),
• Decimal (decimal : 128 bits)
• object (type de base de tous les objets),
• void (type vide, pour les procédures).
Meya HAROUNE 3
1818
Conversion/Transtypage
Conversions implicites: peut être effectuée quand la valeur à stocker peut tenir dans la
variable sans être tronquée ni arrondie
Decimal nombreDecimal = 1234.12m; double nombreDouble = 14.12;
int nombreEntier = 1234; char caractere = 'A';
nombreDecimal = nombreEntier; // un int vers un decimal
nombreDecimal = 25; // un int vers un decimal
nombreEntier = caractere; // un char vers un int
pour transformer une chaîne en nombre ou un nombre en chaîne. Il faut utiliser les
méthodes Parse() et ToString().
Meya HAROUNE 3
19 19
Les instructions conditionnelles (if)
L’instruction if (si en français) permet d’exécuter du code si une condition est vérifiée.
Meya HAROUNE 3
2020
Les instructions conditionnelles
Les opérateurs de comparaison
Opérateur Description
== Egalité
!= Différence
> Supérieur à
< Inférieur à
>= Supérieur ou égal
<= Inférieur ou égal
&& ET logique
|| OU logique
! Négation
Meya HAROUNE 3
21 21
Les instructions conditionnelles (Switch)
L’instruction switch peut être utilisée lorsqu’une variable peut prendre beaucoup de valeurs
switch (i)
{
case 1:
case 2:
// Traitement si i vaut 1 ou 2. break;
// Obligatoire.
case 5:
// Traitement si i vaut 5.
default:
// Traitement pour les autres cas.
break;
}
// Contrairement au C, switch fonctionne aussi avec
//les chaînes.
Meya HAROUNE 3
2222
Les boucles conditionnelles
permettent de répéter des actions tant que certaines conditions sont satisfaites
Meya HAROUNE 3
2323
Les boucles conditionnelles
permettent de répéter des actions tant que certaines conditions sont satisfaites.
do ... While:
do
{
// Permet d’exécuter le code une 1ère fois
//obligatoirement et ensuite en boucle tant
//que lacondition est satisfaite.
}
while (condition);
Meya HAROUNE 3
2424
Les boucles conditionnelles
permettent de répéter des actions tant que certaines conditions sont satisfaites.
for:
Meya HAROUNE 3
2525
Les boucles conditionnelles
permettent de répéter des actions tant que certaines conditions sont satisfaites.
foreach:
Meya HAROUNE 3
2626
Les tableaux
classique (IndexOutOfRangeException).
typeElement[] nomTableau;
Allocation mémoire:
Meya HAROUNE 3
2727
Les tableaux
Meya HAROUNE 3
2828
Les listes
Déclaration:
List<typeelements> nomdelaliste;
Instanciation :
Meya HAROUNE 3
2929
Les listes
Meya HAROUNE 3
3030
Les classes
Une classe est une structure de données qui combine l’état (champs) et les actions
(méthodes et autres fonctions membres).
Les classes sont déclarées avec le mot clé « class »
Les données membres se déclarent comme des variables, appelées objets ou
instances
Les instances de classes sont créées à l’aide de l’opérateur new
Plusieurs types de mode d'accès possibles:
– private (accessibles dans la classe),
– public (accessibles de tout le monde),
– protected (accessibles par les instances des classes dérivées),
– internal ( accessibles uniquement dans les fichiers d’un même assembly).
Meya HAROUNE 3
31 31
Exemple de classe
class Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
//Création d’objets :instanciation de
//classe
Meya HAROUNE 3
3232
Exemple de classe
class Point
{
public int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
//Création d’objets :instanciation de
//classe
Meya HAROUNE 3
3333
Méthodes et paramètres
• Une méthode est un bloc de code qui contient une série d'instructions.
• En C# les méthodes sont déclarées dans une classe ou un struct.
• Déclaration d’une méthode :
public static void nomdelamethode(int nomDu1erParae, string
nomDu2ePara){
// Code à exécuter quand la méthode est appelée.}
Meya HAROUNE 3
3434
Passages de paramètres(par valeur)
void Changeparametres(int monparametre)
{
Console.WriteLine("Le paramètre formel monparametre : " + monparametre);
monparametre = 5;
Console.WriteLine("Le paramètre formel monparametre : " + monparametre);
}
L’utilisation:
int monnvparametre = 10;
Console.WriteLine("Le paramètre effectif monnvparametre : " + monnvparametre );
Changeparametres(monnvparametre);
Console.WriteLine("Le paramètre effectif monnvparametre : " + monnvparametre);
Résultat d’éxécution:
Meya HAROUNE 3
3535
Passages de paramètres (par ref)
void Changeparametres(ref int monparametre)
{
Console.WriteLine("Le paramètre formel monparametre : " + monparametre);
monparametre = 5;
Console.WriteLine("Le paramètre formel monparametre : " + monparametre);
}
L’utilisation:
int monnvparametre = 10;
Console.WriteLine("Le paramètre effectif monnvparametre : " + monnvparametre );
Changeparametres(ref monnvparametre);
Console.WriteLine("Le paramètre effectif monnvparametre : " + monnvparametre);
Résultat d’éxécution:
Meya HAROUNE 3
3636
Les constructeurs et Les destructeurs
Le constructeur est une méthode appelée lors de la création d’un objet à partir
d’une classe.
Le destructeur est une méthode appelée lors de la destruction d'un objet d’une
classe.
Meya HAROUNE 3
3737
Les constructeurs et Les destructeurs
public class Livre
{
private string Auteur;
private int Prix;
// Constructeur 1
public Livre() { Auteur = ‘Sidi’;
Prix= 500; }
// Constructeur 2
public Livre(string Auteur) { this.Auteur =Auteur; }
// Constructeur 3
public Livre(string Auteur, int Prix){
this.Prix = Prix;
this.Auteur = Auteur;}
~Livre(){ /* rien à désallouer!*/ } // destructeur 1
}
class Prog
{
static void Main(string[] args)
{
Livre A = new Livre(); // Appelle le Constructeur 1.
Livre B = new Livre(‘Ali’); // Appelle le Constructeur 2.
Livre C = new Livre(‘Ali’,‘400’); // Appelle le Constructeur 3.
}
// le ramasse miettes appelle le destructeur sur les objets A B et C
// avant la terminaison du programme
}
Meya HAROUNE 3
3838
Les accesseurs
Permet de définir des fonctions d'écriture et de lecture de la valeur d'un champ privé en utilisant une
propriété,
L’accesseur set son type de retour est vide, et utilise un paramètre implicite nommé value son type est
celui de la propriété.
class Person {
private string name; // le champs nom
string Name // the Name property
{
get { return name; }
set { name = value; }
} }
L’utilisation:
Person P = new Person();
ushort personName = P.Name;
P.Name = ‘Fatma’;
Meya HAROUNE 3
3939
Les exceptions
Une exception est créée et lancée quand une erreur survient.
Le bloc try peut être suivi ou non d'un nombre quelconque de bloc catch attrapant
différents types d'exception.
Meya HAROUNE 3
4040
Les exceptions
try
{
Console.Write("Entrez un nombre : ");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("120/nombre = {0}",
120/n);
}
catch (DivideByZeroException dbzEx)
{
Console.WriteLine("Erreur : division par zéro.");
}
catch (Exception ex)
{
Console.WriteLine(
"Une autre exception a eu lieu : {0}.",
ex.Message);
}
finally
{
Console.WriteLine("Quel que soit le résultat, ceci est affiché.");
}
Meya HAROUNE 3
41 41
Exceptions courantes
Type d'exception Description Exemple
Exception Classe de base pour toutes les Aucun (utilisez une classe dérivée de
exceptions. cette exception).
IndexOutOfRangeException Levée par le runtime uniquement Indexation d’un tableau en dehors de
en cas d’indexation incorrecte du sa plage valide :
tableau. arr[arr.Length+1]
NullReferenceException Levée par le runtime uniquement object o = null;
si un objet Null est référencé. o.ToString();
InvalidOperationException Levée par les méthodes en cas Appel de Enumerator.MoveNext()
d’état non valide. après la suppression d’un élément de
la collection sous-jacente.
ArgumentException Classe de base pour toutes les Aucun (utilisez une classe dérivée de
exceptions d’argument. cette exception).
ArgumentNullException Levée par les méthodes qui String s = null;
n’acceptent pas la valeur Null pour "Calculate".IndexOf(s);
un argument.
Meya HAROUNE 3
4242
L’héritage (1/2)
Il permet de créer de nouvelles classes qui réutilisent et modifient le comportement défini dans les
autres classes.
La classe dont les membres sont hérités sont appelées classe de base et la classe qui hérite de ces
membres sont des classe dérivée.
En .NET une classe dérivée ne peut avoir qu'une seule classe de base directe (pas d’héritage multiple).
L’héritage est transitif ( i.e. si la classe C est dérivée de la classe B et la classe B est dérivée de la classe A,
la classe C hérite des membres déclarés dans la classe B et la classe A).
Meya HAROUNE 3
4343
L’héritage (2/3)
Véhicule
#marque: Chaine
#modèle: Chaine
#année: Entier
#VitesseMax: Entier
#distanceParcourue: Entier
#durée: Entier
Voiture Vélo
puissanceFiscale: Entier Occupation: Entier
Propriétés communes protégées regroupées dans Véhicule Pour être accessibles par les sous-
classes, leur modificateur d’accès est protected.
Meya HAROUNE 3
4444
L ’héritage (3/3)
using System;
class Employé {
protected string nom;
public Employé(string nom)
{this.nom = nom;}}
Meya HAROUNE 3
4545
Polymorphisme (1/3)
Le polymorphisme un mot grec qui signifie avoir plusieurs formes .
Lorsqu’une classe de base déclare une méthode comme étant virtuelle (virtual), une
classe dérivée peut substituer la méthode avec sa propre implémentation.
Si une classe de base déclare un membre comme étant abstraite (abstract), la méthode
doit être substituée dans toutes les classes non abstraites qui héritent directement de cette
classe.
Le membre dérivé doit utiliser le mot clé override pour indiquer explicitement que la
méthode est conçue pour participer à l’appel virtuel.
Meya HAROUNE 3
4646
Polymorphisme (2/3)
public class Employé {
protected string nom;
public Employé(string nom) {nom = nom;}
public virtual void GetDescription()
{ Console.Write("Nom: {0}",nom);} }
Résultat d’exécution :
Meya HAROUNE 3
4848