Domanda

Ho una classe di dati con i seguenti metodi:

  • ExecuteUDIQuery (query stringa)
  • ExecuteSelectQuery (query stringa)
  • ExecuteSP (string anme, string [,] params)

Ho molte classi che usano la classe di dati. Ora voglio creare un diagramma di classe, ma non so che tipo di relazione hanno le classi con la classe di dati. È un composito? È 1: 1 o ..?

Un esempio di una classe che utilizza la classe di dati è la classe Staff. Questa classe ha un metodo Load (), che caricherà un oggetto staff con l'ID del membro staff. Questo metodo contiene una query che viene passata al metodo ExecuteSelectQuery (query di stringa) della classe Data.

EDIT: La classe di dati non è statica. Tuttavia, ho i miei dubbi. In realtà non so cosa. Il punto è che l'unica cosa che fa è eseguire query e restituire i risultati.

È stato utile?

Soluzione

Vorrei suggerire che si tratta di una relazione di dipendenza usage .

Vedi qui per una breve descrizione.

Altri suggerimenti

Vorrei interrogare il nome delle tue classi. un nome di classe dovrebbe normalmente essere un nome singolare. Esempi;

  • Finestra
  • persona
  • transazione

I dati sono al plurale e in ogni caso penso che dovrebbero essere Database.

Allo stesso modo per Staff - ancora una volta un plurale, penso che dovrebbe essere MemberOfStaff. A meno che ovviamente non sia un elenco di membri dello staff, nel qual caso lo definirei come Dipartimento, Progetto o Divisione, qualunque sia il tuo dominio problematico.

Scoprirai che trovare buoni nomi per le classi è sorprendentemente difficile, ma ne vale la pena.

La differenza tra aggregazioni, compositi e relazioni 1 su 1 è un po 'vaga e in qualche modo arbitraria.

Uso l'aggregazione (diamante aperto) se una classe possiede l'altra classe (è responsabile del ciclo di vita.

Uso le relazioni 1 su 1 in tutti gli altri casi.

La classe è istanziata dalle classi che la usano o i metodi sono statici? Se sono statici, lo rappresenterei come una dipendenza non qualificata (freccia punteggiata che punta dalle classi che utilizzano la classe di dati alla classe di dati)

Se le classi che utilizzano la classe di dati creano la propria istanza privata di quella classe, questa sarebbe una composizione 1: 1 (supponendo che il ciclo di vita dell'istanza della classe di dati sia legato all'oggetto che la sta usando)

Non posso trattenermi dal commentare il tuo progetto generale, proverei a spostare il metodo Load fuori dalla classe Staff, in modo che questa classe non dipenda direttamente dalla classe Data.

Nell'ambito del progetto esistente, suggerirei quanto segue: Se la classe staff contiene una variabile di istanza della classe data, allora è un'associazione. Se la classe di dati viene istanziata solo per recuperare l'istanza, è solo una dipendenza di un determinato tipo, come dice @toolkit.

Dati insufficienti.

Dacci alcuni schemi di classe o qualcosa del genere. Da quello che posso vedere, non avrei effettivamente chiamato questa una classe di dati (sembra più un accessor di dati) che sembra potrebbe essere un singleton (molti : 1, aggregazione o associazione) o, se istanziato, sarà un componente 1: 1.

  

Ora voglio creare un diagramma di classe, ma non so che tipo di relazione hanno le classi con la classe di dati.

Nemmeno noi: hai descritto solo la classe Data e non hai detto come Staff ottiene i dati che utilizza.

Se lo Staff mantiene una o più istanze della classe di dati, allora esiste un'associazione tra Staff e Dati oppure Staff ha un attributo di tipo Dati (se i Dati hanno una semantica di valore).

Se le istanze dei dati sono referenziate da più istanze Staff e i loro cicli di vita dipendono dal riferimento alle istanze Staff, questo può essere mostrato come una relazione di aggregazione. Se le istanze dei dati non sono condivise tra le istanze Staff e i loro cicli di vita dipendono dal riferimento, questo può essere mostrato come una relazione di composizione.

Se X non mantiene le istanze di Dati che utilizza, allora è appropriata una relazione di utilizzo.

Dipendenza e utilizzo sono i due tipi più deboli di "connettori". Potresti considerare stereotipi, parole chiave per affinare la relazione. Potresti trovare che creare un'istanza, chiamare, creare, inviare stereotipi. Senza ulteriori informazioni, anche se la risposta corretta sembra essere l'utilizzo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top