Une classe dans une classe ?

Résolu
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 1 février 2013 - 13 nov. 2006 à 16:29
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 1 février 2013 - 14 nov. 2006 à 10:06
Bonsoir à tous !

Voila j'ai un petit soucis :

J'ai deux classe (classe A, classe B). La classe B contient une instance de la classe A parmis ses propriétés.
J'ai donc cherché un moyen, pour une raison Y, d'accéder aux attributs privées de la classe A part l'intermediaire de la classe B.

Et il se trouve que j'en ai trouvé un !

Ma classe B est déclaré dans ma classe A et la j'accède directement à tous les attributs privées de la classe A par la B.

Mes questions sont les suivantes :

Cette manière de coder est elle "PROPRE" ? Et il y a t'il des recommandations à respecter ?

Je vous remercie d'avance !!

4 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
13 nov. 2006 à 17:06
Salut, ça s'appelle une classe imbriquée, c'est souvent très pratique.. Tu peux donner à B le modificateur d'accès private si tu veux pas qu'elle soit visible en dehors de A.
3
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 1 février 2013 1
13 nov. 2006 à 17:28
Merci
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
13 nov. 2006 à 21:36
autre solution : tu crées des accesseurs internal...
exemple :

class A
{
private int int1, int2, int3;

//les int1 et int2 sont internes a classeA, mais classeB doit pouvoir accéder a int3 qui pourtant doit etre private pour d'autres classes

public int MonInt
{
get
{
return int3;
}
internal set
{
int3 = value;
}
}

}

toutes les classes dans le meme assembly que classeA peuvent modifier int3.
toutes les classes qui accedent au programme peuvent accéder a int3 en lecture seule.
apres tu peux moduler comme tu veux pour faire int3 internal directement, etc...

quoi qu'il en soit, il n'est pas propre d'acceder a une variable directement sans utiliser un getter/setter
0
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 1 février 2013 1
14 nov. 2006 à 10:06
C'est génialement intéressant merci beaucoup leprov !!
0
Rejoignez-nous