Vous êtes sur la page 1sur 35

Langage C#

C# : Concepts avancs

1
Plan

1. Quelques notions
2. Les tableaux
3. Les collections
4. Les interfaces
5. La gestion des exceptions
6. Prsentation des vnements

2
Les Structures

Declaration :

struct Point
{
public int x, y; // champs publiques
Point(int x, int y) { this.x = x; this.y = y; } // constructeur publique
void MoveTo(int a, int b) { x = a; y = b; } // mthodes
}

Utilisation :

Point p = new Point(3, 4); // initialisation de l'objet avec le constructeur.


p.MoveTo(10, 20); // appel de la mthode

3
Differences entre Classes et Structures

Classes Structures
Type rfrence Type valeur
(mmoris dans le tas) (mmoris dans la pile)
supporte l'hritage (toutes les classes pas d'hritage mais compatible avec
hritent de Object) Object
Plusieurs constructeurs Un seul constructeur
peut implmenter les interfaces peut implmenter les interfaces
peut avoir un destructeur pas de destructeur

Les structs peuvent implmenter une interface mais ils ne peuvent pas
hriter d'un autre struct. Pour cette raison, les membres de struct ne
peuvent pas tre dclars comme protected.

4
Boxing-unboxing

Les types valeurs int, struct, enum sont compatible avec object.

Boxing :
encapsule un int de valeur 3 dans un
object obj =3;
objet "object" et l'enregistre sur le tas.

Unboxing :
int a = (int) obj; //cast

5
Les conversion de types

Type Double
Type Float
Type Decimal
Type Long
Type Int, Uint
Conversion avec perte Type Short Conversion sans perte
de donnes possible : de donnes : Widening
Narrowing (explicites) Type byte, Char, sbyte (implicites)

6
Les outils de conversion de types

mthode Descriptif
Type.ToString() Convertit un objet en chaine de caractres et
inversement. Parse peut lever une exception.
Type.Parse()
Oprateur (type) pour effectuer un cast. Convertit les types qui dfinissent des oprateurs
de conversions explicites

type.TryParse() Tente de convertir une chaine de caractre en un


type.TryParseExact() type particulier. Retourne true si la conversion a
(Exemple: System.Int32.TryParse()) russi, false sinon.

7
Loprateur is

Loprateur is est compltement analogue


loprateur instanceof de java.

Object o = new Object();


Boolean b1 = (o is Object); // b1 is true.
Boolean b2 = (o is Employee); // b2 is false.

8
Loprateur as

Utilis pour les cast explicites entre deux


types compatibles
Retourne null si le cast nest pas possible
(au lieu dune exception)
Object o = new Object(); // Creates a new Object object
Employee e = o as Employee; // Casts o to an Employee
// The cast above fails: no exception is thrown, but e is set to null.
e.ToString(); // Accessing e throws a NullReferenceException.

9
La classe String

Peut tre utilis comme un type simple :

string s = Ses";

Les string sont immutables ! (contrairement StringBuilder)


L'oprateur + sert la concatnation s = s + " ame"; // s = " Sesame"
peut tre index s[0] // " S"
Les string sont de type rfrence pourtant on trouve leurs valeurs sur la pile!!
== et != compare leurs valeurs, ce qui est une exception pour les types rfrences
La classe String dfinie plusieurs fonctions utiles :
CompareTo, IndexOf, StartsWith, Length

10
Les tableaux

Dfinition dun tableau


Cration dun tableau
Initialisation et accs aux membres du tableau
Parcours du tableau via linstruction foreach
Passage de tableaux en paramtres

11
Dfinition dun tableau

Tous les membres dun tableau doivent tre du mme


type
Les tableaux commencent 0
Les tableaux sont des objets
Ils peuvent tre :
Monodimensionnels
Multidimensionnels, dont le rang est suprieur 1
Agrgs, un tableau dont les lments sont des tableaux

Le type tableau offre des mthodes pratiques


Sort trie les lments dans un tableau de rang 1
Clone cr une copie du tableau
GetLength retourne la taille dune dimension donne

12
Cration dun tableau

Dclarez un tableau en ajoutant une paire de


crochets la fin du type de la variable

int[] monTableauEntier;
Pour le crer, il faut ensuite linstancier
int[ ] nombres = new int[5];

Ex: cration dun tableau de type Object


object [ ] animaux = new object [100];

13
Initialisation et accs aux membres du
tableau
Initialisation du tableau

int[] nombres = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};


nombres[4] = 6;

Accs aux membres du tableau

string[] animaux = {"Souris", "Chat", "Lion"};


animaux[1] = "Elephant";
string unAnimal = animal[2];

14
Parcours du tableau via linstruction
foreach

Linstruction foreach permet de rcuprer chaque


lment du tableau dans une variable du mme
type

int[] nombres = {4, 5, 6, 1, 2, 3, -2, -1, 0};


