Les classes
Une classe est une structure plus évoluée. Elle se déclare
avec le mot clef class qui est précédé du mot
clef de porté public afin d’être utilisée
dans tout le programme.
Exemple de déclaration d’une classe :
public class
MaClasse
{
}
Les membres d’une classe
Ce sont les champs de la classe. Ils sont précédés soit
du mot clef public,
private ou protected.
Le mot private est défini par défaut. Les
variables déclarées public sont accessibles de
partout dans le programme, tandis que les variables déclarées private
sont accessibles uniquement dans la classe elle-même ou par des fonctions
membres de cette classe. Nous parlerons du mot clef protected
lorsqu’on abordera le chapitre de l’héritage.
public class
MaClasse
{
public
string Nom;
private
int _age;
}
Le Constructeur
C’est une méthode (fonction) appelée automatiquement lors de la création de l’instance
(l’objet) de la classe en mémoire. Elle sert généralement
à initialiser les champs d’une classe.
public class
MaClasse
{
public string
Nom;
private int
_age;
public MaClasse(string
Nom, int Age)
//le
constructeur
{
this.Nom = Nom;
_age = Age;
}
}
Ici this me permettra de
différencier mon champ de mon argument, car ceux ci portent le même nom. On
observe qu’on n’a pas eu besoin d’utiliser this
pour la variable _age car n’ayant pas la même orthographe que l’argument (
Age). Mais il est à noter que l’utilisation de this dans
ce cas n’aurait pas causé de problème.
On a aussi une autre version de constructeur qui ne possède
pas d’arguments, mais qui fait appel à un autre constructeur, soit de la même
classe, soit de la classe dont elle dérive dans le cas de l’héritage (nous
en reparlerons dans le chapitre de l’héritage).
public class
MaClasse
{
public string
Nom;
private int
_age;
public MaClasse(string
Nom, int Age) //le
constructeur
{
this.Nom = Nom;
_age = Age;
}
public MaClasse():this("ton_nom",0)
//constructeur faisant appel au premier constructeur
{
}
}
Les méthodes
Les fonctions d’une classe sont appelées des méthodes.
Une méthode est accessible en dehors de la classe lorsqu’elle est déclarée publique.
Mais dans le cas où elle est déclarée private,
seule la classe elle-même pourra y accéder.
Soit l’exemple ci-dessous
|
public class
MaClasse
{
public string
Nom;
private int
_age;
private string
_prof;
public MaClasse(string
Nom, int Age) //le
constructeur
{
this.Nom = Nom;
_age = Age;
}
public MaClasse():this("ton_nom",0)
//constructeur faisant appel au premier
constructeur
{
}
private void
Profession()
{
this._prof = "étudiante"; //
_prof est initialisée
}
public void
Affichetoi()
{
Console.WriteLine("je m'appelle {0}, j'ai {1} ans et je suis {2} .
Merci", Nom, _age, _prof);
}
}
[STAThread]
static void Main(string[]
args)
{
//créons nos filles
MaClasse fille1 = new MaClasse("lolo",20);
//le construteur MaClasse me permet
d'initialiser mes champs, même ceux déclarés "private", car le
constructeur est membre de la classe.
MaClasse fille2 = new MaClasse("chouchou",22);
MaClasse fille3 = new MaClasse();
//avec fille3,je décide d'initialiser mes
champs sans l'aide du constructeur
fille3.Nom = "mimi";
//je peux donc initialiser le champ
"Nom" car déclaré public, donc accessible partout
//les
autres champs sont déclarés "private", et par conséquent ne sont
accessibles que depuis la classe elle même. Je ne peux donc pas les initialiser
dans le Main().
//Dès
lors, faisons appelle à nos méthodes
fille1.Affichetoi(); //ici
je fais appelle à Affichetoi() depuis ma fonction Main() parce que méthode déclarée
"public"
fille2.Affichetoi();
//mais
par contre Profession() n'est pas accessible depuis la fonction main
car déclarée "private"
fille3.Affichetoi();
Console.ReadLine();
//pour que la fenêtre dos ne se ferme pas
toute seule
}
}
|
Après
compilation du programme, on obtient ceci :
On remarque qu’il manque une information :
c’est la profession, représentée
par la variable « prof ». Mini, elle a 0 ans parce qu’elle n’a
pas pu initialiser son champ _age qui n’est accessible que depuis la classe
elle même (par une méthode membre par exemple). Nous allons maintenant faire
appel à la méthode Profession() qui
a déjà initialisé le champ « _prof ». Mais comme la méthode
Profession() est déclarée private, elle ne
pourra être appelée que dans la classe.
Nous allons donc reprendre l’exemple précédent et faire
appel à la méthode Profession() dans la méthode Affichetoi() qui est déjà
appelée depuis la fonction principale Main().
|
public class
MaClasse
{
public string
Nom;
private int
_age;
private string
_prof;
public MaClasse(string
Nom, int Age)
//le
constructeur
{
this.Nom = Nom;
_age = Age;
}
//constructeur faisant appel au premier
constructeur
public MaClasse():this("ton_nom",0)
{
}
private void
Profession()
{
this._prof = "étudiante"; //
_prof est initialisée
}
public void
Affichetoi()
{
Profession(); //on
appelle la méthode Profession
Console.WriteLine("je m'appelle {0}, j'ai {1} ans et je suis {2} .
Merci", Nom, _age, _prof);
}
}
[STAThread]
static void Main(string[]
args)
{
MaClasse fille1 = new MaClasse("lolo",20);
//le construteur MaClasse me permet
d'initialiser mes champs, même ceux déclarés "private", car le
constructeur est membre de la classe.
MaClasse fille2 = new MaClasse("chouchou",22);
MaClasse fille3 = new MaClasse();
//je décide d'initialiser mes champs sans
l'aide du constructeur
fille3.Nom = "mimi";
//j'initialise donc le champ "Nom"
car déclaré public, donc accessible de partout
//les
autres champs sont déclarés "private", donc ne sont accessibles que
depuis la classe elle même.
//Dès lors, faisons appelle à nos méthodes
fille1.Affichetoi(); //ici
je fais appelle à Affichetoi() depuis ma fonction Main() parce que méthode déclarée
"public"
fille2.Affichetoi(); //mais
par contre Profession() n'est pas accessible depuis la fonction main
car déclarée "private"
fille3.Affichetoi();
Console.ReadLine();
//pour que la fenêtre dos ne se ferme pas
toute seule
}
|
On obtient :
Sommaire
1. Les collections
2. les structures
3. les classes
4. Les propriétés
5. Les exceptions
6. Héritage et polymorphisme
7. Les interfaces
8. Surcharge d’opérateurs
9. La délégation
10. Les évènements
|
|
 |
Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft
|
|