Fazer generalizações em uml 2

É natural para classificar objetos em categorias e para organizar as categorias em subcategorias. Se você olhar para um lugar para viver, você encontrar-se categorizar uma unidade de habitação como uma casa, apartamento, townhouse, condomínio, mansão, e assim por diante. Casas podem, por sua vez, ser mais organizados por estilos como o rancho, de dois andares, colonial, e saltbox. UML fornece-lhe com a notação para capturar esses tipos de classificações - também conhecido como generalização e especialização - e fazer uso deles como um modelador e um programador.

Alguns desenvolvedores orientados a objetos vão para grandes comprimentos para salvar um pouco de trabalho. Quando eles podem modelar alguma coisa uma vez e reutilizá-lo, eles estão interessados. Se eles podem escrever um método (o código do programa para uma operação) para uma classe apenas uma vez e usá-lo muitas vezes, em seguida, assiná-los acima para uma maior produtividade. Se você quiser poupar tempo, especificando atributos e operações uma vez e depois reutilizá-los muitas vezes, a ler.

Como você define classes, você pode notar que algumas classes têm os mesmos atributos ou as mesmas operações. Quando este for o caso, você coloca essas características comuns (atributos, operações, e assim por diante) em uma classe mais genérica chamada a superclasse. As classes que partilham as características comuns são conhecidos como subclasses da superclasse. Por exemplo, o comprimento do material gravado na fita de vídeo, fita de áudio, disco compacto, ou película de filme é um atributo de todos os quatro meios kindsof gravado. Essas classes podem compartilhar outros atributos bem, como suas dimensões físicas e a data de cada um foi usado para fazer uma gravação. Neste caso, o superclasse seria RecordedMedia, as subclasses seria Videotape, Audiotape, CompactDisc e MovieFilm, e alguns atributos comuns poderiam incluir recordedLength e totalLength.

Este processo de encontrar atributos semelhantes ou operações entre as classes é conhecida como generalização. Por exemplo, você generalizar o atributo RecordLength em uma classe mais genérica chamada RecordedMedia. O processo para mostrando uma generalização em UML é simples:

1. Identificar as subclasses.

Localizar classes que têm os mesmos atributos e / ou operações. Essas classes são as suas subclasses.

2. Crie uma superclasse.

Fornecer uma superclasse para manter os atributos comuns e / ou operações das subclasses. Dê a superclasse um nome que categoriza todas as subclasses. Colocar a superclasse acima das subclasses no diagrama de torná-lo mais fácil de ler, mas não é necessário.)

3. Adicione características comuns para a superclasse.

Remover os atributos e operações comuns das subclasses e colocá-los (uma vez) na superclasse.

4. Desenhe um relacionamento de generalização.



Você desenhar uma linha generalização de cada subclasse para a superclasse. Na UML a linha generalização é representado como uma linha cheia com uma ponta de seta oco na extremidade de superclasse. Na UML, uma linha com a ponta da seta oco que liga uma subclasse de um superclasse é conhecida como uma relação de generalização.

Depois de criar um superclasse com as características comuns, tais como atributos e operações, as subclasses herdar aquelas características da superclasse. Desta forma, você só tem que escrever as características comuns uma vez nos superclasse em vez de muitas vezes em cada uma das subclasses.

Você pode dizer se você tem uma generalização, olhando para o idioma que você (ou outros) usar para descrever a relação entre classes. Observe que na descrição suportes gravados e seus diversos tipos, tais como fita de vídeo anteriormente nesta seção, a frase “quatro kindsof gravado media” apareceu. Se você está utilizando frases como “espécie de” ou “tipo de”, então as chances são que você tem uma generalização em suas mãos.

Dizer que um de seus clientes está preocupado com manter o controle de materiais em um arquivo. Este cliente tem acumulado diferente tipos de meios gravados, tais como fitas de vídeo e de áudio. Como modeladores, você precisa para capturar as diferenças entre esses meios de comunicação, bem como as suas semelhanças. O diagrama na Figura 1 mostra os começos de diversas generalizações, dispostos numa hierarquia de herança.

Figura 1: hierarquia de herança simples.

Os desenvolvedores usam a generalização prazo ou herança para se referir ao mesmo conceito de reutilização de atributos compartilhados e operações que mostram em uma superclasse e reutilizar em subclasses. Generalização refere-se ao conceito de generalizar a partir de especificidades (as subclasses) para o genérico (o superclasse). Hereditariedade refere-se ao efeito de generalização em subclasses.

Quando você vê um generalização relação entre as classes, o seu significado é muito diferente da de um Associação relação entre as classes. Uma associação é, finalmente, uma relação entre muitos objetos - alguns casos de uma classe tem um relacionamento (link) com as instâncias da outra classe. Em uma relação de generalização entre aulas, a relação é realmente sobre as classes. O melhor que você pode dizer é que um objeto criado a partir de uma subclasse contém todas as características da subclasse e da superclasse.

Você só tem um objeto a partir de uma classe em um relacionamento de generalização. Mesmo que você mostra duas classes, a subclasse e da superclasse, você só tem um objeto que é criado. Você pode pensar em um objeto da classe Videotape também ser um objeto da classe RecordedMedia por causa da herança. A Figura 2 mostra um objecto criado a partir da classe de fita de vídeo com todos os seus atributos. (A instância de uma classe é representado como um símbolo objeto.) Você não tem dois objetos diferentes (uma para RecordedMedia e um para Videotape), apenas um objeto. Quando o vtu83-1023 objeto foi criado, os valores de todos os seus atributos foram definidos. A gravação na fita é de 57 minutos. O comprimento total da fita física é de 60 minutos. A fita é uma fita de vídeo U-Matic com uma altura de 10 polegadas, uma largura de 7 polegadas, e uma profundidade de 1,5 polegadas. A gravação é analógico, e um registo de conteúdo de fita é ligado à fita para a arquivista para referência.

Figura 2: Uma instância mostrando toda herdou atributos.

Você só tem uma instância definido por uma subclasse e sua superclasse. A subclasse e a superclasse pode ter uma operação construtor (para criar o exemplo) e uma operação de destruição (para destruir o exemplo). Quando o software é executado, e você criar uma instância de uma subclasse, o construtor da superclasse é executado primeiro, seguido pelo construtor da subclasse. Quando chega a hora de eliminar a instância que você criou, o destruidor da subclasse é chamado em primeiro lugar, seguido pelo destruidor da superclasse. Se as coisas são mais complexas porque você tem subclasses de subclasses, basta lembrar: Construtores são invocados a partir do topo da hierarquia de herança para os destruidores localizados na base são chamados na ordem do menor subclasse até o mais alto superclasse.


Publicações relacionadas