Come definire un diagramma di classe da un diagramma di relazioni di entità?

7

Attualmente sto lavorando a un progetto in cui ci viene richiesto di definire un diagramma di relazioni di entità e un diagramma di classe UML da un sistema di set.

Sono riuscito a definire con successo l'ERD. Mi ha richiesto di suddividere le informazioni da una specifica e di formarle in entità e quindi definire una relazione tra le entità per rappresentare il sistema.

Ora che l'ho fatto ora sono nel diagramma di classe UML, ma l'unico problema è che non ho idea di come incorporare ciò che ho definito all'interno del mio ERD in un diagramma di classe UML come sono stato ha detto che la struttura tra i due diagrammi è molto diversa.

  • Le entità dell'ERD in un certo senso servono come classe in UML?
  • Gli attributi delle entità nell'ERD formano gli attributi in le classi?
  • Come si può facilmente definire quali attributi e metodi si realizzano pubblico, privato e protetto?

Comprendo molte nozioni di base su UML e ERD da soli, ma prendere un diagramma di relazioni di entità e incorporarlo appropriatamente in un UML è qualcosa su cui sono abbastanza perso da dove cominciare.

Qualche consiglio o consiglio sarebbe molto apprezzato.

    
posta Henry Green 21.11.2017 - 22:30
fonte

2 risposte

8

I diagrammi delle classi UML possono essere visti - approssimativamente - come un superset di ERD. La notazione del diagramma delle classi UML è più recente, realizzata con l'intenzione di incorporare o sostituire le notazioni meno recenti come ERD e contiene elementi aggiuntivi come ereditarietà, metodi o attributi privati che non fanno parte della modellazione ER. Le ERD sono state realizzate rigorosamente con la modellazione dei dati per i database relazionali in mente, UML è stato progettato per un uso più ampio, la modellazione di classi primarie, ma non esclusivamente per questo.

Quindi non è sorprendente che tu possa prendere qualsiasi ERD e trasformarlo in un diagramma di classe UML dall'ovvia traduzione "entity- > class", "attributo- > attributo", "relazione- > relazione". La visibilità degli attributi dovrebbe tutti essere mappata su "pubblico", poiché gli ERD non hanno un concetto di attributi privati (e ovviamente non di quelli protetti, poiché ERD manca anche del concetto di ereditarietà).

Cerca su google "traduci ERD in UML" trovami questo documento scientifico sulla mappatura tra i modelli UML e ER, penso che ci sia molto di più sui dettagli cruenti.

Un altro aspetto qui è quando vuoi che i tuoi modelli grafici corrispondano esattamente a un'implementazione nel codice. I mapping di oggetti relazionali (ORM) come MS Entity framework o Hibernate hanno in genere regole specifiche su come generare classi in un linguaggio di programmazione da uno schema di database. Se vuoi che il tuo modello di classe corrisponda esattamente alle classi generate di un ORM, il modo migliore è probabilmente quello di mappare prima l'ERD in uno schema DB fisico, lasciare che il generatore di codice del tuo ORM preferito generi le classi nel codice e quindi provare un UML strumento di reverse engineering per creare un diagramma di classe da quel codice.

    
risposta data 21.11.2017 - 23:06
fonte
0

@ Henry-Green Aggiungendo alla @ risposta di Doc-Brown, le classi incentrate sui dati si associano ai componenti del modello in un Modello View Controller modello di architettura.

Per quanto riguarda la tua domanda su cosa rendere pubblico o privato o protetto, una best practice di programmazione generale è seguire il Principio di privilegio minimo .

    
risposta data 24.11.2017 - 15:49
fonte

Leggi altre domande sui tag