Programme java

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: thedream01

Bonsoir!
Voila, j'ai un petit souci avec mon TP d'info:

class Banque {
// Declaration des champs.
private String nom_;
private HashMap clients_ = new HashMap();


// Constructeur.
public Banque(String Nom){
nom_ = Nom;
clients_=new HashMap();
}


// Ajouter un client à la banque 'nom_'.
public void nouveauClient(Client a){
clients_.put(a.nom,a);
}
........}

j'ai un message Warning: unchecked call to put(K,V) as a member of the raw type java.util.HashMap.
Je ne comprends pas!



Posted by: cedrick21

modifie l'instanciation de ta HashMap en prenant en compte les types que tu lui donne, ici une chaine de caractère et un objet

HashMap <String, Object> client_ = new HashMap <String, Object> ();



Posted by: mathk

Pourquoi un client est un String?
C'est generalement une tres mauvaise idee. Il est beaucoupplus interessant d'avoir une classe Client.

Aussi avoir des variables d'instances private ce n'est pas une bonne chose:
Ceci empeche souvant la reutilisation de la classes.

Il est vrai que les gens conseil d'utilise des "access modifier" le plus restrictif possible mais ils ont bien trops souvent mal compris les concepts objets.

Voici quelques symptomes non exaustifs que l'on peut observer lorsque les developpeurs utlise "private"

- Duplication de code (les gens dans les sous classes duplique le code car il ne peuvent pas le modifier)
- Duplication de la class (La encore si l'on veut modifier une method dans la sous class et que celle de la superclass utilise un varaible d'instance priavte on ne peut pas le faire. La les consequence sont vraiment terrible car cela modifie aussi le lcient)

Donc il est beaucoup plus judiceux d'utiliser protected.

Alors pourquoi private.

Private doit etre utilise vriament lorsque l'on veux communiquer avec l'exterieur, a des niveaux d'abstraction plus eleve.
Par exemple si tu veut que la class offre des services a des clients qui ne sont pas impliques dans le developpement de ton application.
Des clients qui n'ont pas besoins de connaitre les details internes de l'application.











-