COURS DE PROGRAMMATION ORIENTEE OBJET :

Slides:



Advertisements
Présentations similaires
Spécialisation/généralisation Héritage Polymorphisme.
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
Langages objet Définitions Traduction des méthodes en C++
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Chapitre III Héritage (début)
Programmation orientée objet
COURS DE PROGRAMMATION ORIENTEE OBJET :
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Langage Oriente Objet Cours 4.
Mémoire de fin d’études présenté par Amine Brikci-Nigassa
Principes de programmation (suite)
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
C++ : classes Introduction aux Langages Orientés Objets
Java Héritage, interfaces.
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Interfaces : comment classifier ?
Structures de données IFT-2000
Introduction au paradigme orienté-objet (suite)
Design Pattern: Decorator
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre III Héritage. POO-L3 H. Fauconnier2 Chapitre III: Héritage A) Extensions généralités Affectation et transtypage B) Méthodes Surcharge et signature.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Introduction au C++ héritage / polymorphisme
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
INF1101 Algorithmes et structures de données
Structures de données IFT-2000 Abder Alikacem L’héritage en C++ Département d’informatique et de génie logiciel Édition Septembre 2009.
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Héritage et composition
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Copyright © SUPINFO. All rights reserved La Programmation Orientée Objet en C# 2.0.
Programmation objet. Les classes Une classe représente un concept Une classe est :  un module : elle regroupe la déclaration de données et les opérations.
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
PHP 7° PARTIE : PROGRAMMATION OBJET
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Un peu de Design Pattern Quelques modèles pour développer vite et bien.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Le polymorphisme.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Les classes Introduction aux Langages Orientés Objets
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction à la programmation objet avec java
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
Introduction à la Programmation Orientée Objet
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Chapitre 7: Héritage Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software.
Introduction à l'orienté objet. Définition Le terme orienté objet siginifie que l'on organise le logiciel comme une collection d'objets organisée en graphe.
Modèle objet : les classes
java : l'héritage (rappel)
Transcription de la présentation:

COURS DE PROGRAMMATION ORIENTEE OBJET : Héritage

Héritage Principes L’héritage permet de mettre en œuvre la notion de réutilisation. L’héritage est une relation entre deux classes qui permet à une classe de réutiliser les caractéristiques d’une autre classe X Y Classe parent ou superclasse Classe enfant ou sous-classe

Héritage Exemple : Un compte bancaire peut soit être un compte courant soit un compte d’épargne. Un compte courant permet un solde négatif mais des agios sont déduits chaque jour si le solde est négatif. Un compte d’épargne doit toujours avoir un solde positif mais on ajoute des intérêts calculés chaque jour.

Héritage CompteBancaire public void crediter (int montant) public void debiter (int montant) public void afficherEtat () public String getNom () public void setNom(String nom) public String getAdresse () public void setAdresse(String adresse) public int getNumero() public int getSolde() public void traitementQuotidien() CompteEpargne - tauxInterets : double CompteCourant - tauxAgios : double

