Les classes et les objets

Slides:



Advertisements
Présentations similaires
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.
Advertisements

Leçon 3 : Héritage IUP 2 Génie Informatique
Classes abstraites et Interfaces
Introduction au paradigme orienté-objet (suite)
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.
Héritage et composition
La notion de type revisitée en POO
Labo 4 : Les structures et les entrées et sorties
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
Les classes Introduction aux Langages Orientés Objets
Chapitre VII Techniques plus avancées à travers le concept de classe.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
1 Programmation en C++ Fonctions ● Déclaration et définition de fonctions ● Arguments ● Surcharge ● Arguments optionnels ● Fonctions constantes ● Fonctions.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Tableaux en C Mardi 2/05.
I- ANALYSE DU BESOIN / Plan
Modèle objet : les classes
java : l'héritage (rappel)
Environnement de développement des BD
Programmation en C++ Héritage
Utiliser le dossier Mon EBSCOhost
Pas de variable globale
Les notions de classe et d'objet
Pointeurs et langage C.
JavaScript.
AIDE A L’UTILISATION DU LOGICIEL LATISPRO
Principes de programmation (suite)
Algorithmique Langage C
11ième Classe (Mardi, 18 novembre) CSI2572
Langages de programmation TP7
Les fonctions.
Les fonctions.
Les bases de données et le modèle relationnel
Programmation en C++ Fonctions
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Langages de programmation TP10
Cours Programmation Orientée Objet (POO) 2eme année Licence-LMD
Chapitre 2: Les classes et les objets
5ième Classe (Mardi, 6 octobre) CSI2572
Windows 7 NTFS.
Module 5 : Gestion des disques.
Les interfaces en PHP.
Programmation en C++ Fonctions
Cours N°9: Algorithmiques Les Tableaux 1
Programmation en C++ C++ de base
Structure D’une Base De Données Relationnelle
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Type Concret – Type Abstrait
Calcul Scientifique Initiation à SCILB
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
STS Web Services libres Créer un service libre
STS Web Services libres Constituer les services libres
Paradigme Orienté Objet
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Exercice 1 Objectif : Définir une classe avec un constructeur et créer une instance de cette classe. La classe Habitation comprend les attributs : proprietaire.
Programmation Orientée Objet MMI 2ème année – S3
Principes de programmation (suite)
Addition et soustraction des fractions
Présentation Chaînage dynamique Retour sur les tableaux
Variables et accès en Java
EXPOSE D’UML Licence 2 SI/GL/IM Réalisé par :Demandé par : AYITCHEME Auréane D r HOUNDJI TCHEGNON AlbertRatheil YAYA Hanane ZINSE Bienvenu.
Bases de données Singleton pour la connexion
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
STS Web Services libres Constituer les services libres
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
PROJET R.A.N. LES FRACTIONS.
Transcription de la présentation:

Les classes et les objets Démo : INF3105 Structures de données et algorithmes Groupe : 40 Demonstrateur : Stéphane HENRY Courriel : Notes de Kerlyne Fostiné

Plan de la démonstration Les classes Affectation d’objet Constructeur et destructeur Les attributs et méthodes statiques d’une classe Autoréférence : this Les méthodes Surdéfinition Arguments par défaut En ligne La notion d’héritage Mise en œuvre de la notion d’héritage Le contrôle d’accès Redéfinition des méthodes Appel de constructeur Les classes abstraites

