bonjour bonjour,
après des années de programmation structurée (aaah, le plaisir des premières années de basic il y a ... 11 ans, quand il fallait taper soi-même le code des jeux sur des bécanes sans DD, le Pascal, et la découverte du C et de ses plaisirs), j'ai enfin décidé il y a 10 jours de me mettre à la POO. et donc de me lancer dans Java.
alors bon je reprends mes premiers programmes de C, je change les algo et j'apprends les nouvelles syntaxes.
cepandant j'avoue avoir un souci récurrent, sur lequel j'ai déjà passé 3 soirées difficiles, et malgré les livres que je me suis offert et les tutos que j'ai pu lire (merci à Doudoux au passage, pour l'instant le meilleur que j'ai lu par sa clarté et sa précision) je bloque tout le temps sur le même souci.
je m'explique:
voulant apprendre la manipulation d'objet et comprendre l'encapsulation et la différenciation entre constructeur, méthodes et paramètres, j'essaie de manipuler une instanciation de classe au sein d'une autre classe.
du genre:
donc 1 classe 'classe' dont chaque objet contient pour paramètre une chaîne mot et est instancié avec l'argument String transmis par l'utilisateur dans JTF1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 classe fenêtre extends JFrame implements ActionListener { fenêtre () { // définition de la fenêtre avec 2 JTextField, dont le 2ème est setEditable(false) // écouteur sur JTF1 } evenement (ActionEvent ev) { si ev=JTF1 { mess=JTF1.getText(); classe objetmes=new classe(mess); } } private classe objetmes; private String mess; private int appel; } classe { classe (message) { mot=message; } private String mot; } class MonProgramme { main (args) { fenêtre fen=new fenêtre(); fen.setVisible(true); } }
mon souci, c'est que je voudrais dans une méthode de la classe fenêtre, récupérer ce paramètre 'mot' pour l'afficher dans JTF2. comme ce paramètre est encapsulé, impossible de l'appeler directement (ça j'ai compris). donc je cherche, comme on me le conseille dans les tutos, à faire dans la classe 'classe' une méthode publique qui renvoie l'argument String correspondant au paramètre privé 'mot'.
j'appelle cette méthode depuis une fenêtre.méthode() qui est appelée dans la méthode d'écouteur d'évènement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 classe fenêtre extends JFrame implements ActionListener { fenêtre () { // définition de la fenêtre avec 2 JTextField, dont le 2ème est setEditable(false) // écouteur sur JTF1 } evenement (ActionEvent ev) { si ev=JTF1 { mess=JTF1.getText(); classe objetmes=new classe(mess); reponse=fenêtre.choppeparamètre(); JTF2.setText(reponse); } } private String choppeparamètre () { retour=classe.donneparamètre(objmes); return retour; } private classe objetmes; private String mess, reponse, retour; private int appel; } classe { classe (message) { mot=message; } public String donneparamètre ( ....) { retour=this.mot; return retour; private String mot, retour; } class MonProgramme { main (args) { fenêtre fen=new fenêtre(); fen.setVisible(true); } }
le souci, c'est que j'obtiens ce superbe message d'erreur sur ma fenêtre.méthode quand je zappe dans l'appel de classe.donneargument la référence à l'objet en cours: non-static method cannot machin static method etc ...
normal
mais je n'arrive pas à trouver comment transmettre à cette méthode "eeeh mon gars c'est cet objet-là dont je veux pour retour son paramètre 'mot' !" ..
quand je lui mets Objmes en argument de définition : donneparamètre(Objmes), il ne le reconnaît pas (Objmes.Objmes not resolved). Tous mes autres essais et bricolages se sont révélés infructueux.
c'est un pur problème de Syntaxe sans doute, mais je ne trouve pas malgré de nombreuses heures de recherche.
alors certes c'est un algorithme un peu lourd pour un traitement aussi léger, mais cela me permettrait de comprendre les interactions entre les classes, et de complêter certains programmes en cours qui sont, disons un peu plus lourds (avec plusieurs classes, et plusieurs paramètres encapsulés à récupérer).
merci à vous si vous savez (très certainement) et si vous me renseignez.
et bien entendu tout conseil intercurrent constructif sur la structure algorithmique que vous voudriez me donner serait le bienvenu.
Partager