Modelisation objet C++

Modelisation objet C++ - C++ - Programmation

Marsh Posté le 15-10-2004 à 23:15:30    

Bonjour,
je cherche le meilleur moyen de représenter en C++ quelque chose du genre Film / Acteur :
1 Film à plusieurs Acteur
1 Acteur joue dans plusieurs Films
 
Je débute en C++ et je voudrais bien faire mais je ne sais pas trop !
Si quelqu'un peu me conseiller !
 
Merci

Reply

Marsh Posté le 15-10-2004 à 23:15:30   

Reply

Marsh Posté le 15-10-2004 à 23:22:04    

un film est composé d'une liste d'acteurs.

Reply

Marsh Posté le 15-10-2004 à 23:28:56    

Oui, mais ce que je me pose comme question, c'est plutot est ce que je fais une liste de code acteur (chaine), une liste d'objet acteur, une liste de pointeur sur des acteurs, ...

Reply

Marsh Posté le 15-10-2004 à 23:57:14    

en c++ on parlera plutot de vector, de map ... voir la STL

Reply

Marsh Posté le 15-10-2004 à 23:59:32    

Dans la mesure où un même acteur est partageable entre plusieurs films, si liste il y a, c'est liste de pointeurs.
Quant à dire qu'un film est composé d'une liste d'acteurs, c'est un choix. On pourrait aussi bien considérer qu'un acteur est composé de la liste des films où il a joué.
Ce qui est intrinsèque à l'objet film, c'est son titre, éventuellement sa durée, sa date de création, etc.
L'objet acteur possède intrinsèquement un nom/prénom, éventuellement un sexe, une nationalité, etc.
Du point de vue d'une base de donnée, il existe ensuite une relation possible (plusieurs à plusieurs) entre FILMS et ACTEURS, càd peut-être un nouvel objet qui gère ces connexions JOUE_DANS ou A_POUR_INTERPRETE. Rien n'empêche de créer à part cette "classe relationnelle" et de la faire évoluer ensuite pour intégrer les relations entre de nouveaux objets qui ne manqueront pas de se présenter (REALISATEUR, PRODUCTEUR, SCENARISTE), ainsi que de nouvelles relations entre objets existant (EST_UN_REMAKE_DE, etc.)

Reply

Marsh Posté le 16-10-2004 à 10:31:23    

Je rejoins la réponse d'Acut. Il faut poser la question en terme de base de données, à savoir des objets/fiches pour contenir les données et des index/containers de pointeurs pour les recherches.
 
Donc dans cet exemple je ferais par exemple une classe acteur/intervenant avec une liste de pointeurs sur les objets films (dans lesquels il est intervenu) et une classe film avec une liste de pointeurs sur les objets intervenants.
Ensuite, il faut créer des tables d'index permettant de faire des recherches, par exemple une map "liste_films" qui contient des pointeurs vers les objets films, et une map "liste_acteurs" qui contient des pointeurs vers les objets "acteurs".
Une fois un acteur trouvé, l'objet correspondant retourne la liste des films dans lesquels il est apparu.


Message édité par el muchacho le 16-10-2004 à 10:35:04
Reply

Marsh Posté le 16-10-2004 à 17:14:24    

En fait pour suivre cette idée mais en modifiant un peu :
Je pensais faire une classe Film, un acteur et une classe tournage qui contiendrais la liste des films en relation avec les acteurs. C cette classe qui se chargera de la gestion des liens entre film et acteur.
Qu'en pensez vous ?

Reply

Marsh Posté le 17-10-2004 à 09:46:38    

Que c'est très "base-de-données relationelle" comme approche (Boyce-Codd, Pascal Obispo, Michael Jackson et tout et tout).  
 
Mais ce n'est pas comme ça qu'on fait d'habiture en C++, car il n'existe pas d'indexage automatique sur tes objets. La solution de El muchacho est vraiment la solution classique, et celle qui est généralement à recommander.  
 
Et ce, malgré l'inconvénient apparent qui est que chaque relation est stockée 2 fois (film->acteur et acteur->film).

Reply

Marsh Posté le 17-10-2004 à 11:38:39    

ok merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed