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 de l'héritage dans mon projet


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut Utilisation de l'héritage dans mon projet
    Salut !

    Alors je dois programmer deux jeux de cartes : la réussite et la bataille. Je ne fais pas d'interface graphique.
    Dans l'énoncé du projet il est dit qu'il faut utiliser de l'héritage mais j'ai fais sans car je ne vois pas où ça pourrait être utile...

    J'utilise un type d'objet Carte, un type JeuCarte (52 cartes présentes), PileDeCarte (présents sur le plateau de jeu, contient des cartes aléatoires, 10 piles pour la réussite par exemple).

    J'aurais bien fais un héritage entre JeuCarte et PileDeCarte, vu que la pile c'est en fait un jeu de carte "réduit", mais je doute que ça soit vraiment utile au final...

    Auriez-vous des idées ?

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    T'es sur que l'héritage, tu n'aurais plutot du le mettre entre

    Bataille, Réussite et un classe AbstractGame


    La classe abstraite stockerait le nom du joueur, son score, le jeu de carte utilisé, les piles utilisées

    Bataille aurait 2 piles, Réussite 10, et chacune des règles différentes pour calculer le score.

  3. #3
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Salut,
    Citation Envoyé par Raikyn Voir le message
    Dans l'énoncé du projet il est dit qu'il faut utiliser de l'héritage mais j'ai fais sans car je ne vois pas où ça pourrait être utile...
    Tu peux nous balancer cet énoncé au complet? Peut être que l'on saura te dire où est ce qu'il pouvait bien intervenir...
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 179
    Par défaut
    Citation Envoyé par Raikyn Voir le message
    J'utilise un type d'objet Carte
    Tu as fait un enum pour ca normalement non ?
    Comme ca ton jeu de carte c'est juste une liste de l'enum.

    Pour moi ton Type jeuDeCarte n'existe pas. C'est juste une liste.
    Je rejoins tchize_ pour l'AbstractGame (qui pourrais avoir une méthode getJeuDeCarte abstraite défini par les différents jeux concret).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Par défaut
    Ok merci pour les conseils. Je vais me pencher sur cette classe AbstractGame.
    Et non je n'ai pas fais d'enum, je vais modifier ça également.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Angelsafrania Voir le message
    Tu as fait un enum pour ca normalement non ?
    Comme ca ton jeu de carte c'est juste une liste de l'enum.
    Salut,

    on peut définir les couleurs sous forme d'enum (coeur, carreau, trèfle, pique, atout? mais on pourrait envisager de vouloir utiliser des couleurs comme bâton, épée, denier, coupe: du coup, il faudrait prévoir une deuxième enum pour indiquer le type de couleur !). Les valeurs éventuellement également genre (AS, 2, ..., valet, cavalier, ...).

    Mais ça me semble pas très pratique de définir les cartes en elle même sous forme d'enum. 78 valeurs pour un jeu de tarot !
    Pour la bataille, c'est 52 cartes si je me souviens bien.
    52 valeurs d'énum (!) pour un jeux de cartes standard.
    Et si on veut ajouter les jockers, on ajoute une valeur énumérée jocker1 et jocker2 ?
    Ca me semble plus simple de faire une classe simple, avec en attribut la couleur, et la valeur. Et éventuellement, on peut ajouter un index de jeu (si on veut pouvoir programmer des types de jeu qui se jouent avec plusieurs jeux, genre le 21)

    Jeu de cartes, peut se modéliser par une liste en effet, mais faire une classe permet d'éviter de faire des méthodes statiques pour faire le mélange, ou d'autres manipulations.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 179
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    on peut définir les couleurs sous forme d'enum (coeur, carreau, trèfle, pique, atout? mais on pourrait envisager de vouloir utiliser des couleurs comme bâton, épée, denier, coupe: du coup, il faudrait prévoir une deuxième enum pour indiquer le type de couleur !). Les valeurs éventuellement également genre (AS, 2, ..., valet, cavalier, ...).

    Mais ça me semble pas très pratique de définir les cartes en elle même sous forme d'enum. 78 valeurs pour un jeu de tarot !
    Pour la bataille, c'est 52 cartes si je me souviens bien.
    52 valeurs d'énum (!) pour un jeux de cartes standard.
    Et si on veut ajouter les jockers, on ajoute une valeur énumérée jocker1 et jocker2 ?
    Ca me semble plus simple de faire une classe simple, avec en attribut la couleur, et la valeur. Et éventuellement, on peut ajouter un index de jeu (si on veut pouvoir programmer des types de jeu qui se jouent avec plusieurs jeux, genre le 21)

    Jeu de cartes, peut se modéliser par une liste en effet, mais faire une classe permet d'éviter de faire des méthodes statiques pour faire le mélange, ou d'autres manipulations.
    Ca ne me choque pas tant que ca d'avoir 72 valeurs d'énum.
    L'énum permet d'évité d'avoir un peut n'importe quoi, mais certe tu doit changé en dure à chaque fois que tu veux faire un nouveau jeu (le Uno par exemple).
    C'est un choix et j'avoue que ca dépend vraiment de l'optique dans la quelle on développe la chose (des jeux avec un paquet de carte classique de 52 cartes ou 72). Donc pour moi si c'est pour jouer à la belotte, tarot, bataille, poker, réussite, barbu .... c'est toujours la même chose un jeu de carte 72 c'est bon (avec les joker si tu veux).
    La meilleur solution serais peut être une interface avec des enum qui l'implemente... (a mis chemin :p )
    Mais l'enum pour moi devrait être présente, un jour ou l'autre tu vas définir les cartes pourquoi le pas le mettre dans un format plus strict.

    Le coup des enum pour les couleurs (carreau, coeur, pique, trefle) et pour les valeurs facial (1...10, V, D, R , Joker), c'est comme ca que j'aurais fait aussi.
    Pour un jeu de tarot tu ajoute aux couleurs les atous, et puis le cavalier, 11..21 aux valeurs.

    Après faire un shuffle sur une liste c'est juste un Collections.shuffle.

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Angelsafrania Voir le message
    Ca ne me choque pas tant que ca d'avoir 72 valeurs d'énum.
    L'énum permet d'évité d'avoir un peut n'importe quoi, mais certe tu doit changé en dure à chaque fois que tu veux faire un nouveau jeu (le Uno par exemple).
    C'est un choix et j'avoue que ca dépend vraiment de l'optique dans la quelle on développe la chose (des jeux avec un paquet de carte classique de 52 cartes ou 72). Donc pour moi si c'est pour jouer à la belotte, tarot, bataille, poker, réussite, barbu .... c'est toujours la même chose un jeu de carte 72 c'est bon (avec les joker si tu veux).
    La meilleur solution serais peut être une interface avec des enum qui l'implemente... (a mis chemin :p )
    Mais l'enum pour moi devrait être présente, un jour ou l'autre tu vas définir les cartes pourquoi le pas le mettre dans un format plus strict.
    Et bien moi ça me choque, parce que si on veut pouvoir savoir entre 2 cartes laquelle bat l'autre (dans le cas de la bataille), ou laquelle peut être placée sur l'autre (genre la dame de coeur sur le roi de trèfle) lors de la réussite, on va devoir faire des bidouilles sur l'ordinal() avec des modulos !!! bonjour pour l'aspect sémantique.
    Ou alors on ajoute des méthodes dédiées dans l'enum, mais dans ce cas, autant le faire dans une classe...
    En plus, pour pouvoir contrôler la liste de cartes possibles pour un type de jeux, il faudra encore se taper la frappe de 50 valeurs parmi les 78 (qui sont déjà assez lourde en elle même à saisie, et à relire )


    Après faire un shuffle sur une liste c'est juste un Collections.shuffle.
    Je citais le mélange comme exemple, mais il peut y avoir d'autres manipulations sur un jeu de carte (coupe, distribution, que sais je)... à un moment donné un LOO c'est fait pour faire des classes. Faire toujours ses programmes uniquement à base de List et de Map, avec que des méthodes statiques, c'est à un peu limite pour un exercice dont le but est de manipuler des classes et des abstractions... Bien sur, au final, pour simplifier la classe JeuDeCartes va avoir une variable de type List et utilisera un Collections.shuffle() pour la mélanger...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Utilisation d'une BDD ou non dans mon projet
    Par Nandou56 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/02/2010, 11h18
  2. Réponses: 0
    Dernier message: 11/06/2008, 14h33
  3. Réponses: 12
    Dernier message: 20/05/2008, 17h54
  4. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02

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