On cherche à écrire une classe
Product représentant un produit
avec un nom, un prix et une description facultative.
-
Déclarer une classe Product contenant les
champs privés name, price et description.
Vous apporterez une attention particulière au type de price.
-
Puis essayer le code suivant dans une méthode main
de la classe Product.
Product product = new Product();
System.out.println(product.name+' '+product.price+' '+product.description);
Expliquer.
-
Créer une classe Main (dans un fichier Main.java)
et déplacer le main de la classe Product
dans la classe Main.
Quel est le problème ?
Comment peut-on le corriger ?
-
Rappeler les 4 visibilités possible en Java.
Pourquoi doit-on toujours déclarer les champs privés sous peine de mort certaine ?
-
Qu'est ce qu'un accesseur ?
Sachant qu'il n'y a aucune raison de changer les champs d'un produit
une fois celui-ci créer (au moins pour l'instant)
Quels sont les acceseurs que l'on doit mettre ici ?
-
Comment empécher un futur developpeur de modifier la valeur du champ name
(ou price, ou description) ?
Pourquoi est ce important ?
-
Ajouter un constructeur initialisant (un constructeur initialise, il ne construit pas vraiment)
le produit avec un nom (pname) et un prix (pprice) et une description (pdesc).
Pourquoi le code du main ne fonctionne plus ?
Changer celui-ci.
-
Modifier le constructeur précédent pour que les trois paramètres
s'appellent name, price et description.
Quel est le problème ?
Quel est la solution ?
-
Ecrire un autre constructeur qui prend juste un nom et un prix mais
pas de description.
-
Comment le compilateur fait-il pour savoir quel constructeur appeler ?
-
Comment faire maintenant pour que le second constructeur appel le premier ?
On aimerait pouvoir afficher les caractéristiques d'un
produit, par le code Java suivant :
Product product =...
System.out.println(product);
Java sait faire cela, à condition de mettre dans la classe
Product une méthode
public String toString()
(la définition de cette méthode est
dans la classe
java.lang.Object (RTFM !))
retournant une chaîne de caractères, qu'on construit typiquement
à partir des attributs de l'objet.
Rappel: en Java on peut faire un '+' entre une
String et
n'importe quoi, le résultat est la concatenation entre la
String et le n'importe quoi vu comme une chaîne de caractère.