Débutant : Classe dans une classe : pour faire quoi ?

Le
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Je constate qu'il est possible de définir une classe à l'intérieur d'une
classe.

Avez-vous des exemples d'utilisation de cette possibilité ? En gros, à quoi
cela peut-il être utile ?

Christian
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jérémy Jeanson
Le #21080301
Bonjour Christian,

En général cela est utilisé pour un framework métier afin de le ren dre
plus lisible. Mais cela n'est pas conseillé.
Il est préférable d'utiliser les namespace pou cela.

---
Jérémy Jeanson
MCP
http://www.jjeanson.fr
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Le #21081261
OK.

Merci pour le conseil

Christian

"Jérémy Jeanson" news:
Bonjour Christian,

En général cela est utilisé pour un framework métier afin de le rendre
plus lisible. Mais cela n'est pas conseillé.
Il est préférable d'utiliser les namespace pou cela.

---
Jérémy Jeanson
MCP
http://www.jjeanson.fr
Christophe Lephay
Le #21095391
"Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax" écrit dans le message de groupe de discussion :

OK.

Merci pour le conseil

Christian

"Jérémy Jeanson" news:
Bonjour Christian,

En général cela est utilisé pour un framework métier afin de le rendre
plus lisible. Mais cela n'est pas conseillé.
Il est préférable d'utiliser les namespace pou cela.



Il y a quand même une différence qui va au delà de la pollution de l'espace
de noms.

L'encapsulation étend un principe essentiel qui vise à réduire le plus
possible les effets de bord.

On réduit le couplage (et donc les risques d'effets de bord) en réduisant la
portée et l'accessibilité d'un identificateur (qu'il s'agisse d'un objet ou
d'un type).

Lorsqu'on a le choix, c'est mieux d'avoir un membre privé plutôt que
publique, et c'est encore mieux d'avoir un objet local à une méthode plutôt
que d'en faire une donnée membre.

C'est pareil avec une classe imbriquée - à la condition qu'on la déclare
privée (ou éventuellement protégée).

En revanche, s'il s'agit de déclarer publique une classe imbriquée, cela ne
présente pas le moindre intérêt et l'alternative proposée par Jérémy en rend
la lecture plus facile.
Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax
Le #21095511
Merci de tes éclaircissements. Ils sont aussi précieux.

"Christophe Lephay" de news:4b654e3d$0$17492$
"Christian Hubert-Hugoud / weabow - Xtrem7 - Groobax" a écrit dans le message de groupe de discussion :

OK.

Merci pour le conseil

Christian

"Jérémy Jeanson" news:
Bonjour Christian,

En général cela est utilisé pour un framework métier afin de le rendre
plus lisible. Mais cela n'est pas conseillé.
Il est préférable d'utiliser les namespace pou cela.



Il y a quand même une différence qui va au delà de la pollution de
l'espace de noms.

L'encapsulation étend un principe essentiel qui vise à réduire le plus
possible les effets de bord.

On réduit le couplage (et donc les risques d'effets de bord) en réduisant
la portée et l'accessibilité d'un identificateur (qu'il s'agisse d'un
objet ou d'un type).

Lorsqu'on a le choix, c'est mieux d'avoir un membre privé plutôt que
publique, et c'est encore mieux d'avoir un objet local à une méthode
plutôt que d'en faire une donnée membre.

C'est pareil avec une classe imbriquée - à la condition qu'on la déclare
privée (ou éventuellement protégée).

En revanche, s'il s'agit de déclarer publique une classe imbriquée, cela
ne présente pas le moindre intérêt et l'alternative proposée par Jérémy en
rend la lecture plus facile.


Jean-Philippe Gouigoux
Le #21131911
Bonjour,

Il est intéressant d'utiliser une classe interne pour simplifier le code
d'une classe complexe. En règle générale, il vaut mieux que cette classe
ne soit pas exposée à l'extérieur, et c'est d'ailleurs une règle dans un
outil de vérification de qualité de code comme NDepend.

Maintenant, il y a toujours une exception valable à tout, et une
définition d'énumération est un bon exemple. Il vaut mieux avoir un enum
ModeCloture dans une classe Contrat que deux classes séparées Contrat et
ModeClotureContrat.

JP
Publicité
Poster une réponse
Anonyme