Séparation interface graphique et modele

Le problème exposé dans ce sujet a été résolu.

Bonsoir tout le monde,
Dans le logiciel que je suis entrain de faire j’ai une classe "Planet" qui gère la partie algorithmique et une autre "PlanetDialog" qui doit afficher les informations de la planète qui une boîte de dialogue. Je me demande donc si pour récupérer les informations de la classe planète il vaut mieux mettre un pointeur ou une référence vers la planète dans la classe PlanetDialog ou bien mettre ces information dans des variables séparée qui seront dans la classe planetDialog.

Du coup j’hésite ,parce que dans le premier cas la partie graphique n’est plus vraiment séparée de la partie algorithmique et dans le deuxième cas on va dupliquer les informations .
Je lirai avec plaisir votre avis sur cette question.

Bonne soirée à tous :) .

+0 -0

Salut,

Je suis pas sûr de bien comprendre ton problème :

Je me demande donc si pour récupérer les informations de la classe planète il vaut mieux mettre un pointeur ou une référence vers la planète dans la classe PlanetDialog ou bien mettre ces information dans des variables séparée qui seront dans la classe planetDialog.

Si tu as besoin des informations de la classe Planet, j’ai l’impression que ça cache un problème de conception. Si tu voulais plutôt parler des informations d’une instance de la classe Planet, dans ce cas il n’y a aucun problème à en faire un membre dans PlanetDialog, les deux implémentations seront bien toujours séparées, c’est à la classe Planet d’assurer que son API utilisée par PlanetDialog ne change pas.

+1 -0

Merci pour ta réponse ,tu as bien compris la question ,cependant je trouvais bizarre de donner accès à toutes les méthode de Planet aux instances de la classe PlanetDialog ,qui doit seulement affiché trois informations.(qui sont l’accélération la vitesse et la position).Moi je pensais plus à mettre ces 3 informations dans un tableau qui serait un membre de PlanetDialog ou alors en argument d’une méthode de la classe PlanetDialog comme par exemple :

1
2
3
4
//Méthodes de la classe PlanetDialog
void PlanetDialog::modifierInfoAcceleration(int ax,int ay){} //Modifie l'accélération affichée
void PlanetDialog::modifierInfoVitesse(int vx,int vy){}
void PlanetDialog::modifierInfoPosition(int x,int y){}

Merci encore de m’avoir répondu :).

+0 -0

Merci pour ta réponse ,tu as bien compris la question ,cependant je trouvais bizarre de donner accès à toutes les méthode de Planet aux instances de la classe PlanetDialog ,qui doit seulement affiché trois informations.(qui sont l’accélération la vitesse et la position).

Le but d’une classe, c’est d’offrir une interface utilisable par le reste du code indépendamment de l’implémentation interne. Peu importe qu’un morceau de ce reste du code n’utilise qu’une petite partie de cette interface. C’est un peu comme quand tu vas au supermarché, tu n’achètes pas de tout. C’est pas pour autant qu’il serait utile d’ouvrir un magasin pour chaque client ne proposant que les produits dont ils ont besoin.

+0 -0

Tu pourrais faire comme ça, mais ça n’a aucune espèce d’intérêt. Ça reviendrait à recréer de toute pièce une partie de l’interface fournie par Planet, et dupliquer des données. Tu as autant d’utiliser directement l’interface et les données fournies par Planet. C’est moins de boulot, moins de code dupliqué pour faire essentiellement la même chose, et plus de flexibilité (si tu veux étendre PlanetDialog pour utiliser un autre truc offert par Planet, tu as juste à utiliser ce truc en question directement au lieu de te taper l’écriture d’un morceau de code supplémentaire).

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte