Précédent   Forum du club des développeurs et IT Pro > Général Développement > ALM
ALM Forum sur le cycle de vie du logiciel : Gestion de projet, ingénierie logicielle, conception, architecture, modélisation, méthodes, tests, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/08/2012, 12h14   #1
newkiss
Membre à l'essai
 
Homme Thomas
Développeur informatique
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 23
Points : 23
Par défaut Conception Classe Métier (Image Table BDD)

Bonjour,

J'ai une problématique sur la conception de classe métier (C#/ Java ...) qui serait une image d'une table de BDD.
Je souhaite que mon application soit toujours une réalité de ma BDD (Mode connecté)

Exemple :

Table "Societe" , "Salarie"
Une société --> Plusieurs Salariés
Un Salarié --> Une Société

Laquelle des 2 solutions suivante serait la plus judicieuse : (ou une autre)
Code :
1
2
3
4
5
6
7
8
9
10
class Societe {
     int idSociete;
     string nom;
 }
class Salarie{
     int idSalarie;
     string nom;
     string prenom;
     int idSociete;
 }

OU

Code :
1
2
3
4
5
6
7
8
9
10
11
class Societe {
     int idSociete;
     string nom;
     List<Salarie> listSalarie;
 }
class Salarie{
     int idSalarie;
     string nom;
     string prenom;
     Societe maSociete;
 }


Merci d'avance pour vos réponse
newkiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2012, 12h35   #2
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 573
Points : 25 573
Envoyer un message via MSN à CinePhil
Je pense qu'en programmation objet, c'est plutôt la seconde forme qui est la bonne.

Maintenant, ce qui peut être gênant si c'est mal fait, ce serait que l'instanciation de la classe Société pour une société lance automatiquement la récupération de la liste des salariés si l'application n'en a pas besoin au moment de cette instanciation !

Si j'ai besoin de l'adresse du siège de la filiale Tartempion, je ne vais pas rapatrier la liste de ses 1300 salariés !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2012, 14h04   #3
newkiss
Membre à l'essai
 
Homme Thomas
Développeur informatique
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 23
Points : 23
C'est effectivement ce que je pensait. Je ne développe pas en objet habituellement. C'est pourquoi ce concept de charger des références comme cela me semble un peu lourd.

Je suis ouvert à d'autres informations pour comprendre un peux mieux ce qui est bon ou non (Avantage / Inconveniant) des deux techniques.

Mon but étant d’essayer de coder le plus proprement possible en objet (En C# dans mon cas)
newkiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2012, 14h17   #4
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 573
Points : 25 573
Envoyer un message via MSN à CinePhil
Je ne suis pas spécialiste en développement objet, surtout en Java que je connais peu et en C# que je ne connais pas du tout !

Mais il me semble que le constructeur de la classe Societe ne devrait pas lancer un getListeSalaries qui ne devrait être activié qu'à la demande. La propriété listSalaries devrait donc être, selon moi, initialisée à vide.

On peu d'ailleurs imaginer que la classe Societe pourrait être utilisée pour créer une nouvelle société puis pour y ajouter des salariés, ce qui justifie la listSalaries à vide.

Maintenant, place aux experts !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2012, 14h52   #5
bruno_pages
Modérateur
 
Avatar de bruno_pages
 
Homme bruno pagès
Développeur informatique
Inscription : juin 2005
Messages : 3 133
Détails du profil
Informations personnelles :
Nom : Homme bruno pagès
Âge : 53
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2005
Messages : 3 133
Points : 5 133
Points : 5 133
Bonjour,

je suis d'accord avec l'ensemble des réponses de CinePhil.

Citation:
Je souhaite que mon application soit toujours une réalité de ma BDD
Je suppose que cela veut dire que la BDD est modifiée en dehors de l'application courante, sinon le problème ne se poserai pas.

Ce que vous souhaitez risque fort de n'être qu'un vœux pieu, car vous aurez toujours un décalage avec le contenu de la BDD à chaque fois qu'elle bouge.

Attention de bien avoir une image cohérente du contenu de la BDD, lorsque plusieurs informations formant un tout cohérent sont modifiées, suivant le moment ou votre lecture sera faite vous risquez un mélange entre des anciennes valeurs pour des informations et des nouvelles valeurs pour d'autres. A confirmer par CinePhil mais le moyen de se protéger est déjà de faire les écritures en BDD via des transactions/verrous.
__________________
Bruno Pagès, auteur de Bouml, mes tutoriels sur DVP (vieux, non à jour)
bruno_pages est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2012, 09h59   #6
newkiss
Membre à l'essai
 
Homme Thomas
Développeur informatique
Inscription : novembre 2007
Messages : 14
Détails du profil
Informations personnelles :
Nom : Homme Thomas
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2007
Messages : 14
Points : 23
Points : 23
J'ai en fait l'impression en chargeant des éléments provenant d'une requête en BDD dans un objet, que si je réutilise ce même objet pour charger des informations à l'écran, celui-ci (objet) ne sera pas forcément synchroniser avec la BDD.
De plus cela me donne aussi l'impression de charger beaucoup d'informations en mémoire alors que celle-ci ce seront par forcément utile pour mes traitements

Je ne programme pas en objet habituellement et suis un peu dérouté par ce fonctionnement. En général (en non objet), je requête simplement ma base puis en affiche directement (ou après traitement) le résultat.

Après, si les experts objet me disent que cette ainsi, c'est que cela ne doit pas pauser plus de problème que cela
newkiss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2012, 10h11   #7
bruno_pages
Modérateur
 
Avatar de bruno_pages
 
Homme bruno pagès
Développeur informatique
Inscription : juin 2005
Messages : 3 133
Détails du profil
Informations personnelles :
Nom : Homme bruno pagès
Âge : 53
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2005
Messages : 3 133
Points : 5 133
Points : 5 133
Bonjour,

le fait que vous mémorisiez ou non les informations n'a rien a voir avec le fait que vous programmiez 'objet' ou non, car vous pouvez tout aussi bien mémoriser vos informations via des structures C.

ce que vous devez savoir c'est si vous devez ou non mémoriser les choses à au moins moyen terme.

mais pour vos affichages/traitements il faudra bien que vous ayez au moins des mémorisation temporaires, et là vous pouvez très bien programmer 'objet'
__________________
Bruno Pagès, auteur de Bouml, mes tutoriels sur DVP (vieux, non à jour)
bruno_pages est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h20.


 
 
 
 
Partenaires

Hébergement Web