IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Utilisation d'un objet dans différentes classes


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Points : 35
    Points
    35
    Par défaut Utilisation d'un objet dans différentes classes
    Bonjour,

    J'ai pour projet de faire un 2048 et j'ai découpé celui ci en 2 packages, un (celui par défaut) contenant une classe gérant les déplacements appelée Jeu et un autre package nommé interaction contenant deux classes appelées Interaction et Main. J'importe mon package Interaction dans ma classe Jeu et j'importe bien mon package Jeu dans mes classes Main et Interaction (contenues dans le package interaction).

    Dans ma classe Jeu je gère tous les déplacements et dans Interaction l'initialisation du plateau (en ligne de commandes), l'affichage, savoir si le joueur a gagné ou perdu etc ... J'aimerai donc dans mon Main créer un objet jeu de type Jeu et initialiser celui ci. Cependant, lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Jeu jeu = new Jeu();
    jeu.init();
    Eclipse m'indique "The method init() is undefined for the type Jeu".

    J'aimerai donc savoir comment je peux créer un objet de type Jeu et utiliser dessus les méthodes contenues dans ma classe Interaction.

    Débutant en POO, toutes mes variables et toutes mes classes sont de types public.

    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Points : 93
    Points
    93
    Par défaut
    De ce que je comprends, tu n'as pas défini de méthode init() dans ta classe Jeu. Si c'est la classe Interaction qui est en charge de l'initialisation du jeu, pourquoi ne pas créer dans ton main une instance d'Interaction et appeler init() dessus?

    mais tu peux également avoir une variable de type Interaction au sein de ta classe Jeu et définir une méthode init() dans ta classe Jeu qui appelle les méthodes que te fournit ta classe Interaction.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Points : 35
    Points
    35
    Par défaut
    En effet la méthode qui est censée initialiser le plateau se trouve dans ma classe Interaction et non dans ma classe Jeu. Je peux donc bien créer un objet de type Interaction mais comment ensuite à celui ci je pourrais appliquer les méthodes de déplacement qui sont elles situées dans ma classe Jeu ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Points : 93
    Points
    93
    Par défaut
    comment ensuite à celui ci je pourrais appliquer les méthodes de déplacement qui sont elles situées dans ma classe Jeu ?
    A mon sens, tu ne dois pas appliquer à un objet Interaction les méthodes de ta classe Jeu. Ou alors, cela veut dire qu'il n'y a qu'un seul objet "fourre-tout" qui veut tout faire?

    Je pense que tu devrais te poser la question de la découpe en classe. Par exemple, si ton jeu est constitué d'un plateau et d'objets qui se déplacent, tu peux avoir une classe Jeu qui possèdent des variables de classe de type Plateau et une liste de type "Objet qui se déplace".
    Dans un main, tu crées une instance de Jeu et dans l'init() de la classe Jeu, tu peux appeler par exemple la méthode init() de ton objet Plateau. Car initialiser un jeu, c'est initialiser le plateau mais pourquoi pas effectuer d'autres actions.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Points : 35
    Points
    35
    Par défaut
    J'ai du mal avec l'idée d'utiliser un objet Plateau (qui est en fait un objet Interaction utilisant la méthode init() n'est-ce pas ?) et un objet jeu qui permettra lui de faire les déplacements. C'est la première fois que j'ai un projet aussi complexe et que je dois bien découper en classe et en packages. Le fait d'utiliser deux objets est donc pour moi très très flou.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 51
    Points : 93
    Points
    93
    Par défaut
    L'un des objectifs de la conception Objet est justement de découper la complexité en isolant les tâches et les responsabilités de chaque objet. Le terme "Plateau" n'est peut-être pas approprié pour ton exemple, c'est à toi de voir mais est-il normal que ce soit le même objet qui gère le nombre de cases, les règles de déplacement, l'affichage et les actions opérateur? Il est probable que non. Plus le projet est complexe, plus tu auras besoin de découper en sous-partie. Ta classe Jeu peut alors se contenter d'appeler le code des sous-parties via des variables.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    D'un point de vue théorique, on pourrait résumé ton jeu à 2 choses :
    - la partie
    - le joueur

    La partie contiendrait la liste des joueurs, les règles du jeu, les méthodes liées au jeu proprement dit.
    Le joueur stockerais ses données propres et d'après ce que tu énonces, la liste de ses déplacements. A ce niveau, j'ajouterais "valides".

    Du coup, lorsqu'un joueur fait une action, il envoie à "Partie" les informations de cette action (en passant par lui même en paramètre), la partie teste la validité de ses paramètres et s'ils sont correctes, les enregistre dans l'historique du joueur et applique à la partie.

    Reste à déterminer comment tu gères la partie graphique représentant la partie sachant qu'avec plusieurs joueur, cette représentation peut changer sans que le joueur n'ait fait quoi que ce soit

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Points : 35
    Points
    35
    Par défaut
    Merci à tous les deux de votre aide. Je prends notes de vos idées de découpage de code afin de le simplifier mais je n'appliquerai malheureusement pas ces conseils par manque de temps, devant finir mon projet aujourd'hui car je pars demain. J'étudierai la correction de mon prof pour voir comment lui a découpé son code (il l'aura forcément mieux découpé, en classes et en packages) et essaierai alors de comprendre comment mettre vos conseils en place à ce moment là.

    Merci encore pour votre aide en tout cas

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/01/2015, 17h22
  2. utilisation d'objet dans une class
    Par turican2 dans le forum Langage
    Réponses: 4
    Dernier message: 19/02/2009, 16h43
  3. Utiliser un argument du main dans différentes classes
    Par SeaShell dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 21/04/2008, 00h53
  4. Réponses: 4
    Dernier message: 15/11/2005, 11h49
  5. [debutant] Utilisation de l'operateur = dans une classe
    Par Battosaiii dans le forum Débuter
    Réponses: 8
    Dernier message: 11/11/2005, 00h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo