Extrait du chapitre 5 de l'édition 5 dispo en PDF :
puis :Avec ce chapitre, nous abordons véritablement les possibilités de P.O.O. de C++. Comme nous l'avons dit dans le premier chapitre, celles-ci reposent entièrement sur le concept de classe. Une classe est la généralisation de la notion de type défini par l'utilisateur1, dans lequel se trouvent associées à la fois des données (membres données) et des méthodes (fonctions membres). En P.O.O. "pure", les données sont encapsulées et leur accès ne peut se faire que par le biais des méthodes. C++ vous autorise à n’encapsuler qu'une partie des données d'une classe (cette démarche reste cependant fortement déconseillée). Il existe même un type particulier, correspondant à la généralisation du type structure du C, dans lequel sont effectivement associées des données et des méthodes, mais sans aucune encapsulation. En pratique, ce nouveau type structure du C++ sera rarement employé sous cette forme généralisée. En revanche, sur le plan conceptuel, il correspond à un cas particulier de la classe ; il s'agit en effet d'une classe dans laquelle aucune donnée n'est encapsulée. C'est pour cette raison que nous commencerons par présenter le type structure de C++ (mot clé struct), ce qui nous permettra dans un premier temps de nous limiter à la façon de mettre en oeuvre l'association des données et des méthodes. Nous ne verrons qu’ensuite comment s'exprime l'encapsulation
au sein d'une classe (mot clé class).
plus loin (c'est moi qui souligne) :Notion de classe
Comme nous l'avons déjà dit, en C++ la structure est un cas particulier de la classe. Plus précisément, une classe sera une structure dans laquelle seulement certains membres et/ou fonctions membres seront "publics", c'est-à-dire accessibles "de l'extérieur", les autres membres étant dits "privés".
Ou comment dire n'importe quoi sur les structures.Pour C++, les unions et les énumérations sont aussi des classes. Ces deux types peuvent donc disposer de fonctions membres. Notez bien que, comme pour le type struct, les données correspondantes ne peuvent pas se voir attribuer un statut particulier : elles sont, de fait, publiques.
Un exemple de main :
Encore :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 main() { point a(5,2) ; a.affiche () ; a.deplace (-2, 4) ; a.affiche () ; point b(1,-1) ; b.affiche () ; }
Si tous le reste est à l'avenant, ça laisse rêveur...En théorie, constructeurs et destructeurs peuvent être publics ou privés. En pratique, à moins d'avoir de bonnes raisons de faire le contraire, il vaut mieux les rendre publics. En effet, un destructeur privé ne pourra pas être appelé directement1, ce qui n'est pas grave, dans la mesure où cela est rarement utile. En revanche, si le constructeur d'une classe est privé, il ne
sera plus possible de créer des objets de cette classe2, que ce soit par une déclaration ou une allocation dynamique. A la rigueur, un constructeur privé peut se justifier dans le cas où la classe concernée est destinée à donner naissance, par héritage, à des classes dérivées.
Partager