Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2737 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Y a un truc que je pige pas avec les class

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Y a un truc que je pige pas avec les class

n°39179
Alload
Posté le 12-06-2001 à 19:05:56  profilanswer
 

Pourquoi tout le monde préconise-t-il de créer des fonctions publiques dans une classe afin de sortir ou changer la valeur de variables qui sont quand à elles privées?
 
Je vois pas trop à quoi ça avance de se faire d'écrire à chaque fois des fonctions pour ça...
 
Enfin bon, j'attends vos commentaires.
:)

mood
Publicité
Posté le 12-06-2001 à 19:05:56  profilanswer
 

n°39182
nnovic
Posté le 12-06-2001 à 19:17:16  profilanswer
 

Cela permet de protéger la classe contre une mauvaise utilisation : ta fonction peut te servir à éliminer des plages de valeurs indésirables (valeurs négatives par exemple), ou à répercuter la modification à d'autres endroits du programme qui ont besoin d'être prévenus du changement (par exemple le statut de l'application : est-elle active, en pause, terminée,...).

n°39185
janoscoder
Posté le 12-06-2001 à 19:34:12  profilanswer
 

exemple:
une classe de vecteurs unitaires.
 
une classe contenant une longue string, et une valeur de hachage associée. A chaque fois que tu touches à la string, il faut mettre à jour la valeur de hachage.
 
Une image. Tu ne peux pas changer la hauteur et la largeur sans avoir à réallouer la mémoire, ou accepter de valeurs négatives.
 
Deuxième intérêt:
Avoir plusieurs implémentations de la même chose.
Si on revient aux vecteurs unitaires. on peut implémenter ça avec deux angles alpha et beta, et on peut avoir les fonctions GetX, GetY et GetZ qui fonctionne correctement.
Comme ça si on trouve une meilleure méthode, on peut l'implémenter sans bouziller le reste du code.
De même, si on fait des templates, on veut que les classes utilisées en paramètre supportent un certain nombre de crières. Le plus possible, ces critères sont l'impléméntation de fonctions, plutôt que la présence de données.
 
En ccl, pas besoin de cacher les données pour un type  
class Vector3D
{
public:
 float x,y,z;
...
};  
on pourrait même mettre une struct.
 
mais pour les classes plus complexes, il faut songer à la manière dont on veut qu'elles soient utilisées et créer une interface, puis l'implémenter.
 
on peut donc faire du genre
 
class InterfaceImage
{
 des fonctions du genre GetW Get Y, operator [] (x,y)pour accéder à un pixel...
};
 
class ImageComp: public InterfaceImage
{
 là des données private
 et l'implémentation public de l'interface
 
};
 
class ImageRapide: public InterfaceImage
{
 idem
};
 
et comme ça c'est propre et stable.
 
J'espère avoir été assez clair,
 
Always C++

n°39195
BifaceMcLe​OD
The HighGlandeur
Posté le 12-06-2001 à 20:30:57  profilanswer
 

Comme l'a dit nnovic, cela réduit (de façon drastique) le nombre d'endroits dans le code où telle ou telle donnée est directement modifiée. Ce qui veut dire aussi que si une donnée a une valeur incorrecte, c'est beaucoup plus facile de savoir quel bout de code lui a donné cette valeur incorrecte, et cela permet aussi d'écrire plus facilement du code pour se prémunir contre ces valeurs incorrectes.
 
Bref, cela permet de beaucoup mieux maîtriser (et même de réduire) la complexité d'un programme.

 

[edit]--Message édité par BifaceMcLeOD--[/edit]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Y a un truc que je pige pas avec les class

 

Sujets relatifs
Forum W-Agora : pas trouve un truc=>[PHP] Help Truc Tous CON !
Juste un dernier truc de finition --> C++, toujours MFC !!!Can't find class JDelete
Java: La meta classe Class[javascript] un truc simple...
[java] taille des fichiers .classun truc comme like en SQL ...
[visual basic] encore un truc tout con que je trouve pasclass java.lang.Str
Plus de sujets relatifs à : [C++] Y a un truc que je pige pas avec les class


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR