Generalização e especialização referem-se a estratégias de agrupar indivíduos com atributos comuns, manipulando de diferentes formas as diferenças que existem entre eles. Neste contexto, este artigo introduz os conceitos de Generalização e Especialização explicando de uma forma clara e objetiva a maneira de se aplicar os dois conceitos no momento da elaboração dos Modelos de Dados.
Em qual situação o tema torna-se útil:
No momento da construção do modelo de dados nos deparamos com situações em que devemos escolher se vamos utilizar Generalização ou Especialização. Estes conceitos podem ser usados quando identificamos similaridades entre entidades do projeto e queremos definir um modelo de dados que reflita com maior clareza como estas similaridades são agrupadas em entidades mais genéricas e as diferenças existentes entre as entidades são mantidas nas classes mais especializadas. Neste contexto, este artigo pode orientar qual dos dois é mais apropriado para uma determinada situação.
Resumo DevMan
Um determinado assunto pode ser modelado de inúmeras formas. Isso quer dizer que não existe um modelo de dados certo ou errado, a diferença é se ele está bem modelado ou não. Saber usar as regras de normalização e a aplicação correta dos conceitos ajuda muito na construção de um bom modelo de dados, e com o auxilio deste artigo será possível entender o que é e como usar a Generalização e a Especialização.
A generalização e a especialização (conceitos muito utilizados no diagrama de classes da UML) são dois conceitos que todos os profissionais responsáveis por modelar a estrutura de dados do negócio devem conhecer e saber aplicar (ler Nota DevMan 1).
A UML é uma linguagem
gráfica usada no desenvolvimento orientado a objetos (OO) para visualização,
especificação, construção e documentação de informações referentes a um
software. Essa linguagem foi
criada em 1996, como o resultado da integração dos métodos orientados a objetos
propostos por Booch (1994), Rumbaugh (1991) e Jacobson (1993), padronizando as
notações utilizadas. Sua versão 2.0 que foi adotada pela OMG em 2004, possuindo
13 diferentes tipos de diagramas, mais elementos e maior formalismo. A versão
corrente é 2.4 (beta), de março de 2011. Dentre seus
diagramas, podemos dizer que o diagrama de classes tem sido o mais utilizado e
reflete de perto os conceitos da orientação a objetos. Seu principal objetivo é
permitir a visualização das classes que comporão o sistema com seus respectivos
atributos e métodos, bem como em demonstrar como as classes do diagrama se
relacionam, complementam e transmitem informações entre si. Esse diagrama
apresenta uma visão estática de como as classes estão organizadas,
preocupando-se em como definir a estrutura lógica das mesmas. Este diagrama
serve ainda como base para a construção da maioria dos outros diagramas da
linguagem UML.
É certo dizer que na maioria dos casos é possível aplicar um dos dois conceitos, mas o mais importante é saber escolher qual deles é o mais apropriado para cada situação. Não existe uma fórmula correta, na verdade é a análise do negócio junto com a experiência de cada um que vai direcionar a melhor escolha.
Neste contexto, neste artigo alguns exemplos serão implementados para os dois assuntos, abordando regras de negócio diferentes para cada um. Isso possibilitará o entendimento dos dois conceitos de uma forma mais fácil.
O mais importante agora é saber o que é cada um dos conceitos e como aplicar no modelo de dados. Vamos entender como cada um pode ser usado e posteriormente utilizaremos um estudo de caso para vemos como aplicar na prática cada um deles.
...