UML - Artigo Diagramas de Classes da UML
Acompanhando o artigo do DevMedia (Parte 1 e Parte 2)...
* https://www.devmedia.com.br/como-interpretar-diagramas-de-classes-da-uml-parte-1/32481
* https://www.devmedia.com.br/aprenda-a-interpretar-diagramas-de-classes-da-uml-parte-2/32726
Conforme a Figura 1. Diagrama de classes representando o sistema de bilhetes aéreos (Segunda Parte)
existe a representação de Enumeradores, sendo descrita mais abaixo no subtitulo (Codificação do enum TipoBagagemEnum).
Observando a figura e a maneira de codificação, deduzo que no Banco de Dados exista uma tabela que corresponda a
BAGAGEM e uma correspondente ao ENUMERADOR, representando uma Modelo Relacional de Banco de Dados, com a Entidade Bagagem com uma
Chave Estrangeira do Enumerador que por sua vez conterá fisicamente os registro. Não sei se estou interpretando equivocadamente.
Modelo Entidade Relacionamento que estou imaginando:
Estou a realizar um exemplo e ASPNETMVC e EntityFramework e declaro minhas classes da seguinte maneira.
Porém em meu Banco de Dados (SqlServer) não cria duas tabelas. Apenas cria um campo (smallint) na Classe que contém o enumerador,
ficando a descrição do enumerador apenas no fonte. (Conforme dúvida de Wallace Olieira ao final do artigo). Seguem exemplo de classe que estou realizando abaixo:
No entanto fico em dúvida como realizar a representação da UML... O enumerador no artigo, é representado com uma classe (acrescido de <<enum>>) e com atributos(id, nome, pesoMax) e uma Nota para descrever os valores possíveis do Enumerador.
Em meu exemplo disponho de outra classe para representar o enumerador, mas seu valor é apenas adicionado no atributo da classe principal (tipo short). Ele também possui apenas um numero e uma valor associado ao numero (Deveria criar um TipoVeiculoEnum com campos Id e Descrição e Adicionar uma nota com os possíveis valores? Ainda, o nome da classe deve ser TipoVeiculoEnum ou a Propriedade Tipo da minha classe Veiculo?)
Não consegui compreender o conceito para fazer de forma correta a diagramação (em meu exemplo)... Desde já obrigado pela atenção.
* https://www.devmedia.com.br/como-interpretar-diagramas-de-classes-da-uml-parte-1/32481
* https://www.devmedia.com.br/aprenda-a-interpretar-diagramas-de-classes-da-uml-parte-2/32726
Conforme a Figura 1. Diagrama de classes representando o sistema de bilhetes aéreos (Segunda Parte)
existe a representação de Enumeradores, sendo descrita mais abaixo no subtitulo (Codificação do enum TipoBagagemEnum).
Observando a figura e a maneira de codificação, deduzo que no Banco de Dados exista uma tabela que corresponda a
BAGAGEM e uma correspondente ao ENUMERADOR, representando uma Modelo Relacional de Banco de Dados, com a Entidade Bagagem com uma
Chave Estrangeira do Enumerador que por sua vez conterá fisicamente os registro. Não sei se estou interpretando equivocadamente.
Modelo Entidade Relacionamento que estou imaginando:
--------------------------------------- ------------------------------- | BAGAGEM | | TIPOBAGAGEMENUM | --------------------------------------- 1 ----- 1 ------------------------------- | IdBagagem INT (PK) | | IdEnumerador INT (PK) | | IdTipoBagagem INT (FK) | | Nome VARCHAR(255) | | Peso DOUBLE | | PesoMaximo DOUBLE | --------------------------------------- -------------------------------
Estou a realizar um exemplo e ASPNETMVC e EntityFramework e declaro minhas classes da seguinte maneira.
Porém em meu Banco de Dados (SqlServer) não cria duas tabelas. Apenas cria um campo (smallint) na Classe que contém o enumerador,
ficando a descrição do enumerador apenas no fonte. (Conforme dúvida de Wallace Olieira ao final do artigo). Seguem exemplo de classe que estou realizando abaixo:
using System; using System.ComponentModel.DataAnnotations; namespace GesCooper.Entities.Models.Veiculo { [Table("VEICULO")] public class Veiculo { [Display(Name = "Descrição")] public string Descricao { get; set; } [Display(Name = "Tipo de Veículo")] public TipoVeiculo Tipo { get; set; } } }
using System.ComponentModel.DataAnnotations; namespace GesCooper.Entities.Enumaradores.TipoVeiculo { public enum TipoVeiculo : short { [Display(Name = "Passeio")] Passeio = 1, [Display(Name = "Carga")] Carga = 2, [Display(Name = "Corrida")] Corrida = 3, [Display(Name = "Transporte")] Transporte = 4, } }
No entanto fico em dúvida como realizar a representação da UML... O enumerador no artigo, é representado com uma classe (acrescido de <<enum>>) e com atributos(id, nome, pesoMax) e uma Nota para descrever os valores possíveis do Enumerador.
Em meu exemplo disponho de outra classe para representar o enumerador, mas seu valor é apenas adicionado no atributo da classe principal (tipo short). Ele também possui apenas um numero e uma valor associado ao numero (Deveria criar um TipoVeiculoEnum com campos Id e Descrição e Adicionar uma nota com os possíveis valores? Ainda, o nome da classe deve ser TipoVeiculoEnum ou a Propriedade Tipo da minha classe Veiculo?)
Não consegui compreender o conceito para fazer de forma correta a diagramação (em meu exemplo)... Desde já obrigado pela atenção.
Infogen Ltda
Curtidas 0
Respostas
Fabricio Kawata
29/01/2019
Neste caso, ao meu ver, você tem dois caminhos: o primeiro é utilizar o Enum, logo, por ser uma lista fixa de valores, não vejo necessidade de mapear essa estrutura como tabela, assim representá-lo apenas como um atributo simples da classe principal é o suficiente. Caso você necessite de mais informações associadas ao TipoVeiculo, aí é o caso de transformar essa estrutura em uma classe, logo, mapeá-la como uma tabela do banco. Assim, na classe principal você terá um atributo relacionado à classe TipoVeiculo, que no banco se transformará numa FK. Em suma, a abordagem a ser utilizada é muito pessoal, e de acordo com o contexto de uso da aplicação. Quanto a nomenclatura a ser utilizada, para a classe sugiro "TipoVeiculo" e caso use enum, mantenha o nome sugerido.
Espero que outros colegas possam dar suas próprias opiniões para enriquecer a discussão.
Forte abraço!
Espero que outros colegas possam dar suas próprias opiniões para enriquecer a discussão.
Forte abraço!
GOSTEI 0