Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2535 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] [Conception basique] Comment vous y prendriez-vous ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] [Conception basique] Comment vous y prendriez-vous ?

n°521733
_john_doe_
Posté le 23-09-2003 à 21:32:57  profilanswer
 

Bonjour :)
 
Je dois programmer un Puissance4, et j'aimerais que quelqu'un me donne son avis sur la conception objet que j'ai choisie :  
 
J'ai une classe Interface, qui extends un JPanel et qui lui ajoute les composants graphiques nécessaires (cases pour mettre les jetons).
 
Ensuite, une classe Partie qui s'occupe de la gestion "logique" de la partie.
 
Enfin, une classe principale Puissance4 qui extends JFrame, qui a pour attributs une instance des 2 classes précédentes, et qui contient le main().
 
Est-ce que cette conception objet vous paraît correcte ?
 
Merci :)
 
 
PS : Le problème c'est que je ne sais pas comment "transmettre" les évènements comme le clic d'un joueur sur une case à la classe Puissance4 (puisque c'est la classe Interface qui le récupère).
 
 
 

mood
Publicité
Posté le 23-09-2003 à 21:32:57  profilanswer
 

n°521775
the real m​oins moins
Posté le 23-09-2003 à 22:26:04  profilanswer
 

c'est pas tres poussé mais c'est un bon debut.
à priori , tu vas devoir passer une reference de Partie à Interface (à propos, trouve un autre nom qu'Interface pour une classe concrete;)), et c'est à cette reference que tu transmettras les evenements... attention, "Partie", ne devrait pas avoir a faire a des "clicks", mais par exemple à un deplacement de pion.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522019
_john_doe_
Posté le 24-09-2003 à 11:42:06  profilanswer
 

up

n°522024
benou
Posté le 24-09-2003 à 11:44:00  profilanswer
 


ben quoi ? ca et va pas ce qu'a dit moins moins ?


---------------
ma vie, mon oeuvre - HomePlayer
n°522081
_john_doe_
Posté le 24-09-2003 à 12:40:30  profilanswer
 

Si si mais j'aimerais avoir plusieurs avis :)

n°522092
benou
Posté le 24-09-2003 à 12:56:11  profilanswer
 

_John_Doe_ a écrit :

Si si mais j'aimerais avoir plusieurs avis :)


même avis que moinsmoins. [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°522095
_john_doe_
Posté le 24-09-2003 à 13:01:19  profilanswer
 

D'accord d'accord, merci :)
 
(On m'a toujours dit qu'il n'y a pas qu'une seule façon de "modéliser" un pb en prog objet, c'est pour ça que voulais plusieurs avis)

n°522098
the real m​oins moins
Posté le 24-09-2003 à 13:03:44  profilanswer
 

_John_Doe_ a écrit :

D'accord d'accord, merci :)
 
(On m'a toujours dit qu'il n'y a pas qu'une seule façon de "modéliser" un pb en prog objet, c'est pour ça que voulais plusieurs avis)

oui enfin y'a qd meme des bases communes.
cela dit le fait de passer une ref de Partie à ta GUI est une solution simple qui ne serait pas la meilleure pour une appli plus complexe.
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522099
the real m​oins moins
Posté le 24-09-2003 à 13:05:01  profilanswer
 

[:core 666] en fait je cherche une idée plus clean, parce que justement ça m'emmerde toujours de passer des references d'objets métier à des classes de gui, mais je vois pas là :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522103
BifaceMcLe​OD
The HighGlandeur
Posté le 24-09-2003 à 13:08:19  profilanswer
 

Il faut un médiateur, qui connaissent les 2, et qui fasse la jonction. En design pattenrs, on appelle ça un "Contrôleur", qui fait l'interface entre le "Modèle" et la "Vue" (du fameux modèle MVC, donc).

mood
Publicité
Posté le 24-09-2003 à 13:08:19  profilanswer
 

n°522106
the real m​oins moins
Posté le 24-09-2003 à 13:09:30  profilanswer
 

yes!
 
mais donc faut passer une ref du mediateur a la vue...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522151
BifaceMcLe​OD
The HighGlandeur
Posté le 24-09-2003 à 13:59:24  profilanswer
 

Non, c'est le contrôleur qui a entièrement la main. C'est lui qui invoque les méthodes du modèle pour qu'il change, et c'est encore lui qui demande aux vues de se rafraîchir.
 
edit> Le contrôleur doit également "écouter" les modifications de modèle venant d'une des vues (c'est la raison d'être des "Listeners" en Java). Il peut alors être au courant des modifications de données, demander au modèle de changer tel partie de son état, et demander aux autres vues de se rafraîchir.


Message édité par BifaceMcLeOD le 24-09-2003 à 14:01:22
n°522221
the real m​oins moins
Posté le 24-09-2003 à 15:04:51  profilanswer
 

ui voila, donc le controller A ou EST un listener de la vue.
(ce qui ne change concretement pas gd chose au fait que la vue ait une reference vers le controlleur, a part que c'est un peu plus abstrait :??:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522224
the real m​oins moins
Posté le 24-09-2003 à 15:05:20  profilanswer
 

ça me donne envie de faire un puissance4 :pt1cable:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522225
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 24-09-2003 à 15:06:53  profilanswer
 

the real moins moins a écrit :

ça me donne envie de faire un puissance4 :pt1cable:  


Fais-le en SWT, alors :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°522234
the real m​oins moins
Posté le 24-09-2003 à 15:13:58  profilanswer
 

Taiche a écrit :


Fais-le en SWT, alors :o

:jap:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522353
_john_doe_
Posté le 24-09-2003 à 16:44:57  profilanswer
 

Taiche a écrit :


Fais-le en SWT, alors :o


 
Qu'est-ce que c'est ?

n°522359
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 24-09-2003 à 16:52:44  profilanswer
 

_John_Doe_ a écrit :


Qu'est-ce que c'est ?


Une API d'interface graphique qui a bien plus de couilles que Swing ou AWT (cette dernière remarque était destinée à faire chier benou [:ddr555]). http://www.eclipse.org/swt


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°522360
the real m​oins moins
Posté le 24-09-2003 à 16:53:24  profilanswer
 

Taiche a écrit :


Une API d'interface graphique qui a bien plus de couilles que Swing ou AWT (cette dernière remarque était destinée à faire chier benou [:ddr555]). http://www.eclipse.org/swt

en emme temps t'as quand meme un idea qu'est en swing et 10x plus rapide qu'un eclipse :whistle:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522361
benou
Posté le 24-09-2003 à 16:55:00  profilanswer
 

Taiche a écrit :


(cette dernière remarque était destinée à faire chier benou [:ddr555]).


mais je m'en fous moi [:dawa]


---------------
ma vie, mon oeuvre - HomePlayer
n°522362
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 24-09-2003 à 16:57:55  profilanswer
 

the real moins moins a écrit :

en emme temps t'as quand meme un idea qu'est en swing et 10x plus rapide qu'un eclipse :whistle:


:o
Franchement, sur 2 applis équivalentes l'une en swing et l'ôt en SWT, y a pas photo, j'trouve SWT bien plus réactif (normal, en même temps) [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°522370
_john_doe_
Posté le 24-09-2003 à 17:11:19  profilanswer
 

Une question à propos du puissance4 :
 
Quand la classe Vue (que j'appelais Interface au début... humhum...) détecte un clic, comment je le transmets à la classe principale Puissance4 ?

n°522378
benou
Posté le 24-09-2003 à 17:16:18  profilanswer
 

_John_Doe_ a écrit :

Une question à propos du puissance4 :
 
Quand la classe Vue (que j'appelais Interface au début... humhum...) détecte un clic, comment je le transmets à la classe principale Puissance4 ?


ben moi je dirais que la classe Puissance4 elle s'en fout qu'il y a eu un clic. Elle ce qui l'intéresserait plutot ce serait "le joueur courant a jouer dans la colone 3" par exemple.
 
C'est l'utilité du Controleur : il fait le pont entre l'interface graphique et la logique applicative.


---------------
ma vie, mon oeuvre - HomePlayer
n°522454
_john_doe_
Posté le 24-09-2003 à 18:21:32  profilanswer
 

benou a écrit :


ben moi je dirais que la classe Puissance4 elle s'en fout qu'il y a eu un clic. Elle ce qui l'intéresserait plutot ce serait "le joueur courant a jouer dans la colone 3" par exemple.
 
C'est l'utilité du Controleur : il fait le pont entre l'interface graphique et la logique applicative.


 
Alors c'est le contrôleur qui donne successivement la main aux joueurs, qui récupère la colonne dans laquelle ils jouent, et qui transmet ce numéro de colonne à l'objet Vue ?
 
Ca me paraît pas mal ça :)

n°522460
the real m​oins moins
Posté le 24-09-2003 à 18:41:41  profilanswer
 

_John_Doe_ a écrit :


 
Alors c'est le contrôleur qui donne successivement la main aux joueurs, qui récupère la colonne dans laquelle ils jouent, et qui transmet ce numéro de colonne à l'objet Vue ?
 
Ca me paraît pas mal ça :)

Partie


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522470
_john_doe_
Posté le 24-09-2003 à 18:53:01  profilanswer
 


 
Quelqu'un a dû éditer mon post  :o
 
Merci merci :)
 

n°522476
darklord
You're welcome
Posté le 24-09-2003 à 19:13:23  profilanswer
 

je me demande bien comment ils ont fait pour IDEA qd meme [:gratgrat]


---------------
Just because you feel good does not make you right
n°522477
the real m​oins moins
Posté le 24-09-2003 à 19:14:23  profilanswer
 

DarkLord a écrit :

je me demande bien comment ils ont fait pour IDEA qd meme [:gratgrat]

clair, c'est hallucinant :)
ils devraient ouvrir leur api, et taiche arreterait de nous casser les couilles avec son swt de merde :o


Message édité par the real moins moins le 24-09-2003 à 19:15:01

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°522711
darklord
You're welcome
Posté le 24-09-2003 à 22:17:38  profilanswer
 

the real moins moins a écrit :

clair, c'est hallucinant :)
ils devraient ouvrir leur api, et taiche arreterait de nous casser les couilles avec son swt de merde :o


 
[:rofl2]


---------------
Just because you feel good does not make you right
n°523466
_john_doe_
Posté le 25-09-2003 à 20:11:53  profilanswer
 

C'est re-moi :D
 
J'ai (encore) un petit pb : Dans ma classe Vue, je veux redéfinir la méthode PaintComponent() pour pouvoir redessiner les "cases" du plateau de jeu à chaque fois que c'est nécessaire. Le problème c'est que je ne connais pas le contenu de ces cases (vide OU pion jaune OU pion rouge) car cette information est stockée dans la classe Partie, sous forme d'un tableau à double entrées.
 
Ma question est donc : comment faire pour pouvoir mettre à jour l'affichage sans avoir à faire une copie de ce tableau dans la classe Vue (ce qui va à l'encontre du modèle MVC je pense) ?

n°523620
benou
Posté le 25-09-2003 à 23:21:44  profilanswer
 

c'est toujours le même pricipe : la vue doit demander les infos au controleur qui les demandera l'objet Logique ...


---------------
ma vie, mon oeuvre - HomePlayer
n°523753
_john_doe_
Posté le 26-09-2003 à 10:34:15  profilanswer
 

benou a écrit :

c'est toujours le même pricipe : la vue doit demander les infos au controleur qui les demandera l'objet Logique ...


 
Bon alors tant pis, j'étale mon incompétence : Comment la vue peut-elle demander les infos au contrôleur, puisque Vue est un attribut du contrôleur, et pas l'inverse ?
 
Sachant que mon contrôleur (qui est ma classe principale, avec le main() et tout le toutim) s'appelle Puissance4, est-ce qu'écrire "Puissance4.maMethode()" dans Vue est "propre" ?
 
Et une autre question : Etant donné que ces infos sont nécessaires à chaque fois que la fenêtre est redessinée, est-ce que le fait de demander ces infos au contrôleur, qui lui même les demande à l'objet Logique ne revient pas à brasser beaucoup d'air pour pas grand-chose ?

n°523775
benou
Posté le 26-09-2003 à 10:51:46  profilanswer
 

_John_Doe_ a écrit :


 
Bon alors tant pis, j'étale mon incompétence : Comment la vue peut-elle demander les infos au contrôleur, puisque Vue est un attribut du contrôleur, et pas l'inverse ?
 
Sachant que mon contrôleur (qui est ma classe principale, avec le main() et tout le toutim) s'appelle Puissance4, est-ce qu'écrire "Puissance4.maMethode()" dans Vue est "propre" ?


ben je vois rien de particulièrement choquant à ce la vue "connaisse" le controlleur et puisse dialoguer avec.
 

_John_Doe_ a écrit :

Et une autre question : Etant donné que ces infos sont nécessaires à chaque fois que la fenêtre est redessinée, est-ce que le fait de demander ces infos au contrôleur, qui lui même les demande à l'objet Logique ne revient pas à brasser beaucoup d'air pour pas grand-chose ?


dans ce cas oui : c'est juste un pont. c'est le prix à payer pour un modèle MVC propre [:spamafote].
 
Y a d'autres cas où ca a vraiment un sens : pour la gestion des évenements par exemple.  
 


---------------
ma vie, mon oeuvre - HomePlayer
n°523785
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 26-09-2003 à 10:58:05  profilanswer
 

the real moins moins a écrit :

clair, c'est hallucinant :)
ils devraient ouvrir leur api, et taiche arreterait de nous casser les couilles avec son swt de merde :o


Ouais pis au lieu de vendre leur merde de soft 700 euros, ils foutraient tout open source :o Et pis on devrait tous se mettre tout nus pour courir dans les champs et aller taper la discute avec les Bisounours :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°529210
BifaceMcLe​OD
The HighGlandeur
Posté le 02-10-2003 à 12:57:33  profilanswer
 

_John_Doe_ a écrit :


 
Bon alors tant pis, j'étale mon incompétence : Comment la vue peut-elle demander les infos au contrôleur, puisque Vue est un attribut du contrôleur, et pas l'inverse ?
 
Sachant que mon contrôleur (qui est ma classe principale, avec le main() et tout le toutim) s'appelle Puissance4, est-ce qu'écrire "Puissance4.maMethode()" dans Vue est "propre" ?
 
Et une autre question : Etant donné que ces infos sont nécessaires à chaque fois que la fenêtre est redessinée, est-ce que le fait de demander ces infos au contrôleur, qui lui même les demande à l'objet Logique ne revient pas à brasser beaucoup d'air pour pas grand-chose ?


 
La vue définit les événements qu'elle émet, et permet à des listeners de recevoir ces événements => tu définis une classe EvenementPuissance4 et une interface ListenerPuissance4 avec le prototype de la ou des des méthodes qu'une classe recevant des EvenementPuissance4 doit implémenter. La classe Vue contient un tableau de ListenerPuissance4, et possède au moins 3 méthodes "void addListener(ListenerPuissance4 listener)" (pour ajouter un nouveau listener), "void removeListener(ListenerPuissance4 listener)" (pour enlever un listener de la liste des listeners), et "void fireEvent(EvenementPuissance4 event)" (pour envoyer un événement à tous les listeners). Et évidemment, ton Controleur implémente ListenerPuissance4 et s'enregistre auprès de la ou des vues en tant que listener des événements qu'elle(s) émet(tent).
 
Ainsi, ta vue n'aura aucune connaissance particulière du contrôleur, et s'adressera uniquement à des listeners abstraits. La communication entre vues et contrôleur sera formalisée et parfaitement spécifiée par l'interface ListenerPuissance4.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] [Conception basique] Comment vous y prendriez-vous ?

 

Sujets relatifs
[Java] petit défaut sur les applets[Java][2D] Animation de points
Ecrire et lire directement un fichier en binaire... (java)Optimisation d'un code en java (JTextArea>codage>JTextArea)
[java] printf[java]resolution impression
[Java] delegation patternInteraction avec mon prog java
[linux] commication avec une appli java depuis le kernel[java]erreur lors de compilation sous Visual Studio.net
Plus de sujets relatifs à : [Java] [Conception basique] Comment vous y prendriez-vous ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR