CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Questions parents/enfants

Yozamu
Yozamu
Niveau 10
16 novembre 2014 à 12:43:09

Bonjour à tous!
J'ai deux questions:

1) Imaginons que j'ai une classe mère du genre "consommable"
et plusieurs classes filles style café, sandwich, livre, ...
J'ai un joueur qui a une méthode use(consommable c), qui doit agir selon l'objet utilisé. Sauf que je passe en paramètre un consommable, qui a pour seul attribut name. Les autres attributs, comme le healthBonus ou encore le funBonus se situent dans les classes filles...
:d) Je me demande donc si la seule/meilleure solution consiste à utiliser un switch dans la méthode use du joueur pour savoir le type de l'objet et savoir ainsi quelles variables changer? Parce que je ne peux pas, dans la méthode use, ajouter un healthBonus si le consommable est en réalité un livre qui n'a qu'un funBonus comme attribut... Je ne veux pas de meilleure solution pour ce cas précis, mais juste savoir de manière générale la manière de faire

2) Cette fois-ci, j'ai une classe Animal, et des filles chien et chat. Admettons que j'ai une méthode seReproduire() qui est identique en tout point dans chien et dans chat Sauf que une ligne de la méthode contient un Cat n=new Cat(...) tandis que l'autre contient Dog n=new Dog(...).
:d) Je voudrais savoir si dans des cas comme celui-ci il est possible de mettre cette méthode dans Animal tout en rendant cette ligne variable selon l'animal qui doit être reproduit

VivaFidel
VivaFidel
Niveau 10
16 novembre 2014 à 19:04:17

1) switch avec instanceof et un transtypage
2) Dépend un peu de ce que tu fais dans ta méthode mais normalement oui

Mack77
Mack77
Niveau 8
17 novembre 2014 à 12:01:57

Bah, tu créer une fonction use dans les classes filles, et c'est là que tu agis comme tu veux ?

En gros dans ta classe Mère tu définie juste une fonction use(), et dans les filles tu l'a remplis.

Fusoy
Fusoy
Niveau 10
17 novembre 2014 à 13:04:15

"1) switch avec instanceof et un transtypage "

A proscrire pour des tas de raisons. Même si c'est fonctionnel, java est un langage Objet et non pas procédural.

Il faut faire passer la classe mère en abstrait, en définissant la fonction use en abstrait, que tu redéfinira dans chacun des consommables. Quand tu utilisera la fonction use() sur un consommable, le compilateur choisira pour toi la bonne méthonde. (Celle de livre si c'est un livre par exemple)

Pour le 2, tu peut mettre dans la classe seReproduire() l'utilisation d'une méthode abstraite dans Animal du style :

class Animal {

void abstract reproduction();

Animal seReproduire(){
Animal animal = reproduction();
}

}

Et dans chacune des classes qui hérite d'animal t'aura une méthode :

classe Cat extends Animal {

Animal reproduction(){
Animal cat = new Cat();
return cat ;
}
}

On appelle ça le Design pattern : Template Method, tu pourra trouver plus d'info sur le net.

La prochaine fois, hésite pas a demander sur le forum Programmation de JVC. Plus de gens sont apte a t'aider la-bas.

https://www.jeuxvideo.com/forums/0-47-0-1-0-1-0-programmation.htm

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment