OVH Cloud OVH Cloud

de UML vers JAVA

3 réponses
Avatar
Joseph KHOURY
Bonjour,

J'ai une classe acteur et une autre classe film. Un acteur peut jouer dans
un ou plusieurs films. un film est joué par un ou plusieurs acteurs.
pouvez vous me dire comment traduire cette relation entre la classe acteur
et la classe film? relation de type acteur (0.*)<---->(0,*)film

Merci de votre aide

3 réponses

Avatar
Pierre Gilquin
Si tu utilises un mapping objet- relationnel, il te faut 3 tables Acteur,
Film et une table de lien LinkActeurFilm.
Le mapping generera les 2 classes Acteur et Film et chacune(Ca peut etre
que dans un sens) aura un vecteur/array contenant une liste de l'autre.
Des methodes permettront de faire les ajouts/retrais dans ces listes.
A l'execution, le mapping generera les SQL necessaires pour gerer cela.

Pierre

"Joseph KHOURY" a écrit dans le message de news:
43bdef3f$0$19909$
Bonjour,

J'ai une classe acteur et une autre classe film. Un acteur peut jouer dans
un ou plusieurs films. un film est joué par un ou plusieurs acteurs.
pouvez vous me dire comment traduire cette relation entre la classe acteur
et la classe film? relation de type acteur (0.*)<---->(0,*)film

Merci de votre aide






Avatar
Fabien Bergeret
Joseph KHOURY wrote:
Bonjour,

J'ai une classe acteur et une autre classe film. Un acteur peut jouer dans
un ou plusieurs films. un film est joué par un ou plusieurs acteurs.
pouvez vous me dire comment traduire cette relation entre la classe acteur
et la classe film? relation de type acteur (0.*)<---->(0,*)film

Merci de votre aide




public class Acteur {

public Set getFilms() {
return films;
}
public void addFilm(Film p_film) {
films.add(p_film);
//Gestion du lien en retour
p_film.addActeur(this);
}
public void removeFilm(Film p_film) {
films.remove(p_film);
//Gestion du lien en retour
p_film.removeActeur(this);
}
private Set films = new HashSet();
...
}

et un truc equivalent pour la classe Film

La gestion du lien en retour peut se faire ou non dans ces classes. Cela
depend des resposnabilites des couches de ton appli.

Avatar
Hervé AGNOUX
Joseph KHOURY wrote:

Bonjour,

J'ai une classe acteur et une autre classe film. Un acteur peut jouer dans
un ou plusieurs films. un film est joué par un ou plusieurs acteurs.
pouvez vous me dire comment traduire cette relation entre la classe acteur
et la classe film? relation de type acteur (0.*)<---->(0,*)film

Merci de votre aide


Lorsqu'il apparait un schéma comme ça, surtout en Java, j'essaie à tous prix
de casser la double multiplicité.

Dans les bases de données qui travaillent en pointeurs cela peut encore
aller, mais en java qui, tantôt travaille en pointeurs, tantôt en valeur,
cela peut vite faire des trucs ingérables. Si tu sérializes un objet
"film", par exemple, cela peut te conduire par ricochets à sérializer
l'ensemble des films et acteurs pour un simple film...

Pour casser cette double multiplicité, comme tu fais du UML, j'imagine que
tu as quelques idées. Je voulais juste te signaler que, à mon avis, c'était
prudent.

Si cela n'est pas possible, alors il faut trouver un troisième objet qui
fera la liaison multiple ; je ne connais pas l'ensemble de ton sujet alors
il m'est difficile de t'aider. Et puis cela dépend aussi de tes
impératifs : s'il ne s'agit "que" de gérer une base de données et de gérer
des appels SQL, ce n'est peut être pas la peine d'être trop orthodoxe.

A+.


--
Hervé AGNOUX
http://www.diaam-informatique.com