uml – modelaÇÃo da estrutura professor sandro carvalho
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