UML - Artigo Diagramas de Classes da UML

29/01/2019

0

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:
---------------------------------------                   -------------------------------
|           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

Infogen Ltda

Responder

Posts

29/01/2019

Fabricio Kawata

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!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar