INF1101 Algorithmes et structures de données

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Programmation Orienté Objet en C++
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.
Systèmes en temps réel Héritage avec les capsules.
Langages objet Définitions Traduction des méthodes en C++
(Classes prédéfinies – API Java)
Programmation Orientée Objet (POO)
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
Initiation à la conception de systèmes d'information
COURS DE PROGRAMMATION ORIENTEE OBJET :
Bibliothèque standard du C++
Chapitre VIII Structures dobjets. Chapitre VIII - Structures d'objets2 Structures d objets Il existe plusieurs relations entre les classes. Lhéritage.
Conception des données
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
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Classes abstraites et Interfaces
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
INF1101 Algorithmes et structures de données1 Cours 1 Les classes et les objets.
Structures de données IFT-2000
Structures de données IFT-10541
INF1101 Algorithmes et structures de données
Introduction au paradigme orienté-objet (suite)
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Langages orientés objets
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.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
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.
Structures de données IFT-2000 Abder Alikacem Concepts orientés objet Édition Septembre 2009 Département dinformatique et de génie logiciel Département.
INF1101 Algorithmes et structures de données
Patrons de conceptions de créations
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Héritage et composition
Les classes et les objets
Chapitre X Modèles.
Travaux Pratiques Représentation des connaissances
Paradigmes des Langages de Programmation
B.Shishedjiev - Conception des données
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
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.
La Modélisation Orientée Objet Concevoir un programme : modélisation du problème à résoudre Notion de programme : machine de Turing Pouvoir d’expression.
11/04/ L'héritage Cours 7 Cours 7.
Les objets Les classes Pour structurer les variables élémentaires, on peut : juxtaposer des variables de même type, en déclarant un tableau juxtaposer.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
12/04/ Le polymorphisme Cours 8 Cours 8.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
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.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Les opérateurs L’amitié Les opérateurs Introduction
Les classes Introduction aux Langages Orientés Objets
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Héritage Conception par Objet et programmation Java
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Introduction à la Programmation Orientée Objet
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.
Transcription de la présentation:

INF1101 Algorithmes et structures de données Cours 3 Héritage INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données L’héritage Concept Principe d’héritage Private, protected, public Surcharge de fonctions Constructeurs Ordre des appels de constructeurs, destructeurs et agrégat Méthodes non héritées Dérivations publiques, protégées et privées INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Concept d’héritage ObjetGeo Sphere Cube Cylindre ObjetGeo: Super-classe ou classe de base. Classe très générale. Sphere, Cube, Cylindre: sous-classe ou classe dérivée. Classes plus spécifiques. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Principe d’héritage Afin de bien représenter une situation, il faut pouvoir montrer les nuances entre des objets, et effectuer certaines généralisations. Les classes dérivées sont un mécanisme simple pour définir une nouvelle classe en ajoutant des facilités à une classe existante sans reprogrammer ou recompiler la classe de base. En utilisant les classes dérivées d’une classe existante, on définit une interface commune aux classes dérivées de telle manière que les objets de ces classes dérivées sont manipulés de façon identique par certaines parties du programme. Réutilisation INF1101 Algorithmes et structures de données

Principe d’héritage (suite) On peut ainsi utiliser l’héritage pour les besoins de généralisation, de réutilisation. La classe dérivée hérite des attributs et des fonctions de la classe de base. La classe dérivée est plus spécifique que la classe en ajoutant des attributs et des fonctions membres. INF1101 Algorithmes et structures de données

Principe d’héritage (suite) L’héritage est une relation « est un » Un commerce « est un » immeuble Une habitation « est un » immeuble Mais il est faux de dire : Un immeuble est un commerce Un immeuble est une habitation INF1101 Algorithmes et structures de données

Principe de composition La composition ou agrégation est une relation « possède un » Un immeuble possède une adresse, Un immeuble possède un point3D Il serait faux de concevoir le logiciel en énonçant que : Un immeuble est une adresse (Immeuble est dérivé d’Adresse) INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Autres relations La relation « utilise un » correspond à l’appel d’une fonction membre d’une classe dont un paramètre est un objet d’une autre classe. La relation « connaît un » correspond à une composition par adresse ou une association. INF1101 Algorithmes et structures de données

Principe d’héritage (suite) En C++, il existe l’héritage simple, et l’héritage multiple. Dans ce cours, nous ne nous intéresserons qu’à l’héritage simple. Dans la définition de la classe dérivée, afin d’utiliser l’héritage, on ajoute le symbole : après le nom de la classe en précisant par la suite quelle est la classe de base. Ex: class Sphere : public ObjetGeo {...} INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Les types d’attributs Les attributs private Lors de l’héritage public, les attributs privés de la classe de base restent privés pour les classes dérivées. Il faut donc utiliser les méthodes publiques de la classe de base afin d’accéder à ces attributs. INF1101 Algorithmes et structures de données

Les types d’attributs (suite) Les attributs ou méthodes publics Lors de l’héritage, Les attributs ou méthodes publics de la classe de base seront accessibles par les classes dérivées, et le resteront pour les clients de la classe dérivée. INF1101 Algorithmes et structures de données

Les types d’attributs (suite) Les attributs ou méthodes protected Lors de l’héritage: Les attributs protégés de la classe de base seront accessibles par les classes dérivées, mais ne seront pas accessibles par les clients de la classe dérivée. Ce type d’attribut est le plus utilisé lors de l’utilisation de l’héritage. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Accès aux membres class ObjetGeo { public: ObjetGeo(); ObjetGeo(couleur& maCouleur); ObjetGeo(const ObjetGeo &copie); virtual ~ObjetGeo(); protected: couleur maCouleur; }; INF1101 Algorithmes et structures de données

Redéfinition des fonctions de base Les fonctions de la classe de base peuvent être redéfinies dans la classe dérivée. Les fonctions redéfinies de la classe de base demeurent accessibles via l'opérateur de résolution de portée ("::"). INF1101 Algorithmes et structures de données

Exemple de redéfinition de fonctions de base Soit la classe ObjetGeo avec sa classe dérivée Cube, toutes les deux possédant une fonction Afficher(); ObjetGeo . . . Cube Afficher() . . . Afficher() INF1101 Algorithmes et structures de données

Redéfinition de fonctions void ObjetGeo::Afficher() { cout<<"Couleur"; maCouleur.ecrire(cout); cout<<endl; } void Cube::Afficher() { ObjetGeo::Afficher(); cout<< maHauteur <<maLongueur <<maLargeur; } Appel de la fonction Afficher() de ObjetGeo INF1101 Algorithmes et structures de données

Redéfinition de fonctions (suite) ObjetGeo MonObjet(couleur(100,0,0)); // fonction Afficher de ObjetGeo MonObjet.Afficher(); Cube MonCube (couleur(100,0,0),5,5,5); // fonction Afficher de Cube MonCube.Afficher(); MonCube.ObjetGeo::Afficher(); INF1101 Algorithmes et structures de données

Constructeur et destructeur Lors de la création d’un objet d’une classe dérivée, les constructeurs sont appelés dans l’ordre suivant: Les constructeurs des objets attributs de la classe de base, Le constructeur de la classe de base, Les constructeurs des objets attributs de la classe dérivée; Le constructeur de la classe dérivée. Les destructeurs sont appelés en ordre inverse des constructeurs. INF1101 Algorithmes et structures de données

La classe de base : ObjetGeo class ObjetGeo { public: ObjetGeo(); ObjetGeo(couleur& laCouleur); ObjetGeo(const ObjetGeo &copie); virtual ~ObjetGeo(); protected: couleur maCouleur; }; INF1101 Algorithmes et structures de données

Constructeur de ObjetGeo ObjetGeo::ObjetGeo(couleur& laCouleur) : maCouleur(laCouleur) { } INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Classe dérivée: Cube class Cube : public ObjetGeo { public: Cube(); Cube(couleur& col, float uneLargeur, float uneLongueur, float uneHauteur); Cube(const Cube &copie); ~Cube(); . . . private: float maLargeur; float maLongueur; float maHauteur; }; INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Constructeur de Cube Cube::Cube(couleur& col, float uneLargeur, float uneLongueur, float uneHauteur) :ObjetGeo(col) { maLargeur = uneLargeur; maLongueur = uneLongueur; maHauteur = uneHauteur; } INF1101 Algorithmes et structures de données

Ordre des appels de constructeurs et agrégat Lorsqu’un objet d’une classe dérivée est construit, une instance de la classe de base est automatiquement créée. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Méthodes non héritées Les classes dérivées n’héritent pas : Des constructeurs (défaut, paramètres, copie); Du destructeur; De l’opérateur d’affectation; Des relations d’amitié. INF1101 Algorithmes et structures de données

Opérateur d’assignation non hérité Si on a un opérateur= dans la classe de base; Si aucun opérateur= dans la classe dérivée; Alors, le compilateur va appeler l’opérateur= de la classe de base et recopie attribut par attribut les attributs de la classe dérivée. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Type d’héritage Il existe trois différents types d’héritage, soient : public, private et protected. Le type d’héritage est spécifié après le symbole : class Cylindre : private ObjetGeo Par défaut, le type d’héritage est privé. Dans ce cours, nous nous contenterons d’utiliser l’héritage public. INF1101 Algorithmes et structures de données

Type d’héritage (suite) Le type d’héritage permet de savoir : Quelles entités sont au courant qu’une certaine classe est en fait une classe dérivée d’une classe de base. Comment les attributs de la classe de base seront accessibles. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Héritage public class ClasseDerivee : public ClasseBase Classe de base Classe dérivée private  protected public Les attributs private, protected et public de la classe de base restent les mêmes pour la classe dérivée. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Héritage protected class ClasseDerivee : protected ClasseBase Classe de base Classe dérivée private  protected public Les attributs public de la classe de base deviennent protégés pour la classe dérivée. INF1101 Algorithmes et structures de données

INF1101 Algorithmes et structures de données Héritage privé class ClasseDerivee : private ClasseBase Classe de base Classe dérivée private  protected public Tous les attributs de la classe de base deviennent private pour la classe dérivée. INF1101 Algorithmes et structures de données