Vous êtes sur la page 1sur 17

Hritage

Programmation Oriente Objet


en C#

El Akel Bouchra

ISMONTIC Tanger 2012/2013


Hritage
Hritage permet de crer une nouvelle classe
(classe drive, classe descendante, classe fille )
qui rutilise, tend et modifie le comportement
dfini dans une autre classe (classe de base, classe
anctre, classe mre ).
En C#, toutes les classes hritent implicitement de
la classe Object.

La classe drive dispose implicitement de tous les


attributs et de toutes les mthodes dfinies dans la
classe de base.

Lhritage vite la duplication et facilite la


rutilisation.
Hritage
Exemple:
Gnralisation Spcialisation
Personne
-CIN
- Nom
- Prenom
- Age

Formateur Administrateur Stagiaire


-Matricule - service - CNE
-Echelle - Filiere
-Specialite - Niveau
Hritage en C#
Syntaxe:
class fille : mere // : dsigne lhritage
{
// code
}

Exemple:
class Personne
{ class Formateur : Personne
public string cin {get; set; } {
public string nom{ get; set; } public int matricule { get; set; }
public string prenom { get; set;} public short echelle { get; set; }
public int age { get; set; } public string specialite {get;
set;}
}
}
Hritage en C#
Rgles dhritage en C#:

- Une classe fille ne peut hriter que dune seule classe mre. On
parle d'hritage simple. (En C++, il existe la notion dhritage
multiple, cest dire une classe fille hrite de plusieurs classes
mres).
- Plusieurs classes filles peuvent hriter dune mme classe mre.
Une classe fille peut elle-mme tre la classe mre dune
nouvelle classe.
Exemple
class point {
private int _x;
public int x { get { return _x;} set { _x=value;} }
private int _y;
public int y { get { return _y;} set { _y=value;} }

public point(int x,int y)


{
this.x=x; this.y=y;
}
public void deplacer(int dx,int dy)
{
this.x=this.x+dx; this.y=this.y+dy;
}
public void afficher()
{
Console.WriteLine("je suis un point dont l'abscisse est "+x+ "et l'ordonne est
"+y);
}
}
Exemple

Supposons que nous ayons besoin dune classe


Pointcol, destine manipuler des points colors
dun plan; une telle classe peut disposer des mmes
fonctionnalits de la classe point +(attribut
couleur )
Exemple
class pointcol : point
{
private string _couleur;

public string couleur { get { return _couleur;} set { _couleur=value; } }


}

: prcise au compilateur que la classe pointcol


est une classe drive de point.

De ce fait cette classe drive hrite des champs et


mthodes de sa classe de base.
Construction des objets drivs

Le constructeur de la classe drive doit appeler le


constructeur de la classe de base en utilisant le mot cl
base .

Do le constructeur de de pointcol est:

public pointcol(int x, int y, string couleur) : base(x,y)


{
this.couleur = couleur;
}
Exemple (suite)
La classe pointcol devient:
class pointcol : point
{
private string _couleur;
public string couleur { get { return _couleur;} set { _couleur=value; } }

public pointcol(int x, int y, string couleur) : base(x,y)


{
this.couleur = couleur;
}

public void afficherc()


{
base.afficher();//appel de la mthode de la classe mre.
Console.WriteLine(" et ma couleur est"+this.couleur);
}
}
Exemple (suite)
La classe de teste :
class Program
{
static void Main(string[] args)
{
point A=new point(2,3);
pointcol AC=new pointcol(4,5,"rouge");
AC.afficherc();
AC.deplacer(3, 3);
AC.afficher();
}
}
Remarque

Une classe drive naccde pas aux membres


privs, mais elle peut accder aux membres public
ou protected.

si la classe mre ne possde pas de constructeur il


faut appeler le constructeur par dfaut en utilisant
base()
Surcharge et redfinition

Signature: nom , type et nombre darguments dune


mthode.

Surcharge des mthodes :mme nom et signature


diffrente.

Redfinition des mthodes: mme nom et mme


signature. (lhritage)
Exemple
class point {
private int _x;
public int x { get { return _x;} set { _x=value;} }
public int y { get { return _y;} set { _y=value;} }

public point(int x,int y)


{
this.x=x; this.y=y;
}
public void deplacer(int dx,int dy)
{
this.x=this.x+dx; this.y=this.y+dy;
}
public void afficher()
{
Console.WriteLine("je suis un point dont l'abscisse est "+x+ "et l'ordonne est
"+y);
}
}
Exemple (suite)
class pointcol : point
{
private string _couleur;
public string couleur { get { return _couleur;} set { _couleur=value; } }

public pointcol(int x, int y, string couleur) : base(x,y)


{
this.couleur = couleur;
}

public void afficher() //redfinition de la mthode afficher()


{
base.afficher();//appel de la mthode de la classe mre.
Console.WriteLine(" et ma couleur est"+this.couleur);
}
}
Polymorphisme
le polymorphisme permet une mthode d'adopter
plusieurs formes sur des classes diffrentes.

static void Main(string[] args)


{
point A=new point(2,3);
A.afficher();
pointcol AC=new pointcol(4,5,"rouge");
AC.afficher();
AC.deplacer(3, 3);
AC.afficher();
}
Afficher de la classe point

Afficher de la classe pointcol


Thank you!
Programmation Oriente Objet C#