Héritage Classe CompteCourant : public class CompteCourant extends CompteBancaire{ private double tauxAgios; // taux quotidien des agios ... }

Héritage Classe CompteEpargne: public class CompteEpargne extends CompteBancaire{ private double tauxInterets; //taux d’intérêts par jour ... } 6

Héritage Classes abstraites Dans certains cas, la classe ancêtre est tellement générale que certaines méthodes ne peuvent plus être implémentées dans celle-ci mais seulement dans chacune des classes dérivées, on parle de méthodes abstraites. On ne considère plus la classe ancêtre comme une classe pouvant être instanciée. Une classe possédant une ou plusieurs méthodes abstraites doit être déclarée abstraite. On emploie le mot clé abstract .

Héritage Classes abstraites Exemple : La classe CompteBancaire sera déclarée abstraite car la méthode traitementQuotidien est abstraite. Le traitement à appliquer dépend du type de compte et sera décrit dans les classes dérivées. La classe CompteBancaire ne pourra pas être instanciée directement.

Héritage Classe CompteBancaire modifiée : public abstract class CompteBancaire { … public abstract void traitementQuotidien(); }

Héritage La redéfinition de méthode Certaines méthodes de la superclasse ne conviennent pas pour la sous-classe. On peut alors les redéfinir. Dans ce cas, on utilisera le mot clé super pour faire référence à la méthode de la superclasse.

Héritage La redéfinition de méthode Exemple : Redéfinir debiter pour la classe CompteEpargne //méthode debiter redéfinie public void debiter ( int montant ) { if ( montant <= getSolde ()) super.debiter ( montant ); else System.out.println ( " Débit non autorisé "); }

Héritage Constructeur de la sous-classe La première instruction dans le constructeur de la sous-classe doit être l’appel au constructeur de la superclasse avec le mot clé super. Si on ne fait pas d’appel explicite au constructeur de la superclasse, c’est le constructeur par défaut de la superclasse qui est appelé à condition qu’il existe.

Héritage Constructeur de la sous-classe Exemple : Classe CompteCourant : //constructeur public CompteCourant(String nom,String adresse, double tauxAgios) { super (nom, adresse); this.tauxAgios = tauxAgios; }

Héritage Constructeur de la sous-classe Exemple : Classe CompteEpargne : //constructeur public CompteEpargne ( String nom,String adresse, double tauxInterets ) { super ( nom, adresse ); this.tauxInterets = tauxInterets; }

Héritage Définition de la méthode traitementQuotidien dans chaque sous-classe : Classe CompteCourant : public void traitementQuotidien () { if (getSolde () < 0) { debiter ((int)(-1.0*getSolde()*tauxAgios)); }

Héritage Définition de la méthode traitementQuotidien dans chaque sous-classe : Classe CompteEpargne: public void traitementQuotidien () { crediter ((int)(getSolde()* tauxInterets)); }

Héritage Polymorphisme Possibilité d’affecter un objet d’une sous-classe à une variable de la superclasse. Exemple : CompteBancaire c; c = new CompteEpargne(…); Application : Une agence gère plusieurs comptes. CompteBancaire[] agence = new CompteBancaire[100]; CompteCourant courant = new CompteCourant(…); agence[0] = courant;

Héritage La classe OBJECT Toutes les classes sont dérivées de la classe Object. Chaque méthode de la classe Object est héritée par toutes les classes. Méthodes importantes de la classe Object : public boolean equals ( Object o ) protected Object clone() public final Class getClass() public int hashcode() public String toString()

Héritage La classe OBJECT – La méthode equals La méthode equals détermine si deux objets sont égaux ou non. Son implémentation dans la classe Object vérifie que les références d’objets sont identiques. On aura souvent besoin de redéfinir la méthode equals : deux objets seront égaux quand ils auront le même état.

Héritage La classe OBJECT – La méthode equals Redéfinir la méthode equals pour la classe CompteBancaire

Héritage public boolean equals(Object autre){ //tester si les objets sont identiques if (this == autre) return true; //doit renvoyer false si le paramètre explicite vaut null if (autre == null) return false; //si les classes ne correspondent pas , elles ne //peuvent être égales if (getClass() != autre.getClass()) return false; //autre est un objet de type CompteBancaire non null CompteBancaire autreCompte =(CompteBancaire)autre; //tester si les comptes ont même numéro return this.numero== autreCompte.numero; } //fin de la méthode equals

Héritage La classe OBJECT – La méthode hashCode Un code de hachage est un entier dérivé d’un objet. Par défaut, le code de hachage est extrait de l’adresse mémoire de l’objet. Les objets égaux doivent renvoyer des codes de hachages identiques.

Héritage La classe OBJECT – La méthode clone La méthode clone renvoie une copie de l’objet. Si la sous-classe ne redéfinit pas cette méthode, elle effectue une copie champ par champ.

Héritage La classe OBJECT – La méthode toString Il est conseillé de redéfinir la méthode toString. L’appel de System.out.print(o) pour un objet o va afficher le résultat de l’appel de o.toString()

Héritage La classe OBJECT : toString Exemple : dans les classes CompteBancaire et CompteCourant et CompteEpargne, on pourrait redéfinir toString et supprimer alors la méthode afficherEtat. Méthode toString()de la classe CompteBancaire: public String toString (){ return " Compte numéro " + numero + " ouvert au nom de " + nom + " \n Adresse du titulaire " + adresse+ " \nSolde actuel " + solde" ; }

Héritage La classe OBJECT : toString Méthode toString() de la classe CompteCourant public String toString(){ return " Compte courant " +super.toString(); } Méthode toString() de la classe CompteEpargne public String toString(){ return " Compte d’épargne " +super.toString();

Exemple complet