Probleme basique Java2

_jules_ Messages postés 25 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 12 novembre 2004 - 11 oct. 2004 à 11:22
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 11 oct. 2004 à 12:01
bjr tlm !

Voila g un soucis au niveau des méthodes & de passages de variables d'une classe a la classe principale ;
en fait déjà je comprend pas trop l'interet d'une méthode pour "securiser" les variables puisque dans la methode main on les declare toujours pareil (genre variable machin = truc) et que ds la classe on a un truc genre :

public void setBalance(double b)
{
balance=b;
}
je trouve ca presque stupide !

ducoup quand je veux faire entrer une valeur par l'utilisateur du programme et donc que je veux faire reference a une variable ds une classe, ds laquelle il va taper qqchose, c'est plus une variable mais une méthode ! ducoup, java ne reconnait pas la variable !

....j'ai vraiment besoin d'un prof ! "sigh"....

1 réponse

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
11 oct. 2004 à 12:01
:big) Neodante :big)

Salut,
oulà je crois qu'il y a pas mal de choses que tu n'as comprises. Je crois vraiment que tu n'as pas vraiment compris l'intérêt de mettre une variables avec des getter/setter (on appel aussi cela des accesseurs/accessors en english). Ne viendrais-tu pas du VB ????
Dans tous les langages OO c'est un concept important même s'il est vrai qu'il est beaucoup plus marqué avec Java. Il y a pas mal d'avantages à cela, tout d'abord le fait de sécuriser l'accès à ta données, par exemple si tu ne veux pas qu'une autre classe puisse changer ta variable alors tu n'as qu'à mettre un seul getMaVariable() ... et non le set/get. Egalement cela permet d'organiser l'accès au différentes variables, ainsi tu trouves tous tes accès dans les méthodes commençant par get pour obtenir tes varaibles et set pour les modifier, ce qui te permet aussi et cela est beaucoup utilisé de vérifier si cette modification est valide, si elle ne l'est pas la plupart du temps une exception IllegalArgumentException est lancée. En plus cela est une convention qui est très loin d'être stupide (c'est l'intérêt d'une convention !).

Et enfin (plus pour les connaisseurs ou si tu es au courant) cela permet de faire pas mal de chose notamment de la sérialisation (binaire ou XML) et des beans mais je pense que tu verras ce que c'est plus tard et son intérêt ... en plus cela est assez astucieux puisque cette méthode d'accès aux données (variables) représente en soit un Design Pattern (tu verras ce que c'est plus tard) et notamment une méthode pour faire des DP de type 'Dynamic Linkage' (souvent utilisé pour faire des plugins) ou 'Virtual Proxy' ... ce premier étant une variante plus complexe que le DP utilisé par les beans et la sérialisation ...

Par conséquent, et c'est un petit conseil qui t'évitera de gros bugs et surtout d'avoir du 'mauvais code Java' que les autres auront plus de mal à comprendre : utilise toujours des accesseurs pour avoir accès à tes données de classe, c'est beaucoup plus astucieux et beaucoup plus compréhensible ... évidemment si tu fais appel à une variable d'une classe qui sera appellé 100 000 fois par seconde, je te conseille de mettre ta variable en public et d'accéder directement à elle, mais cela représente un cas sur un million, par exemple si tu fais un jeu et que tu appels ta classe traingle 100 000 fois/sec ... sinon cela pourra nuire à tes programmes et constituer des bugs plus tard surtout si tu changes ton code et que tu veux assurer une sécurité sur ta variable, du coup tu seras obligé de changer tout ton code variables->méthode ...

@+

[Responsable www.neogamedev.com]
0
Rejoignez-nous