1
Modelagem de Classes
Profª. Larissa Natália V. Caneiro https://sites.google.com/site/proflarissacarneiro
2
Introdução
O modelo de casos de uso fornece uma
perspectiva do sistema a partir de um ponto de vista externo.
De posse da visão de casos de uso, os desenvolvedores podem prosseguir no desenvolvimento do sistema.
3
A funcionalidade externa de um sistema orientado a
objetos é fornecida através de colaborações entre objetos.
Externamente: os atores visualizam resultados de
cálculos, relatórios produzidos, confirmações de requisições realizadas, etc.
Internamente: os objetos colaboram uns com os outros
para produzir os resultados.
4
Modelo de classes
É composto por diagramas de classes e da descrição
textual associada.
O modelo de classes evolui durante o
desenvolvimento do sistema.
À medida que o sistema é desenvolvido, o modelo
de classes é incrementado com novos detalhes.
Três níveis sucessivos de abstração:
Domínio
Especificação Implementação.
5
Modelo de classes
O modelo de classes de domínio: representa as
classes no domínio do negócio em questão. Não leva em consideração restrições inerentes à tecnologia a ser utilizada na solução de um problema.
O modelo de classes de especificação é obtido
através da adição de detalhes ao modelo anterior conforme a solução de software escolhida.
O modelo de classes de implementação
corresponde à implementação das classes em alguma linguagem de programação.
6
Diagrama de Classes
Mostra a visão estática da estrutura do
sistema.
Deve esboçar o que interage e não o que
acontece quando as classes interagem.
Pode ser chamado de Diagrama Estrutural Estático.
É um gráfico de elementos conectados através
de vários relacionamentos estáticos.
Pode conter classes, interfaces, pacotes e
7 Descrevem os tipos de objetos no sistema e
os vários relacionamentos estáticos entre eles, que são de 2 tipos:
associações
subtipos (abstração)
Ilustram atributos e operações de uma classe e as restrições à maneira com que os objetos são conectados
8
9
Classes
Uma classe representa um grupo de objetos semelhantes (com os mesmos atributos,
relacionamentos, operações e semântica). Uma classe descreve os objetos através de
atributos e operações.
Os atributos correspondem às informações que um objeto armazena.
As operações correspondem às ações que um objeto sabe realizar.
10
Notação para uma classe
Pode ser especificada completamente (nome, atributos
e operações) ou simplificada.
Representada através de uma “caixa” com no máximo
três compartimentos exibidos.
Notação utilizada depende do nível de abstração
desejado.
11
12
Classe
Nome da classe pode ser simples ou pode ser
precedido pelo nome do pacote em que a classe está contida
Nome da Classe
Visibilidade atributo: Tipo = ValorInicial
13
Atributos
Parede altura : real largura : real espessura : real14
Atributos
Classe – detalhes a
nível de análise Classe – detalhes a nível de implementação
15
Visibilidade
Usar marcações de acesso para especificar o tipo de
acesso permitido aos atributos e operações
Visibilidade:
+ público : visível em qualquer classe
# protegido : qualquer descendente poderá usar - privado : visível somente dentro da classe
16
Operações/Métodos
Operação é a implementação de um serviço que
pode ser solicitado por algum objeto da classe.
Todos os objetos de uma classe compartilham as
mesmas operações;
Uma classe pode ter qualquer número de operações
ou nenhuma operação;
Podem ser representadas apenas por seu nome ou
17
18
Relacionamentos
Comunicação entre classes - definem responsabilidades
3 Tipos:
Associações
Generalização (herança)
19 Associação Agregação Herança Composição Dependência
Relacionamentos
20
Relacionamentos
Construir uma casa casa, parede, porta, janela, cômodo, luz Casa tem janelas, que têm vários tipos!
Janelas podem ser abertas no sentido vertical
e/ou horizontal
Existem semelhanças entre as janelas e
21
Associações
Para representar o fato de que objetos podem se relacionar uns com os outros, utiliza-se a associação.
Uma associação representa relacionamentos (ligações)que são formados entre objetos
durante a execução do sistema.
embora as associações sejam representadas entre classes do diagrama, tais associações representam ligações possíveis entre objetos das classes envolvidas.
22
Notação para uma associação
Associação - relacionamentos estruturais entre instâncias. Especifica que objetos de uma classe estão conectados a objetos de outras
Ex: as salas são formadas por paredes
Uma associação pode possuir um nome, que normalmente é um verbo (substantivos são aceitos)
Cada terminação da associação pode possuir um papel, mostrando como uma classe é vista pela outra.
23 Para melhor esclarecer o significado de uma
associação no diagrama de classes, a UML define três recursos de notação:
Nome da associação: fornece algum significado semântico a mesma.
Direção de leitura: indica como a associação deve ser lida
Papel: para representar um papel específico em uma associação.
24
Notação para uma associação
Representada através de um segmento de reta
ligando as classes cujos objetos se relacionam.
25
Exemplo (Nome de associação,
direção de leitura e papéis)
26
27
Multiplicidades
Representam quantos objetos de uma
classe relacionam-se a um único objeto da classe associada.
Cada associação em um diagrama de
classes possui duas multiplicidades, uma em cada extremo da linha de associação. Correspondem as cardinalidades do DER.
28
Multiplicidades
Nome Simbologia
Apenas Um 1..1 (ou 1)
Zero ou Muitos 0..* (ou *)
Um ou Muitos 1..*
Zero ou Um 0..1
29
Exemplo (multiplicidade)
Pode haver um cliente que esteja associado a vários pedidos.
Pode haver um cliente que não esteja associado a pedido algum.
Um pedido está associado a um, e somente um, cliente.
30
Exemplo (multiplicidade)
Uma corrida está associada a, no mínimo, dois velocistas
Uma corrida está associada a, no máximo, seis velocistas.
Um velocista pode estar associado a várias corridas.
31
Associações reflexivas
Também chamada de associação binária recursiva
ou auto-associação
Associa objetos da mesma classe.
Cada objeto tem um papel distinto na associação.
A utilização de papéis é bastante importante para
evitar ambiguidades na leitura da associação.
Associação reflexiva NÃO indica que um objeto se
associa com ele próprio.
Indica que objetos de uma mesma classe se
32
Exemplo (associação reflexiva)
Pessoa
Esposa
Marido É casado com
33
Classe associativa
É uma classe que está ligada a uma
associação, ao invés de estar ligada a outras classes.
É normalmente necessária quando duas ou mais classes estão associadas, e é
necessário manter informações sobre esta associação.
34
Notação para uma classe associativa
Representada pela notação utilizada para
uma classe. A diferença é que esta classe é ligada a uma associação.
35
Associações n-árias
São utilizadas para representar a associação existente entre objetos de n classes.
Uma associação ternária é um caso mais comum (menos raro) de associação n-ária (n = 3).
Na notação da UML, as linhas de associação se interceptam em um losango.
36
37
Exemplo (associação ternária)
É possível existir uma classe associada ligada à ternária.
38
Agregação
É um caso especial da associação Indica que uma das classes do
relacionamento é um parte de outra classe. Em uma agregação, um objeto está contido
no outro, ao contrário de uma associação. Onde se puder utilizar uma agregação, uma
associação também poderá ser utilizada. Palavras chaves: “é parte de” – “consiste
39
Agregação
Sejam duas classes associadas, X e Y. Se uma das perguntas a seguir for respondida com um sim, provavelmente há uma
agregação onde X é todo e Y é parte.
X tem um ou mais Y? Y é parte de X?
40
Notação para uma agregação
Jogador Equipe 0..* membro 1..* AssociaçãoEsportiva * * Afiliada
Representada como uma linha conectando
as classes relacionadas, com um diamante (losango) branco perto da classe que
representa o todo.
41
Composição
É uma forma mais forte de agregação
chamada de Composição ou Agregação composta.
Composição - relacionamento entre um elemento (o todo) e outros elementos (as partes) indica que as partes só podem
pertencer ao “todo” e são criadas e destruídas com ele.
42
Composição
Endereço 1 0..1 Complemento
43 Computador Teclado Mouse Monitor Janela Botão Título Menu
44
Dependência
Dependência - relacionamento de utilização, no qual
uma mudança na especificação de um elemento pode alterar a especificação do elemento
dependente
Ex: os canos dependem do aquecedor para
fornecerem água quente
Dependência entre classes indica que os objetos de
uma classe usam serviços dos objetos de outra classe.
45
Dependência
Indica que mudanças em um elemento (o servidor)
podem afetar outro elemento (o cliente)
46
Generalização
Generalização (herança simples e múltipla) -
relacionamento entre um elemento mais geral e um mais específico.
É um relacionamento de taxonomia onde o elemento é
totalmente consistente com o primeiro, somando-o informação especializada.
Superclasse, subclasses
Ex: Veículo terrestre pode ser do tipo automóvel ou
caminhão (TIPO DE), Tipos de Animal (mamífero, ave, peixe)
47
Generalização
Os termos herança, generalização e especialização
referem-se a aspectos da mesma idéia:
Generalização – relacionamento entre classes –
superclasse generaliza subclasses;
Herança – mecanismo de compartilhamento de atributos e
operações utilizando o mecanismo de generalização;
Especialização – subclasses refinam ou especializam a
48
49
50
Generalização
Uma classe pode ter mais de uma superclasse (herança múltipla).