alors pour bien faire, un article ne devrait pas avoir la vue sur d'autres article, ce serait contraire aux règle de la programmation objet. C'est au moment de créer un nouvelle article (dans le main donc, même si tu pourrais faire un articleManager par example) que tu devrais appeler une fonction créerArticle qui vérifierais le contenu de ton tableau et ne créerais l'article que si sa référence n'est pas utilisée
elle pourrait, mais il faudrait contenir la liste des article dans la classe article pour pouvoir la vérifier ou la passer dans le constructeur. Dans les deux cas, ce n'est plus un simple modèle d'objet mais ça devient un objet gérant des données.
Du coup, au lieu d'avoir
articles [1]=newArticle(1,"intitu",10,100);
on aurait
createArticle(articles, 1,"intitu",10,100)
qui vérifierais dans articles que la référence passée n'est pas déjà présente, et si non ajoute l'objet à articles. Je te laisse déduire ce qu'il faut mettre dedans.
Soit la classe Article gère le stock des articles, soit tu le fais dans le main() (qui pour le coup se trouve dans la classe Article) comme tu as commencé à le faire.
Si tu fais un tableau dans le main, alors tu créés une fonction nouvelArticle(long reference) qui parcours le tableau pour vérifier si la référence si trouve déjà. Si ce n'est pas le cas il appelle le constructeur, sinon il prévient l'utilisateur.
Si tu stock dans la classe, alors le tableau est static: il est partagé par toutes les instances de la classe. Tu créés une fonction statique articleManager() qui vérifie avant d'appeler le constructeur. Si la référence s'y trouves déjà tu renvois une référence sur un objet Article de valeur null. Dans ce cas tu peux mettre le constructeur en private pour obliger à passer par la fonction qui gère la création et l'ajour aux stocks des nouveaux Articles.
Le plus simple reste de créer un champs private static long derniereRef = 0 et de faire dans le constructeur:
public Article(String intitule,float prixHT,int quantiteEnStock) {
derniereRef++;
reference = derniereRef;
(pas besoin d'utiliser les accesseurs getXXX à l'intérieur de la classe)
c'est grosso modo ce que je t'avais proposé, un tableau qui contient toutes les références déjà utilisée, et une fonction qui permet de vérifier qu'une nouvelle référence n'est pas déjà présente.
Ici, Le throw new exception permet de faire remonter une erreur dans le cas ou tu essaye d'utiliser une référence qui existe déjà. Dans le cas ou la référence n'est pas présente, on remplace dans la liste des références l'ancienne référence utilisée par l'article, puis on modifie la référence de l'article.
Je n'en ai pas parlé mais une dernière solution est effectivement d'utiliser une structure de données qui n'autorise pas les doublons, comme un ensemble. La documentation de Set et TreeSet se trouve sur le site d'oracle.
Je raconte nawak des fois...
petit exercice en java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ctrl+space