Introduction au C++ héritage / polymorphisme

Slides:



Advertisements
Présentations similaires
Introduction au Langage C,C++
Advertisements

Erratum C Surcharge For(int x=0; … 2.
Cours n° 7 Standard Template Library II.
Le langage C++ Les boucles.
Patrick Reuter maître de conférences
C++ 6ème cours Patrick Reuter maître de conférences
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.
POO.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant.
Introduction à la POO: Les classes vs les objets
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Programmation orientée objet
COURS DE PROGRAMMATION ORIENTEE OBJET :
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
OBJET Les concepts.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
C++ : classes Introduction aux Langages Orientés Objets
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006.
Structures de données IFT Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem Espace de nommage Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Introduction au paradigme orienté-objet (suite)
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
Design Pattern: Decorator
8PRO107 Éléments de programmation
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 5 Héritage, Interfaces, classes internes. POO-L3 H. Fauconnier2 La classe Object Toutes les classes héritent de la classe Object Object méthodes:
Les pointeurs en C. valeur : main () { float valeur; void* pointeur; }
1 Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que.
Standard Template Library
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.
C++ : fonctions et opérateurs
CSI1502 Principes fondamentaux en conception des logiciels
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.
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.
Une introduction à Java
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
(Vient du grec et signifie « Peut prendre plusieurs formes »)
La notion de type revisitée en POO
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Notions avancées du C++
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
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)
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Les classes Introduction aux Langages Orientés Objets
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
java : l'héritage (rappel)
Int 10. Int 6.
Transcription de la présentation:

Introduction au C++ héritage / polymorphisme Françoise Lefebvre, IPN, SII

Héritage L’héritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». comptebancaire.h compteepargne.h prog.cpp Class CompteBancaire { public : CompteBancaire(); CompteBancaire(std::string p, int num); ~ CompteBancaire(); protected : int m_numéro; int m_solde; std::string m_propriétaire; void Créditer(float); void Débiter(float); void Fermer(); int Numéro(); int Solde(); std::string Propriétaire(); }; #include “comptebancaire.h” class CompteEpargne : public CompteBancaire { public : CompteEpargne (std::string p, int num); ~ CompteEpargne (); protected : float m_tauxIntérêt; void FixerTauxIntérêt(); }; #include <iostream.h> #include " compteepargne.h" int main() { CompteEpargne ce; ce. FixerTauxIntérêt(2.25); ce.Crediter(1000); std::cout << ce. Solde() << std::endl; return 0; } compteepargne.cpp #include “compteepargne.h” CompteEpargne::CompteEpargne() : public CompteBancaire() { } CompteEpargne::CompteEpargne(std::string p, int num) : public CompteBancaire( p, num) Le constructeur de la classe dérivée appelle généralement un des constructeurs de la classe de base.

Polymorphisme Un objet héritant une méthode d'une classe parente peut réagir de façon différente à l'appel de cette méthode. comptebancaire.h compteepargne.h Class CompteBancaire { public : CompteBancaire(); CompteBancaire(std::string p, int num); ~ CompteBancaire(); protected : int m_numéro; int m_solde; std::string m_propriétaire; void Créditer(float); virtual void Débiter(float); void Fermer(); int Numéro(); int Solde(); std::string Propriétaire(); }; #include “comptebancaire.h” class CompteEpargne : public CompteBancaire { public : CompteEpargne (std::string p, int num); ~ CompteEpargne (); protected : float m_tauxIntérêt; void FixerTauxIntérêt(); virtual void Débiter(float); }; prog.cpp #include " compteepargne.h" int main() { CompteBancaire cb; cb. Débiter(1200); CompteEpargne ce; ce. Débiter(500); return 0; } Autorise la redéfinition de la fonction dans les classes dérivées compteepargne.cpp comptebancaire.h #include “compteepargne.h” void CompteEpargne:: Débiter(float v) { if (v <m_solde) m_solde -= v; } #include “comptebancaire.h” void CompteEpargne:: Débiter(float v) { m_solde -= v; } Si la fonction Debiter() n’est pas redéfinie dans la classe CompteEpargne, appelle celle de CompteBancaire.