Question

J'ai une classe de données avec les méthodes suivantes:

  • ExecuteUDIQuery (requête de chaîne)
  • ExecuteSelectQuery (requête de chaîne)
  • ExecuteSP (string anme, string [,] params)

J'ai beaucoup de classes qui utilisent la classe de données. Maintenant, je veux créer un diagramme de classes, mais je ne sais pas quel type de relation les classes ont avec la classe de données. Est-ce un composite? Est-ce 1: 1 ou ..?

La classe Staff est un exemple de classe qui utilise la classe de données. Cette classe a une méthode Load (), qui charge un objet staff avec l’ID du membre du personnel. Cette méthode contient une requête qui est transmise à la méthode ExecuteSelectQuery (requête de chaîne) de la classe Data.

EDIT: La classe de données n'est pas statique. Cependant, j'ai des doutes. Je ne sais vraiment pas quoi faire. Le fait est que la seule chose à faire est d’exécuter des requêtes et de renvoyer les résultats.

Était-ce utile?

La solution

Je suggère une relation de dépendance usage .

Voir ici pour une brève description.

Autres conseils

Je voudrais demander le nom de vos classes. un nom de classe devrait normalement être un nom singulier. Exemples;

  • fenêtre
  • Personne
  • transaction

Les données sont un pluriel et, en tout cas, je pense que ce devrait être une base de données.

De même pour le personnel - une fois de plus au pluriel, je pense que ce devrait être MemberOfStaff. Sauf s'il s'agit bien sûr d'une liste de membres du personnel, auquel cas je l'appellerais comme un département, un projet ou une division - quel que soit le domaine de votre problème.

Vous constaterez qu'il est étonnamment difficile de trouver de bons noms pour les cours, mais cela en vaut la peine.

La différence entre les agrégations, les composites et les relations 1 sur 1 est un peu vague et quelque peu arbitraire.

J'utilise l'agrégation (diamant ouvert) si une classe possède l'autre classe (est responsable du cycle de vie.

J'utilise des relations 1 sur 1 dans tous les autres cas.

La classe est-elle instanciée par les classes qui l'utilisent ou les méthodes sont-elles statiques? Si elles sont statiques, cela représenterait une dépendance non qualifiée (une flèche pointillée partant des classes qui utilisent la classe de données vers la classe de données)

Si les classes qui utilisent la classe de données créent leur propre instance privée de cette classe, il s'agirait d'une composition 1: 1 (en supposant que le cycle de vie de l'instance de la classe de données soit lié à l'objet qui l'utilise)

Je ne peux pas m'empêcher de commenter votre conception globale. J'essayerais de déplacer la méthode Load de la classe Staff afin que cette classe ne dépende pas directement de la classe Data.

Dans le cadre de votre conception existante, je suggérerais ce qui suit: Si la classe d'état-major contient une variable d'instance de la classe de données, il s'agit d'une association. Si la classe de données est instanciée uniquement pour récupérer l'instance, il ne s'agit que d'une dépendance d'un type donné, comme @toolkit le dit.

Pas assez de données.

Donnez-nous des contours de classe ou quelque chose. D'après ce que je peux voir, je n'aurais pas appelé cela une classe de données (cela ressemble plus à un accesseur de données ), ce qui ressemble à cela pourrait être un singleton (beaucoup : 1, agrégation ou association), ou si instancié sera un composant 1: 1.

  

Maintenant, je veux créer un diagramme de classes, mais je ne sais pas quel type de relation les classes ont avec la classe de données.

Nous ne le faisons pas non plus - vous n’avez décrit que la classe de données, sans préciser comment le personnel récupère les données qu’il utilise.

Si Staff conserve une ou plusieurs instances de la classe de données, il existe une association entre Staff et Data, ou Staff a un attribut de type Data (si Data a une sémantique de valeur).

Si les instances de données sont référencées par plusieurs instances de personnel et que leur cycle de vie dépend du fait qu'elles soient référencées par les instances de personnel, cela peut apparaître sous la forme d'une relation d'agrégation. Si les instances de données ne sont pas partagées entre des instances de personnel et que leurs cycles de vie dépendent de leur référencement, cela peut apparaître sous la forme d'une relation de composition.

Si X ne garde pas la main sur les instances de données qu'il utilise, une relation d'utilisation est appropriée.

La dépendance et l’utilisation sont les deux types de "connecteurs" les plus faibles. Vous pourriez envisager des stéréotypes, des mots clés pour affiner la relation. Vous pouvez trouver que les instanciations, les appels, les créations, les envois de stéréotypes fonctionnent. Sans plus d'informations, la bonne réponse semble être l'utilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top