Les classes class Rationnel{ private: int num; int deno; int pgcd(); public : void simplifier(); } int Rationnel::pgcd(){ void Rationnel::simplifier(){

Les classes (Suite) Utilisation d’une classe Rationnel a a.simplifier(); a.pgcd() //incorrect methode privee a.num //incorrect donnée privée

Les classes Dans un projet C++ On déclare les classes dans un fichier d’entête hpp Déclaration des attributs Déclaration des prototypes des méthodes On définit les classes dans un fichier cpp Définition de chacune des méthodes (Privés, public, protégé) On utilise la classe dans un autre fichier cpp Un exemple un fichier contenant la fonction main qui crée un objet de la classe ou une fonction ou une autre méthode.

Affectation d’objets Copie des données membre privées et publiques dans l’autre objet Rationnel a, b; a = b //Affectation Cette affectation est simple, c’est correct. Affectation superficiel si dans la classe, les données membres sont de type pointeur. Il faudrait surdéfinir l’opérateur = pour les objets en question.

Constructeurs et destructeur Constructeur : Méthode appelée automatiquement lors de la création des objets de la classe Utilisé le plus souvent pour initialiser les ressources utilisées par la classe Même nom que la classe Pas de valeur de retour Rationnel(int num, int num) Destructeur : Méthode appelée automatiquement lors de la destruction des objets de la classe. Utilisé le plus souvent pour libérer les ressources utilisées par l’objet. Même nom que la classe avec ~ au début Pas d’arguments ~Rationnel()

Les attributs et les méthodes statiques d’une classe Attributs et méthodes liés à la classe et non aux objets de la classe Initialisation d’attribut ne peut être réalisée à l’intérieur d’un constructeur Méthode n’opérant pas sur les attributs non static de la classe Méthode publique pouvant être appelé à partir du nom de la classe à l’aide de l’opérateur de portée ::

Les méthodes Surdéfinition Arguments par défauts En ligne Définition d’une méthode plusieurs fois avec le nombre d’arguments différent ou le type d’arguments différent afficher() afficher(string message) Arguments par défauts Déclaration du prototype Fonction(int, int = 5) Définition de la fontion Void fonction(int a, int b){ a } En ligne Fonction définie à l’intérieur de la classe

Exercice I Écrire en C++ une classe représentant les nombres Rationnel. A l’intérieur de cette classe il doit y avoir les méthodes suivantes : Un constructeur avec le numérateur et le dénominateur passé en paramètre Un constructeur avec seulement le numérateur passé en paramètre (Par défaut le dénominateur est égal à 1) Un constructeur sans argument pour créer un rationnel dont le numérateur est égal à 0 et le dénominateur égal à 1; simplifier : permettant de simplifier l’objet rationnel. (Exemple 5/10 est simplifier à ½). Cette méthode doit faire appel à une autre méthode privée de la classe (pgcd) pour réaliser la simplification additionner : permettant d’additionner l’objet rationnel en cours à un autre objet rationnel qu’on a passé en paramètre. Le prototype de la méthode est : Rationnel additionner (Rationnel );

Exercice I (Suite) additionner : permettant d’additionner 2 objets rationnels. Cette méthode doit être statique. Le prototype de la méthode est : Rationnel additionner (Rationnel, Rationnel) soustraire : permettant de soustraire un rationnel passé en paramètre de l’objet rationnel en cours. Le prototype de la méthode est : Rationnel soustraire (Rationnel ); soustraire : permettant de soustraire b de a. Cette méthode doit être statique. Le prototype de la méthode est : Rationnel soustraire (Rationnel a, Rationnel b) multiplier : permettant de multiplier 2 objets rationnels passés comme paramètre. Cette méthode doit être statique. Le prototype de la méthode est : Rationnel multiplier(Rationnel, Rationnel)

Exercice I (Suite) multiplier : permettant de multiplier l’objet rationnel en cours à un autre objet rationnel qu’on a passé en paramètre. Le prototype de la méthode est : Rationnel multiplier(Rationnel ); Afficher : permettant d’afficher le rationnel. Ensuite il faut créer un programme contenant la fonction main qui comporte les menus suivants : 1 : Addition de 2 rationnels. 2 : Soustraction de 2 rationnels. 3 : Multiplication de 2 rationnels. 4 : Sortir du programme

La notion d’héritage L’héritage : Mécanisme par lequel une classe dite dérivée hérite des « potentialités » (attributs et méthodes) d’une autre classe dite de base, toute en lui ajoutant de nouvelles. Héritage simple : La classe dérivée hérite d’une seule classe. Héritage multiple : La classe dérivée hérite de plusieurs classes. Une classe dérivée peut devenir a son tour classe de base pour une autre classe. Plusieurs classes pourront être dérivée d’une meme classe de base. 13

Mise en œuvre de la notion d’héritage Définition d’une classe dérivée class A{ //Définition de la classe A //Définition des attributs et des méthodes de A } class B : public A{ //Classe B hérite de A //Définition des attributs et des méthodes de B 14

Mise en œuvre de la notion d’héritage class A{ //Définition de la classe A int x; int y; public : void initialiser(); void afficher(); } class B : public A{ //Classe B hérite de A int c; void iterer(); B objet1; objet1.initialiser(); objet1.iterer(); 15

Le contrôle d’accès La déclaration class B : public A spécifie que B hérite de A Le mot clé public spécifie une dérivation publique c’est-a-dire les membres publics de la classe de base (A) seront des membres publics de la classe dérivée (B) La classe dérivée n’a pas accès aux membres prives de la classe de base et ses utilisateurs non plus. La classe dérivée a accès aux membres protégés (protected) de la classe de base mais ses utilisateurs n’ont pas accès a ces membres. Avec une dérivation privée, les membres publics de la classe de base sont devenus privés pour les utilisateurs de la classe dérivée mais restent publics pour les classes dérivées Avec une dérivation protégée, les membres publics de la classe de base sont devenus protégés pour une dérivation ultérieure. 16

Exercice II Voir le fichier des exercices. 17

Redéfinition des méthodes de la classe de base dans une classe dérivée Dans une fonction dérivée, on peut avoir une méthode ayant le même prototype qu’une méthode de la classe de base, dans ce cas la classe dérivée redéfinie la méthode de la classe de base. Dans la méthode redéfinie de la classe dérivée pour faire appel a la même méthode de la classe de base, il faut faire usage de l’opérateur de résolution de portée (::). Classe_de_base::methode(); Si un objet de la classe dérivée fait appel a une méthode redefinie, il fera appel directement a la méthode de la classe dérivée. S’il veut faire appel a la même méthode de la classe de base, il doit le faire de la façon suivante : Objet.classe_de_base::methode(); 18

Appel de constructeur Lors de la création d’un objet d’une classe dérivée, il y a d’abord appel du constructeur de la classe de base puis le constructeur de la classe dérivée Si le constructeur de la classe de la classe de base nécessite des arguments, dans la définition du (des) constructeur(s) de la classe dérivée il faut prendre en compte ces mêmes arguments en plus d’autres arguments utiles a la classe dérivée et transmettre les arguments requis a la classe de base. class A{ A(int a, int b) } class B : public A{ B(int a, int b, int c) : A(a, b) 19

Exercice III Voir le fichier des exercices 20