Pourquoi private et pas static

profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 10 août 2011 à 18:55
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 - 12 août 2011 à 16:23
boujour

toujours, en utilisant eclipse , je fait mes fenetres avec windowBuilder
alors lorsque j'appele une variable il me genere une erreur :
il me propose que la variable soit default (pas private ) et static pour l'utiliser libremement et facilement je fais ok et ca marche
alors je me demande pourquoi la plus part des codes proffessionels que je vois dans le net utilise tjs des variables privés et cree les getters et setters pour les manipulé

j'aimerai bien que vous m'expliqué bien pourquoi utilisé ces private et me convaincre de l'utiliser et citer l'inconvenient de default static

detaillez moi s'il vous plait
merci d'avance

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 août 2011 à 23:30
Bonjour,

Tu peux utiliser static parfois et que ce choix soit justifié et judicieux. Mais n'oubli pas que tu utilises un langage de programmation objet et qu'un des principes de l'objet est l'encapsulation.

C'est un principe qui consiste à spéarer l'aspect extérieur de ton objet de ses données, c'est pourquoi tu créé des successeurs sur ton objet et que tu ne mets pas en public la ttalité des attributs.

Donne nous ton code, je te dirai si l'utilisation de static est judicieuse dans ton cas.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
11 août 2011 à 10:24
Salut ;o)

En pure POO ;o) static est à proscrire ;o) ... évidement cela a quelques utilités quand même ;o) .. Son usage est essentielement réservé aux constantes.

ensuite private comme son nom l indique ;o) est utilisé pour rendre les attributs ou méthodes privé ;o) : les rendants inaccessible depuis l'extérieur c'est pour cela que les get/setter public sont créés... Cela permet à l'objet de toujour maitriser ses valeurs, un comportement interne pouvant etre mis en place dans le cas du changement d un attribut ;o) ...


GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
11 août 2011 à 10:48
Bonjour,

Suite au message qu'a dépose GodConan, j'ai relu mon message et je me suis rendu compte que je n'étais pas très clair sur le principe d'encapsulation, je te donne une définition que j'ai posté sur le dictionnaire :

L'encapsulation est un concept objet qui consiste à séparer l'aspect externe d'un objet, sa partie visible, de son aspect interne, c'est-à-dire le fonctionnement de ses opérations et la manipulation de ses données.

La partie visible d'un objet est appelée interface. Seules les propriétés déclarées publiques de l'objet peuvent être sollicitées par un autre objet du système.

Par défaut, les attributs de l'objet (les données) sont privés et les opérations sont publiques. Ceci implique que les données d'un objet ne peuvent être manipulées directement par les autres objets : ceux-ci doivent faire appel aux opérations de la classe pour atteindre les données. Ce mécanisme d'interaction entre objets est la communication par messages.
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
11 août 2011 à 12:18
mais quand une application est fini quelle est la difference entre qlqun qui utilisé ce concept et un autre puisque tout aboutit au meme resultat
la difference juste ds le code
meme si un autre objet peut acceder directement aux donnees de l'autre quel est le danger => ca facilite la communication et la mise a jour et mois de ligne de code
si vous pouvez me convaicre avec un exemple concret ou l'utilisation de default et static et final aussi a un mal effet sur le deroulement du programme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
11 août 2011 à 12:55
l organisation toujours l organisation ... ;o) ce qui coute le plus chere en prog c est la maintenance ... Et elle dépend entierement du code originale ;o)


GodConan ;o)
0
shaiulud Messages postés 404 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 15 juillet 2014 22
12 août 2011 à 16:23
pour l'usage de static, tu dois te poser la question si cette variable doit être unique dans ton application ?
si c'est le cas, tu peux le mettre static.


Quelques exemples :

les loggeurs 1 par classe métier (service/daos).
//log4j par ex
private static final Log LOG = LogFactory.getLog(MaClass.class);

Pour les singletons :

public class MonSingleton() {
private static MonSingleton instance = new MonSingleton();
// constructeur privé
private MonSingleton (){}
public static MonSingleton getInstance();
//... le reste des tes besoins après

Pour les Caches :
private static Map monCache new HashMap();
> en poussant la réflexion, un loggeur non static génère autant d'instance qu'il y a de classe instanciée, ce qui est dommageable pour ton HeapSpace.

Les outils d'audit détectent les anomalies et peuvent t'aider à mieux coder.
Je te conseille PMD (http://pmd.sourceforge.net/eclipse/) qui a pris pour bases les préconisation de Joshua BLOCH qui a écrit Effective Java (Java Efficace en version traduite)
0
Rejoignez-nous