foreach (int nombre in nombres) {
Console.WriteLine(nombre.ToString());
}

15
Passage de tableaux en paramtres

On utilise le mot cl params pour passer un nombre


variable darguments
public int Somme(params int[] liste) {
int total = 0;
foreach ( int i in liste ) {
total += i;
}
return total;
}

...
// pe est lobjet fournissant Somme()
...
int valeur = pe.Somme( 1, 3, 5, 7, 9, 11 );

16
Exercice: Utilisation de foreach avec un tableau

Hands-on Practice

Dans cet exercice, vous allez


crer un tableau, le remplir, et
utiliser foreach pour afficher
ses valeurs

17
Les interfaces

Quest ce quune interface ?


Utilisation dune interface
Utilisation des objets implmentant des interfaces
Hritage multiple dinterfaces
Les interfaces et le Framework .NET

18
Quest ce quune interface ?

Une interface:
Est un type rfrence dfinissant un contrat
Spcifie les membres devant tre fournis par les classes ou
interfaces limplmentant
Peut contenir des mthodes, proprits et vnements
Ne fournit pas dimplmentations pour ses membres
Peut hriter de zro ou plusieurs interfaces

19
Utilisation dune interface

Dclaration de linterface

interface ICarnivore {
bool AFaim
Animal Chasse();
void Mange(Animal victime);
}
Implmentation

public class Lion : Animal, ICarnivore {


private bool faim;
bool AFaim {return faim;}
Animal Chasse() { return new Animal();}
void Mange(Animal victime){}
}

20
Hritage multiple dinterfaces

class Chimpanze: Animal, ICarnivore, IHerbivore { }

Les interfaces permettent de dcrire un type


de comportement
Exemples:
Le lion est une espce animale et se comporte
comme un carnivore
Le requin est une espce animale et se comporte
galement comme un carnivore
Il faut donc faire driver Lion et Requin dune
classe abstraite Animal
Puis dfinir le comportement dun carnivore dans
une interface
21
Les interfaces et le Framework .NET

Permet vos objets de se comporter comme les


objets du Framework .NET
Exemple: Interfaces utilises par les classes de
type Collection
ICollection, IComparer, IDictionary, IDictionary
Enumerator, IEnumerable, IEnumerator,
IHashCodeProvider, IList
public class Zoo : IEnumerable {
...
public IEnumerator GetEnumerator() {
return (IEnumerator)new ZooEnumerator( this );
}

22
Les modificateurs daccs

23
public L'accs n'est pas limit.

protected L'accs est restreint la classe conteneur ou


aux types drivs de la classe conteneur.

internal L'accs est restreint l'assembly en cours.

protected internal L'accs est restreint l'assembly en cours ou


aux types drivs de la classe conteneur.

private L'accs est restreint au type conteneur.


Comment grer une exception ?

Syntaxe de gestion derreur

try {
// code suspect
}
catch (Exception e){
// gestions des exceptions
}
finally {
// action toujours effectue
}

25
Prsentation des vnements

Les vnements

26
Les vnements

Fonctionnement des vnements


Dfinition dvnements
Passage de paramtres dvnements

27
Les vnements

Un vnement est une information, transmise l'application par


le gnrateur d'vnement, qui indique qu'il s'est produit
"quelque chose d'interessant" qui doit ou peut susciter l'attention
de l'application.

28
Les vnements

29
Fonctionnement des vnements

diteur
Dclenche un vnement pour avertir tous les objets
intresss (les abonns)

Abonn
Marque son intrt pour un vnement
Est alert lorsquun diteur dclenche un vnement
Fournit une mthode appeler lorsque lvnement est
dclench

30
Dfinition dvnements

Dfinition dun vnement


public class Noyau{
public delegate void SurChauffeDelegate();
public event SurChauffeDelegate SurChauffe;}

Abonnement un vnement
PompeHydro maPompe = new PompeHydro();
PompeThermo pompe2 = new PompeThermo();
Noyau monNoyau=new Noyau();
monNoyau.SurChauffe +=
new Noyau.SurChauffeDelegate(maPompe.DclenchePompeHydro);
monNoyau.SurChauffe +=
new Noyau.SurChauffeDelegate(pompe2.DclencheSuperPompeThermo);

31
Pour rsumer

32
Livres sur la programmation C#

Microsoft Visual C# Step By Step


A Programmers Introduction to C# (2nd Edition)
Inside C#
C# Unleashed
Programming C#
C# Developers Headstart
C# and the .NET Platform

33
Ressources sur le Web
http://www.dotnetwire.com
http://www.csharphelp.com
http://www.csharp-station.com
http://www.c-sharpcorner.com

34
Dveloppement autour du Framework .NET

http://www.microsoft.com/net
http://msdn.microsoft.com/net
http://www.gotnet.com

35

Vous aimerez peut-être aussi