Vous êtes sur la page 1sur 19

Dev-Informatique

Réalisé par : HACHIMI SAFAE


Module N° 13 : Programmation Orientée Objet
Chapitre 3 : Héritage
I-INTRODUCTION :

 Supposons que nous avons besoin de deux classes une classe Personne et une classe Etudiant .

 La classe Personne a des attributs suivantes : Nom , Prénom , Age .

 La classe Etudiant est une Personne particulier mais elle a des attributs supplémentaires par

exemple la note .

 Alors les deux classes Personne , Etudiant sont implémentées comme suivant :
Class Personne{

public String Nom ;

public String Prénom ;

public String Age ;

public String Affiche(){

return (‘’Nom :’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age);}}

Class Etudiant{

public String Nom ;

public String Prénom ;

public String Age ;

public float Note ;

public String Affiche(){

return (‘’Nom :’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age);}}


REMARQUE :

 Les deux classes ont des attributs et des méthodes communes .

 Un étudiant fait pleinement parties de la classe Personne mais il a des attributs supplémentaires .

 Plutôt que d’écrire une classe Etudiant à partir de rien , on reprend les caractéristiques d’une

classe Etudiant .

 On dit que la classe Etudiant hérite de la classe Personne .

1-DEFINITION :

 Représente le mécanisme de réutilisation de code .

 Le but de l’héritage est le personnalisé une classe existence pour qu’elle satisfaite à ses besoins .

 C’est une relation entre deux classes , une classe mère (Superclasse ou Classe de base) et une

classe fille (Sous Classe ou Classe dérivée ) .


NB : Une classe peut hériter d’une seule classe .

CLASSE MERE (CLASSE DE BASE , SUPER CLASSE


)

Hérite

CLASSE FILLE (CLASSE DERIVEE , SOUS


CLASSE )

2-DECLARATON :

class A{

…..

class B : A {

…..

}
EXEMPLE :

Class Personne{

public String Nom ;

public String Prénom ;

public String Age ;

public String Affiche(){

return (‘’Nom :’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age);}}

Class Etudiant : Personne {

public float Note ;

}
3-HERITAGE ET CONSTRUCTEUR :

 Le constructeur d’une classe fille passe à sa classe de base les paramètres dont il a besoin pour

se construite

 Utilise les autres paramètres pour initialiser les attributs qui lui sont propres .

 Le constructeur de la classe fille est déclaré comme suivant :

public Class fille(String N , String P , int A ): base( P , N ){…..}

EXEMPLE :

public class Etudiant : Personne {

public float Note ;

public Etudiant ( String N , String P , int A , float Note ) : base (N , P , A )

this.Note = Note ;

}
II-PLOYMORPHISME :

 Utilise le même code avec les classes dérivées .

1-SUBSTITUTION :

 La substitution est la capacité d’une classe fille de redéfinir les méthodes de la classe mère .

EXEMPLE :

class A{

public virtual void Méthode1(){

…..

}}

class B : A {

public override void Méthode1(){

….}}
REMARQUE :

 L’appel à une méthode définie dans la classe fille et dans la classe mère ne sera pas figé à la

compilation .

 C’est seulement à l’éxécution que la méthode dérivée sera exécuté .

EXEMPLE :

A a = new A() ;

a.Méthode1();//Appel de méthode 1 de la classe mère (A)

A a = new B();

a.Méthode1();//Appel de la méthode 1 de la classe fille (B)


2-MASQUAGE :

 Le masque par héritage se produit lorsque une classe déclare des attributs et des méthodes

qui sont hérités de la classe mère .

EXEMPLE :

Class Personne{

public String Nom ;

public String Prénom ;

public String Age ;

public void Affiche(){Console.WriteLine (‘’Nom :’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age);}}

Class Etudiant : Personne {

public float Note ;

Public new void Affiche(){

Console.WriteLine (‘’Nom :’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age);}}}


REMARQUE :

Personne P1 = new Personne();

P1.Affiche() ;//Appel de la méthode Affiche() de la classe Personne

Personne P2= new Personne();

P2.Affiche(); //Appel de la méthode Affiche() de la classe Personne

Etudiant P3 = new Etudiant ();

P3.Affiche(); //Appel de la méthode Affiche() de la classe Etudiant


III-LES TYPES DE CLASSES :

1-LA CLASSE ABSTRAITE :

 La classe abstraite est une classe incomplète crée comme une classe de base des classes

dérivées .

 Vous ne pouvez pas instancier une classe Abstraite .

Les méthodes d’une classe Abstraite sont des classes virtuals ou Abstraites .

A-DECLARATION :

Abstract class NomClasse{

….

public Abstract <TypedeRetour> <NomMéthode>(paramètres);

}
EXEMPLE :

abstract class Document{

public int Numéro ;

public String Titre ;

public abstract String getType();

public virtual String Affiche(){

Console.WriteLine(‘’Numéro : ‘’+Numéro +’’\nTitre : ’’+Titre);

}
2-CLASSE Sealed :

 Une classe Sealed est une classe complexe sans possibilité d’héritage .

 Une méthode Sealed est une méthode utilisé sans possibilité de substitution ou masquage .

A-DECLARATION :

Sealed class NOMClasse{….}

EXEMPLE1 : class sealed

Sealed class A{

int x ;

public A(){

x=10;}

Class B : A { ..}ERREUR
EXEMPLE2: Méthode Sealed

class X{

public virtual void F1(){Console.WriteLine(‘’F1X’’);}

public virtual void F2(){Console.WriteLine(‘’F2X’’);}

class Y{

public override void F1(){Console.WriteLine(‘’F2Y’’);}

public sealed override void F2(){Console.WriteLine(‘’F2Y’’);}}

class Z : Y{

public override void F1(){Console.WriteLine(‘’F1Z’’);}

public override void F2(){Console.WriteLine(‘’F2Z’’);}}  ERREUR


3-CLASSE PARTIAL :

 Une classe partial est une classe crée en parties .

 Une méthode partial est une méthode déclarée en parties .

A-DECLARATION :

partial class NomCLasse{…}

EXEMPLE :

partial class A{

public int x ;

public int y ;

public A(int x , int y){

this.x = x;

this.y = y;}
partial class A{

public int Somme(){return (x+y);}}}

IV-INTERFACES :

 Une interface contient uniquement les signatures des méthodes sous implémentation .

 Une classe qui implémente une interface doit implémenter tous ses méthodes .

 Une interface est par défaut public

 Une classe peut implémenter plusieurs interfaces .

A-DECLARATION :

Interface NomInterface {…}


EXEMPLE : class Point3D : Ipoint{

Interface IPoint{ public int x ;

void Affiche(); public int y ;

void Somme();} public int z ;

class Point2D : Ipoint{ public Point2D(int x , int y){

public int x ; this.x=x ;

public int y ; this.y=y;

public Point2D(int x , int y){ this.z=z; }

this.x=x ; public void Affiche(){

this.y=y; } Console.WriteLine(‘’({0},{1},{2})’’, x,y,z);}

public void Affiche(){ public int Somme(){

Console.WriteLine(‘’({0},{1})’’, x,y);} return (x+y+z);}}

public int Somme(){

return (x+y);}}
Dev-Informatique
MERCI POUR VOTRE ATTENTION

Vous aimerez peut-être aussi