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] Créer deux objets dépendants

][OncheOnche][
][OncheOnche][
Niveau 18
22 novembre 2012 à 14:34:22

Salut. :hap:

Tout d'abord je débute en Java donc ne m'en voulez pas. :peur:

Je ne sais pas si mon titre est très explicite, mais en fait je souhaiterais savoir comment créer deux objets qui dépendent l'un de l'autre. Vous n'avez toujours pas compris ? :noel: Bien, un exemple vaut mieux qu'un long discours.

Par exemple, j'ai deux classes : Responsable et Rayon (d'un magasin). Un responsable a dans ses attributs un rayon et un rayon a un responsable. C'est là que ça coince, comment faire ?

Si je crée d'abord le rayon puis ensuite le responsable, ça marchera pas car pour créer le rayon il faudra d'abord avoir créé un responsable. Et inversement. :(

La solution qui marche mais qui ne me plait pas serait la suivante :

Responsable durand = new Responsable(new Rayon());
Rayon boissons = new Rayon(durand);
durand.setRayon(boissons);

En gros j'attribue d'abord un rayon par défaut à mon responsable, je crée le rayon, et ensuite je l'attribue à mon responsable. Et je trouve ça moche et pas forcément lisible. :noel:

Si vous avez lu jusque là merci, et y'a-t-il une autre solution ? :hap:

[n][b][l]
[n][b][l]
Niveau 7
22 novembre 2012 à 15:08:11

Salut :)

C'est un problème de conception, je t'invite à lire des articles sur l'uml et les diagrammes de classes.
Là tu dois utiliser ce qu'on appelle l'association dans tes deux classes.

Tu dois avoir en attribut un objet membre que le constructeur met à null

Rayon() { this->_responsable = null ; }

Tu dois avoir une méthode qui associe un objet et une méthode qui dissocie.

setResponsable(Responsable r) { this->_responsable = r ; }
retirerResponsable() { this->_reponsable = null ; }

Et lorsque tu utilises l'objet membre tu dois toujours vérifier que celui ci n'est pas à null

// -----------------
http://laurent-audibert.developpez.com/Cours-UML/html/Cours-UML017.html
http://www.lsv.ens-cachan.fr/~schmitz/teach/2003_AP_Java/UML/

tbop2
tbop2
Niveau 10
22 novembre 2012 à 16:57:31

Et si c'est d'ailleurs si important que ca dans le code de ne pas pouvoir creer de responsable sans rayon et reciproquement alors tu DOIS creer une Factory class pour ca qui a partir d'un constructeur general te delivrera un couple de responsable factory avec chacun lie vers l'autre.

godrik
godrik
Niveau 30
22 novembre 2012 à 17:44:52

En base de donnee, lorsqu'il y a une relation forte 1:1 completement immuable entre deux entites. On a tendance a implementer les deux entite en une seule relation.

tbop2
tbop2
Niveau 10
22 novembre 2012 à 17:52:45

C'est ce que j'ai pense ici aussi au debut..... En pratique pas sur que dans son code cela soit forcement simple et clair, surtout niveau nommage (En BDD tu t'en fous car c'est pas vraiment la meme "vision" de l'esprit qui se pose). Qu'en penses tu ?
J'penche personnellement plutot pour une jolie Factory, et puis c'est tellement Java-like les Factory de toute facon :D Ca te fera un moyen d'utiliser le keyword friend tiens aussi.

godrik
godrik
Niveau 30
22 novembre 2012 à 18:28:56

Je suis assez d'acccord de ne pas faire une seule classe en java. Pour des raisons de lisibilite et de documentation, il est probablement mieux de faire deux classes distincte. La majorite des fonctions de la classe "fusionnee" porteront probablement que sur l'une partie des variables ou l'autre. Seulement quelques fonctions seront "croise".

Factory c'est bien javaesque comme il faut. Mais il ne faut pas oublier que l'on pourrait changer le mapping responsable/rayon plus tard.

][OncheOnche][
][OncheOnche][
Niveau 18
24 novembre 2012 à 10:26:18

Merci pour vos réponses... :)
... même si je n'ai pas compris grand chose. :peur:

@[n][b][l]

J'ai regardé un peu tes liens, ça m'aide un peu sans vraiment m'aider car je ne comprends pas le code. :noel:
Genre ici http://laurent-audibert.developpez.com/Cours-UML/html/Cours-UML020.html#toc55 avec la partie "Association bidirectionnelle 1 vers 1".

Qu'est-ce que ça fait ce genre de ligne ? :(
b.getA().setB(null);

Et ton "this->" c'est quoi, j'ai jamais vu ça en Java. :-( Je connais "this." et "this()" mais c'est tout.

@ Autres

Je ne sais pas ce qu'est une Factory class. :noel: Puis j'ai pas encore vu ça en cours donc laissez tombé. :( Mais merci quand même. :)

[n][b][l]
[n][b][l]
Niveau 7
25 novembre 2012 à 19:49:46

T'en fous de mes liens est ce que tu comprends ce que j't'ai expliqué ?

[n][b][l]
[n][b][l]
Niveau 7
25 novembre 2012 à 19:52:20

Ah oui pardon en java on écrit avec les '.'
Oé ben tu fais 'this.' !

Aldebran
Aldebran
Niveau 10
25 novembre 2012 à 21:31:58

Créer deux objets strictement dépendant ça ne me paraît pas forcément une bonne idée. Que se passera-t-il s'il faut changer l'affectation d'un responsable à un rayon ?

[n][b][l]
[n][b][l]
Niveau 7
26 novembre 2012 à 01:50:29

C'est très simple tu dissocies l'objet responsable du rayon et tu associes un nouveau responsable. :)

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