Besion d'aide pour création d'une semi interface graphique.

Résolu/Fermé
Lokez Messages postés 13 Date d'inscription vendredi 31 octobre 2014 Statut Membre Dernière intervention 3 décembre 2014 - Modifié par Lokez le 30/11/2014 à 00:21
Lokez Messages postés 13 Date d'inscription vendredi 31 octobre 2014 Statut Membre Dernière intervention 3 décembre 2014 - 30 nov. 2014 à 02:46
Bonjour,

Je n'ai pas encore apprit à faire d'interface graphique mais je dois faire un programme qui est utilisable uniquement avec les .class. Donc concrètement j'ai fais mes différentes classe et je compte sur une class supplémentaires qui affichera un menu dans le terminal et permettra d'utiliser toutes les méthodes des autres classe avec des saisies clavier.

Ce que je n'arrive pas à faire est quand je crée des instances des classes faire en sorte que le nom de chaque instance soit différent.
Est t'il possible de faire dépendre le nom d'une instance en fonction de paramètre?
En gros pouvoir faire quelque chose du style :
String chaineX= ..

où le X est une variable définit au dessus donc concrètement dans mon cas ça sera soit un compteur soit autre chose que je choisirais en fonction de ce qui aura été saisie au clavier par l'utilisateur.

Merci de aide !

A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
30 nov. 2014 à 00:43
Bonjour,

"je dois faire un programme qui est utilisable uniquement avec les .class"
Tout ce qui est fait en Java se base sur des .class ! Y compris celles que tu ne créées pas toi même, par exemple String, System, etc. sont compilées en .class et il est évident que tu vas t'en servir... du coup où est la limite de ce dont tu peux te servir et ce dont tu ne peux pas ?

"Est t'il possible de faire dépendre le nom d'une instance en fonction de paramètre?"
Une instance n'as pas de nom, c'est une suite d'octets à l'intérieur de la JVM à laquelle tu n'y as pas accès. La seule chose que tu peux manipuler ce sont des références vers ces instances, que tu stockes dans des variables. Ce sont ces variables qui ont un nom, mais il n'y a priori aucun intérêt à ce que les variables changent de nom en fonction de la valeur du paramètre, il faut distinguer le code de son exécution.

Éventuellement, si tu as besoin d'un grand nombre d'objets à manipuler tu peux utiliser des structures de données (array, list, map, ou set).

Essayes de préciser un peu plus ta question, peut-être avec du code à l'appui, parce que le vocabulaire que tu utilises dans tes explications n'étant pas le bon, je n'arrive pas à comprendre ce que tu veux faire en réalité...
0
Lokez Messages postés 13 Date d'inscription vendredi 31 octobre 2014 Statut Membre Dernière intervention 3 décembre 2014 1
Modifié par Lokez le 30/11/2014 à 02:10
En gros dans le cadre de mes cours jusqu'à maintenant pour tout les programmes que j'ai écris pour utiliser les fonctionnalités auquel devait répondre le programme il fallait à chaque fois modifié la méthode main de la classe Test.

Là j'essaie de faire en sorte que les utilisateurs à qui est destiné le programme puisse l'utiliser sans rien avoir à modifié dans la classe qui contient le main.

(en fait quand je disais utilisable uniquement avec les .class c'était pour moi pas une limite mais une contrainte car en gros avant il fallait que j'écrive dans les .java pour me servir des fonctionnalités du programme destinées à l'utilisateur, là j'essaie de faire en sorte que ce ne soit pas le cas)

Donc par exemple si j'ai une classe voiture avec comme variable d'instance modèle et couleur tout deux de type String je veux que à l'exécution de ma classe qui contiendra la méthode main ça affiche dans le terminal :

"Pour créer une voiture saisissez 1
Pour changer la couleur d'une voiture saisissez 2 "
etc.

Donc quand l'utilisateur tape 1 je fais en sorte que ça lui demande choisissez un modèle , choisissez une couleur, ça stock le tout afin de les utiliser dans le constructeur.
Mais pour créer la voiture, dans mon code j'ai besoin d'une ligne qui fait :

Voiture voiture1=new Voiture(modèle,couleur)

Donc mon problème est que à chaque fois que je devrais créer une instance ça va utiliser la même étiquette (ce que tu as appelé référence je pense) "voiture1" donc je vais concrètement perdre l'accès aux autres.
J'aimerais que à chaque fois que l'utilisateur utilise le constructeur à partir des saisies clavier qu'il fera dans le terminal grâce à ma classe main, ça choisisse une référence différente pour l'objet qui sera créé.

Sinon j'ai pensé à d'autres solutions pour éviter d'être bloqué comme je le suis, je peux je pense par exemple créer un tableau plein d'instance de la classe qui m'intéresse (ici voiture, donc ça se fera au seins d'une nouvelle classe) et parcourir ce tableau comme ça je n'aurais pas à mettre de nom pour les références mais juste à faire tableau[k]= new Voiture(modèle couleur).

Merci de ton aide, j'espère que maintenant c'est plus clair et que tu as compris ce que je voulais dire^^.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
30 nov. 2014 à 02:30
ça va utiliser la même étiquette (ce que tu as appelé référence je pense) "voiture1"
En fait non, voiture1 serait une variable ici. La référence c'est la valeur (un entier) qui est dans cette variable et qui est associée à un objet en mémoire. Mais l'objet n'est pas directement stocké dans la variable, ce qui permet notamment d'avoir plusieurs variables qui référencent le même objet.

Ceci étant dit, vu ce que tu veux faire il faut s'orienter vers les structures de données, alors il y a différentes manières de faire, je te propose ici d'utiliser une map, c'est un système de clé/valeur.
La valeur ce sera l'objet que tu vas créer (une Voiture) et la clé le nom de l'objet que tu vas lui associer (un String). Tu aurais donc quelque chose comme ça.

Map<String, Voiture> collection = new TreeMap<String, Voiture>();

String nom = "Choupette";
Voiture voiture = new Voiture("Coccinelle", "Crème");

collection.put(nom, voiture);

Voir java.util.Map<K,V> pour le détail des méthodes.

Tu peux recommencer les opérations d'ajout autant de fois que nécessaire en réutilisant les variables nom et voiture, ça n'affectera pas les couples clé/valeur déjà insérés dans la map.
0
Lokez Messages postés 13 Date d'inscription vendredi 31 octobre 2014 Statut Membre Dernière intervention 3 décembre 2014 1
30 nov. 2014 à 02:46
D'accord, merci beaucoup :).
0