Présentation

Article

1 - PRÉSENTATION GÉNÉRALE

  • 1.1 - Programmation orientée objet
  • 1.2 - Place de C++ par rapport à C

2 - AMÉLIORATIONS DE C++ PAR RAPPORT À C

  • 2.1 - Sécurisation de l’utilisation des fonctions
  • 2.2 - Espaces de noms
  • 2.3 - Nouvelles possibilités d'entrées-sorties
  • 2.4 - Nouvelle forme de commentaires
  • 2.5 - Transmission par référence
  • 2.6 - Arguments par défaut
  • 2.7 - Surdéfinition de fonctions
  • 2.8 - Gestion dynamique de la mémoire

3 - NOTION DE CLASSE

  • 3.1 - Déclaration et définition d'une classe
  • 3.2 - Utilisation d'une classe
  • 3.3 - Affectation entre objets
  • 3.4 - Constructeur et destructeur
  • 3.5 - Exemple complet
  • 3.6 - Exploitation d’une classe
  • 3.7 - Membres données statiques
  • 3.8 - Surdéfinition des fonctions membres et arguments par défaut
  • 3.9 - Cas des objets transmis en arguments d'une fonction membre
  • 3.10 - Autoréférence : mot clé this
  • 3.11 - Fonctions membres statiques
  • 3.12 - Cas des objets dynamiques
  • 3.13 - Construction d'objets contenant des objets membres
  • 3.14 - Constructeur par recopie

4 - FONCTIONS AMIES

  • 4.1 - Fonction indépendante, amie d'une classe A
  • 4.2 - Fonction membre d'une classe B, amie d'une autre classe A
  • 4.3 - Toutes les fonctions d'une classe B sont amies d'une autre classe A

5 - SURDÉFINITION D’OPÉRATEURS

6 - HÉRITAGE

  • 6.1 - Redéfinition d’une fonction membre
  • 6.2 - Modalités d'accès à la classe de base
  • 6.3 - Redéfinition et surdéfinition
  • 6.4 - Appel des constructeurs et des destructeurs
  • 6.5 - Cas particulier du constructeur par recopie
  • 6.6 - Conséquences de l'héritage
  • 6.7 - Cas particulier de l'opérateur d'affectation
  • 6.8 - Compatibilité entre objets d'une classe de base et objets d'une classe dérivée
  • 6.9 - Héritage multiple

7 - FONCTIONS VIRTUELLES ET POLYMORPHISME

  • 7.1 - Typage statique des objets
  • 7.2 - Fonctions virtuelles
  • 7.3 - Fonctions virtuelles pures

8 - FLOTS D’ENTRÉE ET DE SORTIE

  • 8.1 - Classe ostream
  • 8.2 - Classe istream
  • 8.3 - Surdéfinition de << et >> pour des types classe
  • 8.4 - Association d'un flot à un fichier

9 - PATRONS DE FONCTIONS

  • 9.1 - Définition
  • 9.2 - Instanciation d'une fonction patron
  • 9.3 - Paramètres expression d'un patron de fonctions
  • 9.4 - Surdéfinition de patrons de fonctions et spécialisation de fonctions de patrons
  • 9.5 - Algorithme d'instanciation ou d'appel d'une fonction

10 - PATRONS DE CLASSES

  • 10.1 - Définition
  • 10.2 - Instanciation d'une classe patron
  • 10.3 - Spécialisation d'un patron de classes
  • 10.4 - Identité de classes patron
  • 10.5 - Classes patron et héritage

11 - GESTION DES EXCEPTIONS

12 - BIBLIOTHÈQUE STANDARD

  • 12.1 - Notions de conteneur, d’itérateur et d’algorithme
  • 12.2 - Différents conteneurs et algorithmes
  • 12.3 - Autres classes

Article de référence | Réf : S8065 v1

Notion de classe
Programmation en langage C++ - Concepts

Auteur(s) : Claude DELANNOY

Date de publication : 10 sept. 2003

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais English

RÉSUMÉ

Le langage C++, développé à partir de C,  est un langage orienté objet qui a l'avantage d'avoir une base très répandue. IL laisse donc au programmeur la possibilité d'adopter un style plus ou moins orienté objet. Cet article présente les évolutions et les apports de C++ par rapport à C. Puis les spécificités de C++ sont abordées plus en détail :  classes, héritages, surdéfinition d'opérateurs, polymorphismes, etc.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

Auteur(s)

  • Claude DELANNOY : Ingénieur de l’ENSEM (École nationale supérieure d’électricité - et de mécanique) de Nancy - Ingénieur informaticien au CNRS (Centre national de la recherche scientifique)

INTRODUCTION

La programmation orientée objet (en abrégé POO) est dorénavant universellement reconnue pour les avantages qu’elle procure. Notamment, elle améliore largement la productivité des développeurs, la robustesse, la portabilité et l’extensibilité de leurs programmes. Enfin, et surtout, elle permet de développer des composants logiciels entièrement réutilisables.

Un certain nombre de langages dits « langages orientés objet » (LOO) ont été définis de toutes pièces pour appliquer les concepts de POO. C’est ainsi que sont apparus dans un premier temps des langages comme Smalltalk, Simula ou Eiffel, puis Java. Le langage C++, quant à lui, a été conçu suivant une démarche quelque peu différente par B. Stroustrup (AT&T) ; son objectif a été, en effet, d'adjoindre au langage C un certain nombre de spécificités lui permettant d'appliquer les concepts de POO. Ainsi, C++ présente-t-il sur un vrai LOO l'originalité d'être fondé sur un langage répandu. Cela laisse au programmeur toute liberté d'adopter un style plus ou moins orienté objet, en se situant entre les deux extrêmes que constituent la poursuite d'une programmation classique d'une part, une pure POO d'autre part. Si une telle liberté présente le risque de céder, dans un premier temps, à la facilité en mélangeant les genres (la POO ne renie pas la programmation classique - elle l'enrichit), elle permet également une transition en douceur vers la POO pure, avec tout le bénéfice que l'on peut en escompter à terme.

De sa conception jusqu'à sa normalisation, le langage C++ a quelque peu évolué. Initialement, un certain nombre de publications de AT&T ont servi de référence au langage. Les dernières en date sont : la version 2.0 en 1989, les versions 2.1 et 3 en 1991. C’est cette dernière qui a servi de base au travail du comité ANSI (American National Standard Institute) lequel, sans la remettre en cause, l'a enrichie de quelques extensions et surtout de composants standards originaux se présentant sous forme de fonctions et de classes génériques que l’on désigne souvent par le sigle STL (Standard Template Library). La norme définitive de C++ a été publiée en juillet 1998.

Cet article est extrait de l’ouvrage « Programmer en langage C++ » du même auteur, paru aux éditions Eyrolles [5].

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-s8065


Cet article fait partie de l’offre

Automatique et ingénierie système

(139 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais English

3. Notion de classe

Une classe est donc la généralisation de la notion de type défini par l'utilisateur, dans lequel se trouvent associées à la fois des données (on parle en C++ de « membres données ») et des méthodes (on parle de « fonctions membres »). En POO pure, les données sont « encapsulées », ce qui signifie que leur accès ne peut se faire que par le biais des méthodes. C++ vous autorise à n'encapsuler qu'une partie seulement des données d'une classe.

3.1 Déclaration et définition d'une classe

La déclaration d'une classe précise quels sont les membres (données ou fonctions) publics (c'est-à-dire accessibles à l'utilisateur de la classe) et quels sont les membres privés (inaccessibles à l'utilisateur de la classe). On utilise pour cela les mots clés public et private, comme dans cet exemple dans lequel la classe point comporte deux membres données privés x et y et trois fonctions membres publiques initialise, deplace et affiche :

Exemple

/* ------- Déclaration de la classe point -------- */

class point

{/* déclaration des membres privés */

private :

int x ;

int y ;

/* déclaration des membres publics */

public :

void initialise (int, int) ;// initialise les coordonnées

void deplace (int, int) ;// modifie les coordonnées

void affiche () ;// affiche les coordonnées

} ;

La définition d'une classe consiste à fournir les définitions des fonctions membre. On indique alors le nom de la classe correspondante, à l'aide de l'opérateur de résolution de portée (::). Au sein de la définition même, les membres (privés ou publics — données ou fonctions) sont directement accessibles sans qu'il soit nécessaire de préciser le nom de la classe. Voici, par exemple, ce que pourrait être la définition de la fonction initialise de la classe précédente.

Exemple

void point::initialise (int abs, int ord)

{x = abs ; y = ord ;

}

void point::deplace (int dx, int dy)

{x = x + dx ; y = y + dy ;

}void point::affiche ()

{cout << "Je suis en " << x << " " << y << "\n" ;

}

Ici, x et y représentent implicitement les membres x et y d'un objet de la classe point.

...

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Automatique et ingénierie système

(139 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Notion de classe
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - MEYER (B.) -   Object-Oriented Software Construction  -  . C.A.R. Hare Series Editor, Englewood Cliffs, NJ: Prentice Hall, 1988.

  • (2) - STROUSTRUP (B.) -   The C++ Programming Langage  -  , Third Edition. Reading, MA : Addison-Welsley Publishing Company, 1997.

  • (3) - STROUSTRUP (B.) -   Le langage C++,  -  Troisième édition. CampusPress France, 1999.

  • (4) - LIPPMAN (S.B.) -   C++ Primer  -  , Third Edition. Reading, MA : Addison-Welsley Publishing Company, 1998.

  • (5) - DELANNOY (C.) -   Programmer en langage C++  -  , cinquième édition. Éditions Eyrolles, 61 boulevard St Germain – 75240 Paris, 2002.

  • (6) - DELANNOY (C.) -   Exercices en langage C++  -  , nouvelle édition. Édition Eyrolles, 61, boulevard St Germain – 75240 Paris, 2002.

  • ...

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Automatique et ingénierie système

(139 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS