UML - Unified Modeling Language - Generalização, agregação, composição e dependênciaContinuando com a séria de artigos vamos conhecer um pouco mais sobre generalização, agregação, composição e dependência em UML.por Admilson Nogueira Show
Generalização Definição É a capacidade de se criar superclasses que encapsulam estrutura e/ou comportamento comuns a várias subclasses. Procedimentos Os procedimentos para se obter a generalização são:
Uma maneira relativamente fácil de se entender isso, é comparando com a nossa herança genética: Você possui algumas características de seus Pais. Mas seus Pais não possuem suas características. Pois bem, você seria uma subclasse. Outra maneira de se compreender é entendo o conceito de Herança. Herança É uma hierarquia de abstrações na qual uma subclasse herda a estrutura e/ou comportamento de uma ou mais superclasses. Exemplo:
A classe VeículoTerrestre pode possuir as subclasses Carro e Caminhão, onde as subclasses podem herdar os Atributos Peso e Comprimento. A Classe Caminhão pode ter o Atributo Tonelagem próprio da Classe, herdando Peso e Comprimento. A Classe Carro pode não ter nenhum Atributo próprio, herdando Peso e Comprimento da classe VeículoTerrestre. Caminhão é uma espécie de VeículoTerrestre. Carro é uma espécie de VeículoTerrestre. Tipos de Herança Herança simples é quando uma subclasse herda estrutura e/ou comportamento de uma única superclasse. Herança múltipla é quando uma subclasse herda estrutura e/ou comportamento de mais de uma superclasse. IMPORTANTE: Herança é uma relação entre Classes de Objetos, e não uma relação entre instância das Classes. Uma subclasse herda:
Agora que você já tem uma pequena noção do que é um Relacionamento Generalização na UML, vamos abordar o Relacionamento Agregação. Agregação Definição É uma forma especializada de associação na qual um todo é relacionado com suas partes. Também conhecida como relação de conteúdo. Como representamos uma Agregação? É representada como uma linha de associação com um diamante junto à Classe agregadora. A multiplicidade é representada da mesma maneira que nas associações. Veja a figura:
A Agregação é um caso particular da associação, indica que uma das classes do relacionamento é uma parte, ou está contida em outra classe. As palavras chaves usadas para identificar uma agregação são: "consiste em", "contém", "é parte de". Agregação Compartilhada: É dita compartilhada quando uma das classes é uma parte, ou está contida na outra, mas esta parte pode estar contida na outra várias vezes em um mesmo momento. Veja figura:
Agregação Reflexiva: Uma variação desse tipo de Relacionamento, quando o Objeto de uma Classe é composto de Objetos da própria Classe. Veja figura:
Um objeto da Classe FormulárioDeRegistro contém um único objeto FormulárioDeMatrícula. Um objeto FormulárioDeMatrícula está contido num único objeto FormulárioDeRegistro. Agora que você já tem uma pequena noção do que é uma Agregação na UML, vamos abordar os Relacionamentos de Composição na UML, que nada mais são do que um tipo de Agregação. Composição Definição É uma agregação onde uma classe que está contida na outra "vive" e constitui a outra. Se o objeto da classe que contém for destruído, as classes da agregação de composição serão destruídas juntamente, já que as mesmas fazem parte da outra. Como representamos uma Agregação Composição? É representada como uma linha de associação com um diamante preenchido junto à Classe agregadora. A multiplicidade é representada da mesma maneira que nas associações. Veja as figuras:
Agora que você já tem uma pequena noção do que é uma Agregação Composição na UML, vamos abordar os Relacionamentos de Dependência. Dependência Definição Uma dependência indica a ocorrência de um relacionamento semântico entre dois ou mais elementos do modelo, onde uma classe cliente é dependente de alguns serviços da classe fornecedora, mas não tem uma dependência estrutural interna com esse fornecedor [Furlan, 1998] Como funciona? Por exemplo: Uma mudança no elemento independente irá afetar o modelo dependente. Como no caso anterior com generalizações, os modelos de elementos podem ser uma classe, um pacote, um use-case e assim por diante. Na Prática Quando uma classe recebe um objeto de outra classe como parâmetro, uma classe acessa o objeto global da outra. Nesse caso existe uma dependência entre estas duas classes, apesar de não ser explícita. Graficamente Uma relação de dependência é simbolizada por uma linha tracejada com uma seta no final de um dos lados do relacionamento. E sobre essa linha o tipo de dependência que existe entre as duas classes. Veja a figura:
Agora que você já tem uma pequena noção do que é uma Dependência na UML, vamos abordar os Esteriótipos na UML. O que é agregação em orientação a objetos?É um tipo especial de associação onde tenta-se demonstrar que as informações de um objeto (chamado objeto-todo) precisam ser complementados pelas informações contidas em um ou mais objetos de outra classe (chamados objetos-parte); conhecemos como todo/parte.
O que é agregação em programação?Uma agregação é um tipo especial de associação na qual objetos são montados ou configurados para criar um objeto mais complexo. Uma agregação descreve um grupo de objetos e como você interage com eles.
O que é agregação e composição?Composição é quando o objeto "filho" não faz sentido fora do objeto "pai". Agregação é quando o objeto filho existe sem o objeto pai, mas agrega informações a ele. Um endereço existe independentemente de um funcionário morar lá ou não. Então é uma agregação.
Qual a diferença entre agregação e associação?A agregação não deixa de ser uma associação mas existe uma exclusividade e determinados objetos só podem se relacionar a um objeto específico. É uma relação de um para muitos. Um objeto é proprietário de outros mas não há dependência, então ambos podem existir mesmo que a relação não se estabeleça.
|