uml – modelaÇÃo da estrutura professor sandro carvalho

Post on 17-Apr-2015

106 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

UML – MODELAÇÃO DAESTRUTURA

Professor Sandro Carvalho

Introdução

A modelação da estrutura de um sistema de software consiste

principalmente, segundo a abordagem orientada por objetos, na

identificação de classes e suas respectivas relações.

Um objeto reflete em geral uma entidade do mundo real e apresenta

um estado e comportamento próprio. Os objetos interatuam entre si

por troca de mensagens. Uma classe consiste numa estrutura que

permite criar objetos semelhantes; que apresentem estado e

comportamento semelhante. Neste sentido diz-se que uma classe é

uma fábrica de objetos e que um objeto é uma instância de uma

classe.

Introdução

A UML providencia os seguintes elementos, que permitem a

especificação da estrutura estática de um sistema de software:

classes, relações, interfaces, objetos.

Classes

Uma classe é a descrição de um conjunto de objetos que partilham os

mesmos atributos, operações, relações e a mesma semântica. Uma

classe corresponde a algo tangível ou a uma abstração conceitual

existente no domínio do utilizador ou no domínio do engenheiro de

software.

Classes

Uma classe é representada em UML por um rectângulo com uma,

duas ou três seções. Na primeira seção apresenta-se o nome da

classe, na segunda a sua lista de atributos, e na terceira a sua lista de

métodos.

Classes

Relações

Uma relação em UML estabelece a ligação entre elementos e é

representada graficamente por um determinado tipo de linha. Na

modelação orientada por objetos os três tipos de relações mais

importantes são (1) dependências; (2) generalizações; e (3)

associações.

Relação de Dependência

Uma relação de dependência, ou simplesmente dependência, indica

que a alteração na especificação de um elemento pode afetar outro

elemento que a usa, mas não necessariamente o oposto. A

dependência é representada em UML através de uma linha dirigida a

tracejado.

Relação de Dependência

exemplo da relação de dependência entre as classes

SensorTemperatura e Temperatura.

Relação de Generalização

Uma relação de generalização, ou simplesmente generalização, é

uma relação entre um elemento geral (superclasse, super-caso

utilização, super-pacote) e um elemento mais específico (subclasse,

sub-caso-utilização, sub-pacote). É representada em UML por uma

linha dirigida a cheio com um triângulo branco no seu extremo.

No contexto de classes usam-se generalizações para ilustrar as

relações de herança conhecidas das linguagens de programação

orientadas por objetos.

Relação de Generalização

A herança providencia um mecanismo natural e potente de

organização dos programas de software ao permitir: (1) que cada

subclasse herde o estado e comportamento de uma superclasse; (2)

subclasses podem adicionar o seu próprio estado e comportamento; e

(3) as subclasses podem ainda alterar os métodos (comportamento)

herdados, providenciando implementações especializadas desses

métodos.

Relação de GeneralizaçãoCatalogue numberAcquisition dateCostTypeStatusNumber of copies

Library item

Acquire ()Catalogue ()Dispose ()Issue ()Return ()

AuthorEditionPublication dateISBN

Book

YearIssue

MagazineDirectorDate of releaseDistributor

Film

VersionPlatform

Computerprogram

TitlePublisher

Published item

TitleMedium

Recorded item

Relação de Associação

Uma relação de associação, ou simplesmente associação, é uma relação

estrutural que especifica que objetos de uma classe estão ligados a objetos de

outra.

Relação de Associação

A Figura a seguir ilustra a associação de “posse” entre as classes Utilizador

e Password, com uma multiplicidade de “1 para muitos” (1-N). A associação indica

que um utilizador tem várias (0 ou mais) passwords e que uma password pertence

necessariamente a um utilizador.

Relação de Associação

Relação de Associação

Multiplicidade

A multiplicidade traduz o número de instâncias de uma classe que se podem

relacionar (através da associação) com uma única instância da(s) outra(s)

classe(s) participante(s). Pode-se especificar em UML qualquer tipo de

multiplicidade. Por exemplo, multiplicidade muitos (*), um ou mais (1..*),

exatamente um (1), zero ou um (0..1).

Navegação

A navegação traduz a forma como a partir de uma instância de uma classe se

pode aceder a uma ou mais instâncias de outra classe relacionada pela

associação. Por omissão a navegação numa associação é bidirecional.

Agregação (Simples)

A associação entre classes sem agregação reflete que ambas as classes se

encontram no mesmo nível conceitual. Por outro lado, uma relação de agregação

corresponde ao fato de uma instância de determinada classe possuir ou ser

composta por várias instâncias de outra classe. O adorno de agregação é

representado por um losango colocado junto à classe que representa o elemento

agregador ou “o todo”. A associação de agregação traduz apenas o fato de uma

classe ser composta por diferentes outras classes, suas componentes.

Agregação (Simples)

A Figura abaixo ilustra a relação de agregação entre várias classes. Na prática a

descrição das diferentes componentes que compõem um computador pessoal

(PC).

Composição (Agregação Composta)

A composição, ou agregação composta, é uma variante à agregação simples,

em que é adicionada a seguinte semântica: (1) forte pertença do “todo” em relação

à “parte”, e (2) tempo de vida delimitado (as “partes” não podem existir sem o

“todo”). Adicionalmente, o “todo” é responsável pela disposição das suas “partes”,

ou seja, “o todo” é responsável pela criação e destruição das suas “partes”.

Composição (Agregação Composta)

O adorno de agregação composta é representado por um losango a cheio

colocado junto à classe que representa o elemento agregador ou “o todo”.

A Figura acima ilustra um exemplo de uma associação com agregação

composta, de forma a refletir o fato que “um Departamento não existe fora do

contexto de uma Empresa”.

Classes-Associação

Numa relação de associação entre classes, a associação pode também ter os

seus próprios atributos (e eventualmente operações), devendo ser, por

conseguinte, modelada também como uma classe. Este tipo de classe designa-se

por classe-associação.

Classes-Associação

Considere-se o exemplo da Figura a seguir, em que a associação entre as

classes Pessoa e Empresa traduz as tarefas que cada empregado realiza na

empresa. Para cada tarefa é mantido um conjunto de atributos. A classe-

associação Tarefa é representada visualmente como qualquer outra classe, mas

apresenta uma linha a tracejado a ligá-la à linha da associação.

Classes-Associação

Classes-Associação

Associações N-árias, com aridade maior ou igual a 3, são pouco comuns na

modelação de classes. Contudo, há situações em que a aplicação deste tipo de

associações é vantajosa em termos da clareza do modelo. Nestas circunstâncias,

a associação é representada por um losango com linhas para todas as suas

classes participantes. A Figura a seguir ilustra um exemplo de uma associação n-

ária, a associação Tarefa e correspondente classe-associação, que relaciona as

classes Pessoa, Empresa e TipoTarefa. Caso a associação tenha também

atributos e/ou operações próprias, cria-se uma classe-associação,a qual é ligada

ao losango por uma linha a tracejado.

Classes-Associação

Exemplo de Diagrama de Classes

Exemplo

Considere o sistema de uma equipe de futebol constituído pelos seguintes

atores: jogador, treinador, atacante, goleiro, médio, defesa, presidente. Desenhe o

respectivo diagrama de casos de utilização. Sugestão: considere por exemplo os

seguintes casos: jogar, treinar, defender a baliza, pagar ao jogador, pagar ao

treinador, vender jogador, contratar jogador, contratar treinador, despedir treinador.

Exemplo

Exemplo

top related