cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 27 févr. 2006 à 17:13
une variable de classe que tu veux copier d'une classe à l'autre ???
Le plus simple reste de faire des fonctions accesseurs : une fonction qui renvoie la valeur d'une variable de classe dans ta première classe, et une fonction qui définit la valeur d'une variable dans ta deuxième classe.
En Poo, il faut éviter les variables publiques !!!
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 27 févr. 2006 à 23:11
Ca doit permettre d'avoir du code plus sur (pour être sur que les données soient toujours cohérentes). Par exemple tu as un champ taille dans la classe Bonhomme, ben si tu fais bonhomme.setTaille(-2), ca va te déclencher une exception ou une autre erreur.
Si tu mets ca en public, tu fais bonhomme.taille = -2, et ca passe sans problème.
Après c'est pas non plus une obligation. Moi pour mes classes perso je le fais pas car je pense que c'est une perte de temps
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 28 févr. 2006 à 06:46
Cela permet plusieurs choses :
Une meilleure maintenance (si tu veux renommer tes variables par exemple, tu peux le faire sans risquer de perdre la compatibiltié ascendendante de tes classes tant que tu ne touche pas aux fonctions accesseurs)
Une meilleure lisibilité (des fonctions get/set permettent de comprendre ce que tu fais, par rapport à un nom de variable non explicite)
Utiliser des acronymes pour le nom de tes variables tout en gardant des noms explicites pour tes fonctions accesseurs
Un debuggage simplifié : va tester qui modifie ta variable x, et à quel moment ! Alors qu'avec une fonction accesseur, tu peux facilement imprimer quand elle a était appellée.
Tu peux limiter l'accès à une variable : ne permettre que la lecture avec une seule fonction get, que l'écriture avec une seule fonction set, ou l'accès en lecture/écriture avec le couple get/set. (extrémement dangeureux de laisser l'accès en écriture pour des variables importantes dans une classe !!!).
Une approche bien plus objet : en objet, tu n'ai pas censé savoir si la classe x ou y utilise une liste chaînée ou un tableau, donc avec des fonctions addItem, DeleteItem, etc, tu peux gérer ton type de données dérrière très simplement, et surtout, le modifier au cours du temps si besoin, sans que l'utilisateur ne s'en rende compte !