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

 


Dernière réponse
Sujet : [C++] Y a un truc que je pige pas avec les class
BifaceMcLeOD 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]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
BifaceMcLeOD 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]

janoscoder 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++
nnovic 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,...).
Alload 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.
:)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)