DevInformatique Ralis par HACHIMI SAFAE Module N 13

  • Slides: 19
Download presentation
Dev-Informatique Réalisé par : HACHIMI SAFAE

Dev-Informatique Réalisé par : HACHIMI SAFAE

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

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{ Personne public String Nom ; public String Prénom ; public String Age

Class Personne{ 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{ 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. §

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) 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

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{ Personne public String Nom ; public String Prénom ; public

EXEMPLE : Class Personne{ 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

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 :

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éthode 1(){ …. . }} class B : A { public override void Méthode 1(){ …. }}

REMARQUE : § L’appel à une méthode définie dans la classe fille et dans

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éthode 1(); //Appel de méthode 1 de la classe mère (A) A a = new B(); a. Méthode 1(); //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

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{ Personne public String Nom ; public String Prénom ; public String Age ; public void Affiche(){Console. Write. Line (‘’Nom : ’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age); }} Class Etudiant : Personne { public float Note ; Public new void Affiche(){ Console. Write. Line (‘’Nom : ’’+Nom, ‘’Prénom : ‘’+Prénom, ‘’Age : ’’+Age ); }}}

REMARQUE : Personne P 1 = new Personne(); P 1. Affiche() ; //Appel de

REMARQUE : Personne P 1 = new Personne(); P 1. Affiche() ; //Appel de la méthode Affiche() de la classe Personne P 2= new Personne(); P 2. Affiche(); //Appel de la méthode Affiche() de la classe Personne Etudiant P 3 = new Etudiant (); P 3. Affiche(); //Appel de la méthode Affiche() de la classe Etudiant

III-LES TYPES DE CLASSES : 1 -LA CLASSE ABSTRAITE : § La classe abstraite

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 Nom. Classe{ …. public Abstract <Typede. Retour> <Nom. Méthode>(paramètres); }

EXEMPLE : abstract class Document{ public int Numéro ; public String Titre ; public

EXEMPLE : abstract class Document{ public int Numéro ; public String Titre ; public abstract String get. Type(); public virtual String Affiche(){ Console. Write. Line(‘’Numéro : ‘’+Numéro +’’n. Titre : ’’+Titre); } }

2 -CLASSE Sealed : § Une classe Sealed est une classe complexe sans possibilité

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{…. } EXEMPLE 1 : class sealed Sealed class A{ int x ; public A(){ x=10; } } Class B : A {. . } ERREUR

EXEMPLE 2: Méthode Sealed class X{ public virtual void F 1(){Console. Write. Line(‘’F 1

EXEMPLE 2: Méthode Sealed class X{ public virtual void F 1(){Console. Write. Line(‘’F 1 X’’); } public virtual void F 2(){Console. Write. Line(‘’F 2 X’’); } class Y{ public override void F 1(){Console. Write. Line(‘’F 2 Y’’); } public sealed override void F 2(){Console. Write. Line(‘’F 2 Y’’); }} class Z : Y{ public override void F 1(){Console. Write. Line(‘’F 1 Z’’); } public override void F 2(){Console. Write. Line(‘’F 2 Z’’); }} ERREUR F 2()

3 -CLASSE PARTIAL : § Une classe partial est une classe crée en parties.

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 Nom. CLasse{…} 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

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 implémente tous ses méthodes. § Une interface est par défaut public § Une classe peut implémenter plusieurs interfaces. A-DECLARATION : Interface Nom. Interface {…}

EXEMPLE : Interface IPoint{ class Point 3 D : Ipoint{ public int x ;

EXEMPLE : Interface IPoint{ class Point 3 D : Ipoint{ public int x ; void Affiche(); public int y ; void Somme(); } public int z ; class Point 2 D : Ipoint{ public Point 2 D(int x , int y){ public int x ; this. x=x ; public int y ; this. y=y; public Point 2 D(int x , int y){ this. x=x ; this. y=y; } public void Affiche(){ Console. Write. Line(‘’({0}, {1})’’, x, y); } public int Somme(){ return (x+y); }} this. z=z; } public void Affiche(){ Console. Write. Line(‘’({0}, {1}, {2})’’, x, y, z); } public int Somme(){ return (x+y+z); }}

Dev-Informatique MERCI POUR VOTRE ATTENTION

Dev-Informatique MERCI POUR VOTRE ATTENTION