Académique Documents
Professionnel Documents
Culture Documents
Microsoft .Net - C#
La Programmation
Orientée Objet
Meriem BENHADDI
FSTG Marrakech
La programmation procédurale
Approche intuitive : La découpe fonctionnelle d'un
problème informatique en blocs indépendants : la
création de fonctions qui admettent des arguments et
renvoient des valeurs. Exemple : C, Pascal...
Fonctions à développer :
1
02/10/2023
La programmation procédurale
Avantages : La réutilisabilité du code
La découpage d’un problème en blocs indépendants (fonctions
et procédures) va permettre aux programmeurs de réutiliser
les fonctions déjà développées : concept d'appel procédural .
Ce qui favorisera davantage la productivité.
La programmation procédurale
2
02/10/2023
La programmation procédurale
Amélioration :
Afin d’éviter l’augmentation de l’effort d’évolution des
applications, on peut :
- rassembler les valeurs qui caractérisent un type, dans
le type
- centraliser les traitements associés à un type, auprès
du type
La programmation procédurale
3
02/10/2023
Le concept d’objet :
Un objet est une entité qui possède une identité (un nom).
Un ensemble d'attributs caractérise l'état de l'objet.
Un ensemble d'opérations (méthodes) en définissent le
comportement.
Un objet est une instance de classe (une occurrence d'un type
abstrait).
Une classe est un type de données abstrait, caractérisé par des
propriétés (attributs et méthodes) communes à des objets et
permettant de créer des objets possédant ces propriétés.
Document
Code document : int
Nom document : String
Type document : String
Calculer date rappel() : Date
4
02/10/2023
10
5
02/10/2023
Le concept de classe
Une classe est un ensemble d’attributs et de méthodes
regroupées dans une même entité. C’est une description
abstraite d'un objet.
12
6
02/10/2023
Le concept de classe
Voici le code initial de la classe Rational:
Namespace POO
{
class Rational
{
public int numerator; //un attribut de la classe
public int denominator; //un autreattribut de la classe
// une méthode permettant de transformer notre objet en une chaine de
caractères
public override string ToString()
{
return "[" + this.numerator + "/" + this.denominator + "]";
}
}
}
13
Les objets
14
7
02/10/2023
Les objets
15
Exemple :
String chaine;
Rational r;
16
8
02/10/2023
Exemple :
m = new Rational();
17
Exemple :
18
9
02/10/2023
Analysons l’instruction :
Rational r = new Rational();
19
}
}
20
10
02/10/2023
set
{
if (value == 0)
throw new Exception ("Denominator cannot be 0");
this.denominator = value;
}
}
21
22
11
02/10/2023
Les constructeurs
23
Règles à respecter
1- Constructeur d’instance:
Un constructeur doit utiliser le nom de la classe
Un constructeur ne doit pas retourner de valeur de retour. Il ne
doit même pas y avoir la présence du mot clé void
Les constructeurs acceptent la surcharge
2- Constructeur de classe
Il doit être static
Il ne sera invoqué qu’une unique fois au chargement de la
classe
Il ne prend pas de paramètre.
24
12
02/10/2023
class Rational
{
private int numerator;
private int denominator;
Destructeur d’objet
Cette méthode détruit l’objet et libère l’espace mémoire pour
être utilisé
Le destructeur de classe doit avoir le même nom que la classe
préfixée du caractère ~
class Rational
{
~Rational()
{
Console.WriteLine(“Objet détruit”);
}
26
13
02/10/2023
Définition d’opérateurs
C# permet de définir des opérateurs sur vos classes.
Par exemple, la classe String redéfinit l’opérateur + pour
réaliser des concaténations de caractères
De même, vous pouvez ajouter des opérateurs arithmétiques
et de comparaison à votre classe Rational
class Rational
{
// Début de la classe
public static Rational operator+(Rational r1, Rational r2)
{
return new Rational(
r1.numerator*r2.denominator +
r1.denominator*r2.numerator, r1.denominator*r2.denominator
);
}
27
// suite de la classe
28
14
02/10/2023
29
30
15
02/10/2023
31
32
16
02/10/2023
33
17
02/10/2023
35
36
18
02/10/2023
37
Définition :
La surcharge d'une méthode permet de
définir plusieurs fois une même méthode
avec des arguments différents en se basant
sur des signatures différentes.
38
19
02/10/2023
40
20
02/10/2023
Attention !
Il n'est pas possible d'avoir deux méthodes
de même nom dont tous les paramètres sont
identiques et dont seul le type retourné
diffère : le type de retour d’une méthode
n’intervient pas dans le choix d’une méthode
surdéfinie.
41
42
21
02/10/2023
43
Choix de la méthode :
A la rencontre d’un appel de méthode, le compilateur recherche
toutes les méthodes acceptables et il choisit la meilleur si elle
existe.
Pour qu’une méthode soit acceptable, il faut :
1- qu’elle dispose du nombre d’arguments voulus
2- que le type de chaque argument effectif soit compatible par
conversion implicite avec le type de l’argument
correspondant
3- Qu’elle soit accessible (une méthode privée sera acceptable
uniquement pour un appel depuis l’intérieur de la classe)
44
22
02/10/2023
45
Exemple 1:
23
02/10/2023
Exemple 2:
47
class Point
{ public Point()
{ x=0; y=0;
}
public Point(int abs)
{ x=y=abs;
}
public Point(int abs, int ord)
{ x=abs; y=ord;
}
} 48
24
02/10/2023
49
Exemple :
Public class Surdfac Public class Surdfac
{ public void f(float x) { public static void main(String
{system.out.println(x); argv[])
} {A a=new A();
{ private void f(int n) a.g();
{system.out.println(n); int n=2;float x=2.5f;
} a.f(n); a.f(x);
{ public void g()
}
{ int n=1; float x=1.5f;
}
f(n); f(x);
}
}
Résultats :
n=1
x=1.5
n=2.0
x=2.5 50
25
02/10/2023
51
26
02/10/2023
53
Méthodes static
54
27
02/10/2023
Méthode static
En C#, on peut définir des champs, qui au lieu d’exister dans
chacune des instances de la classe, n’existent qu’en un seul
exemplaire pour toutes les instances d’une même classe.
Les méthodes static sont celles qui n’ont pas besoin d’un objet
pour être invoquées (elles se rapprochent des méthodes
classiques de C). C’est le cas de la méthode main.
55
Méthode static
56
28
02/10/2023
57
Méthode static
Règles à respecter :
58
29