Você está na página 1de 21

Diagrama de Classes

 O caso de uso fornece uma perspectiva do sistema


de um ponto de vista externo (do ator)
Diagrama de Classes  Internamente os objetos colaboram para atender às
funcionalidades do sistema
 Demonstra a estrutura estática dessa colaboração,
mostra as classes de um sistema, seus atributos e
operações, e como as classes se relacionam.
 O diagrama de objetos (que pode ser visto como uma
instanciação do diagrama de classes) também
representa a estrutrua estática

Diagrama de Classes – Um
Perspectivas de um Diagrama de
Exemplo
1
Store

1
Uses Classes
address : Address
1
name : Text

O diagrama de classes evolui com o sistema


ProductSpecification
ProductCatalog
addSale()
description : Text

Contains

e pode ter diferentes perspectivas


price : Quantity
1 Looks-in 1 1 1.. * upc : UPC
specification()

Houses
1
Describes
1 1

Na análise – identificamos objetos (classes)


Sale

POST *
date : Date
SalesLineItem

no domínio do problema
isComplete : Boolean
Captures time : Time Contains
quantity : Integer
endSale() 1 1 1 1.. *
becomeComplete()
enterItem()
makePayment()
makeLineItem()
makePayment()
subtotal()
No projeto – pensamos em objetos (classes)
para a solução
total()

1
Logs-completed 4 * Payment
Paid-by
amount : Quantity
1

Perspectivas de um Diagrama de
Classes
Definição de Objetos
• O modelo conceitual (análise) representa as  Conceitual: representa uma entidade,
classes no domínio do negócio em questão. Não
leva em consideração restrições inerentes à
“coisa” , processo ou conceito do mundo
tecnologia a ser utilizada na solução de um real e que possui:
problema.  Identidade – valor de uma característica que o
• O modelo de classes de especificação (projeto) é identifica para reconhecimento
obtido através da adição de detalhes ao modelo  Atributos – qualidades, características
anterior conforme a solução de software escolhida.
 Comportamento – habilidades de
• O modelo de classes de implementação
corresponde à implementação das classes em processamento
alguma linguagem de programação.

1
Definição de Objetos Definição de Classes
 De implementação: representa um módulo de  Conceitual: são agrupamentos de objetos, são
sw que recebe e produz dados abstrações de um coletivo de entidades do
 Identidade – identificador em lg de implementação mundo real
 Atributos – variáveis e seus tipos, que recebem  O modelo genérico desse coletivo contém
diferentes valores e definem o estado do objeto atributos e comportamentos comuns.
 Comportamento – funções ou procedimentos, os
resultados dessas funções determinam o
comportamento do objeto

Definição de Classes Notação UML para Classes


 De implementação: corresponde a um tipo de
uma lg de programação
 Um modelo genérico para criar variáveis que Identificação <<entidade>> <<entidade>>
armazenarão os objetos correspondentes. da classe Cliente Cliente
De Pacote Vendas De Pacote Vendas

Atributos Atributos

Métodos Métodos

Atributo Notação UML para Atributos


 A maioria é opcional, seu uso vai depender do
• Característica, qualidade de um objeto ou classe.
tipo de visão no qual estamos trabalhando e
• Seus valores servem para diferenciar objetos podem ser abstratos ou utilizar a notação de uma
(Instâncias)
lg de programação
Overriding (ou Sobreposição)
[Visibili/d]Nome[Multiplici/d]:[Tipo]=[Valor][{Proprie/ds}]
Mecanismo para redefinir ou tornar um atributo
não aplicável

2
Notação UML para Atributos - Notação UML para Atributos -
Visibilidade Multiplicidade
 + : visibilidade pública: o atributo ü visível  Usada para especificar atributos que são
no exterior da classe. arranjos
 - : visibilidade privada : o atributo é visível  Indica dimensão de vetores e matrizes
somente por membros da classe.
 # : visibilidade protegida: o atributo é Ex: notas[10]
visível também por membros de classes matrizDeValores[5,10]
derivadas

Notação UML para Atributos - Notação UML para Atributos –


Tipos Valor Inicial e Propriedades
 Indicam o formato do valores que o atributo  Pode-se indicar o valor ou conteúdo do
pode assumir atributo imediatamente após a sua criação,
ou o seu valor default
 Na visão conceitual o tipo é abstrato
Ex: resultado: int=0
Ex: dataDaVenda: tipoData
 As propriedades descrevem comentários ou
 Na visão de implementação utilizam-se os indicações sobre o atributo, podem mostrar
tipos da lg de programação se ele é ou não opcional
Ex: salario: float Ex: dataDaVenda {valor constante}

Métodos ou Serviços Métodos ou Serviços


Ligação Dinâmica (late binding)
Processamento realizado por um objeto que Mecanismo pelo qual se decide o destino de
indica o seu comportamento, em função do
uma mensagem em tempo de execução
recebimento de uma mensagem

Mensagens Ex: int (*f)(); a função só definida


Ativação de um método. Um objeto se utiliza i =f(); → durante a execução
de um serviço ou se comunica com outro
objeto enviando uma mensagem

3
Métodos ou Serviços Métodos ou Serviços
Sobrecarga de operadores (Overloading) Polimorfismo
Operações de mesmo nome, mas Possibilidade de uma função poder manipular
implementadas de maneira diferente valores com tipos (formas) diversas
Ex: function comp(L:lista):integer
Ex: operações de adição, subtração ↑
implementadas diferentemente para real e qualquer tipo de lista (genérico)
inteiro mesma implementação

Métodos ou Serviços Métodos ou Serviços


Construtor/Destrutor
Função para criação/remoção de instâncias
de objetos/classes

Notação UML para Métodos -


Notação UML para Métodos Parâmetros
 A notação e uso vai depender do tipo de visão Os parâmetros – dados de entrada e/ou saída
no qual estamos trabalhando e podem ser para o método são representados por
abstratos ou utilizar a notação de uma lg de Nome-do-Parâmetro:Tipo=Valor-Padrão
programação Ex:
Visão conceitual
[Visibili/d]Nome(Parâmetros)]:[Retorno][{Proprie/ds}] ImprimirData(data:TipoData)
Visão de implementação
ArmazenarDados(nome:char[30],salario:float=0.0)

4
Notação UML para Métodos – Notação UML para Métodos –
Tipo de Retorno Visibilidade e Propriedades
O Valor-de-Retorno indica se o método retorna  Visibilidade – similar ao de atributo
algum valor ao término de sua execução e qual
o tipo de dado do valor retornado.  Comentários ou restrições para os métodos
Ex: Ex:
Visão Conceitual
Area() {Área <=600}
CalcularValor(): TipoDinheiro
Restringe a 600 unidades o valor máximo das áreas
Visão de implementação a calcular
ArmazenarDados(nome:char[30]): bool

Notação UML para Métodos –


Propriedades Exemplo de Uma Classe
 É útil distingüir operações de métodos. Operações é Visão de Implementação
algo que se evoca sobre um objeto (a chamada do Visão Conceitual
<<entidade>>
procedimento). Para realizar uma operação a classe Aluno
implementa um método (o corpo do procedimento) Aluno
DePacoteCadastro
 É útil distingüir operações que alteram ou não o estado nome:TipoNome -nome[30]:char
(atributos) de uma classe RA: TipoCódigo +RA: int {valorconstante}
 Não alteram: query, métodos de obtenção, getting
methods calculaMédia():TipoNota
+calculaMédia():Double
 Alteram: modificadores, métodos de atribuição ou
fixação, setting methods

Construção do Diagrama de Classes –


Construção do Diagrama de
Refinamentos Sucessivos
Classes
• VisãoAbstrata  detalhadamento (impl.)
• Na fase de análise constrói-se
 Na visão conceitual: cada classe pode ser vista como um primeiramente um diagrama de classes
conceito ou um tipo, e os métodos são identificados
numa fase posterior.
sem se preocupar em definir os métodos,
 Na visão de implementação: os métodos aparecem
ao qual chamaremos de Modelo
obrigatoriamente e consideramos aspectos de controle, Conceitual
estereótipos, pacotes, etc. • Na fase de projeto os métodos são
adicionados e o Modelo Conceitual é
Podem existir outras visões intermediárias (por exemplo: refinado gerando o Diagrama de Classes
de domínio e de aplicação, (análise) de especificação
(projeto)

5
Modelo Conceitual
• Representação de conceitos no domínio do
Diagrama de Classes problema

• Deve mostrar: conceitos, associações entre


Perspectiva Conceitual
conceitos e atributos de conceitos
Modelo Conceitual
(na fase de análise, não se preocupa ainda
em representar métodos os serviços)

Modelo Conceitual - Exemplo Criando um Diagrama de Classes-


Perspectiva Conceitual
• 1. Liste os conceitos candidatos para os casos
de usos em questão usando a lista de categorias
comuns e identificação textual de nomes.
• 2. Desenhe-os em um modelo conceitual.
• 3. Adicione as associações necessárias para
registrar os relacionamentos para os quais é
preciso preservar alguma memória
• 4. Adicione os atributos necessários para
cumprir os requisitos de informação.

Identificando Conceitos
Identificando Conceitos (Entidades) –Regras Úteis
• É uma entidade (idéia, coisa ou objeto) do mundo
real.  É melhor especificar demais do que de menos
 Não exclua entidades simplesmente porque os
• Um bom modelo conceitual deve superestimar o requisitos não indicam a necessidade de guardar
número de conceitos. informações sobre eles (comum em projeto de BD)
 Comece fazendo uma lista de entidades candidatos
• Os conceitos são associados ao estereótipo de classe a partir de um checklist.
<< entidade >>  Considere os substantivos e frases nominais nas
– um estereótipo para uma classe UML é um classificador descrições textuais do domínio do problema como
que mostra o tipo ao qual a classe pertence. possíveis candidatos a entidades ou atributos

6
Checklist: Classes Entidades Típicas Classes Entidades Típicas
Categoria Exemplos Categoria Exemplos
Objeto físico ou tangível Terminal de ponto-de-venda Coisas em um container Item
Avião Passageiro
Especificação, projeto, ou Especificação de produto Sistemas externos Serviço de crédito
descrição de coisas
Descrição de vôo Controle de tráfego aéreo
Lugares Loja Nomes abstratos Fome
Aeroporto Aracnofobia
Transações Venda, Pagamento Organizações Departamento de vendas
Reserva Companhia aérea
Itens de transação Itens de venda Eventos Venda, Assalto, Reunião
Parcelas de pagamento Vôo, Decolagem
Papéis de pessoas Operador Regras e políticas Política de devolução
Piloto Política de cancelamento
Container de coisas Loja
Avião

Identificando Entidades a partir


Classes Entidades Típicas dos Casos de Uso
Ação do Ator Resposta do Sistema
Categoria Exemplos 1. Este caso de uso começa
Catálogos Catálogo de produtos
quando um Cliente chega no
caixa com itens para comprar.
Catálogo de peças
2. O Operador registra o identi- 3. Determina o preço do item e
Registros de finança, trabalho, Recibo, Contrato de trabalho ficador de cada item. adiciona informação sobre o item
contrato, questões legais
Registro de manutenção Se há mais de um do mesmo à transação de venda em anda-
Instrumentos e serviços Linha de crédito item, o Operador também pode mento.
financeiros Mostra a descrição e o preço do
Ações informar a quantidade.
item corrente.
Manuais, livros Manual do empregado
Manual de reparos

 Usar com cuidado!


 Linguagens naturais: imprecisão e ambigüidade

Entidades Candidatas para o


Sistema Posto Comercial Entidades de Relatório
POST Item Store Sale  Não incluir no modelo conceitual quando:
 Toda informação contida no relatório é derivada
de outras fontes
Sales
Cashier Customer Manager
LineItem

 Incluir no modelo conceitual quando:


Product Product  Relatório tem um papel especial em termos das
Payment
Catalog Specification
regras de negócio
 Ex.: Recibo de venda dá direito à devolução dos itens
 Conceitos restritos ao caso de uso Comprar Itens - comprados
Versão 1

7
Criando o Diagrama de Classes- Entidades de Especificação ou
Perspectiva Conceitual Descrição
 Estratégia do “fazedor de mapas”:
 A especificação ou descrição de um objeto
 Usar nomes existentes no vocabulário do domínio deve ser representada como uma entidade em
 Incluir apenas conceitos pertinentes para os requisitos separado
(casos de uso) em questão
 evita perda de informação quando o objeto é
Excluir tudo que não há no domínio do problema
deletado


 Erro comum: atributo em vez de entidade


 reduz informações redundantes ou duplicadas
Vôo

destino
ou... ?
Vôo

nome
Aeroporto
 Muito comum no domínio de produtos e
vendas Item
Especificação-Produto
Atributos normalmente correspondem a um texto ou Item
Ex.:
 descrição Descreve
descrição
número no mundo real
preço
pior número serial
preço 1
melhor * Número serial
UPC UPC

Entidades de Especificação ou
Descrição – Outro exemplo Identificando Atributos
Vôo
Voa-para
Aeroporto
 Atributos devem preferencialmente
representar tipos primitivos de dados ou de
data pior
número 1 nome
hora *

valores simples
 Ex.: Data, Número, Texto, Hora, Endereço, etc.
Vòo

data
Descrito-por
Descrição-Vôo
melhor  Atributos não devem ser usados para:
hora * 1 número

*  Representar um conceito complexo


Descreve-vôo-para
1  Relacionar conceitos (atributo “chave-
Aeroporto

nome
estrangeira”)

Identificando Atributos Atributos de Tipo Não-Primitivo


Worse
Cashier
not a "simple" attribute
 Um atributo deve ser de tipo não-primitivo
name quando:
currentPOST
 É composto de seções separadas
 Ex.: endereço, data
 Precisa ser analisado ou validado
 Ex.: CPF, número de matrícula
Cashier POST  Possui outros atributos
1 Uses 1
Better  Ex.: Um preço promocional com prazo de validade
name number
 É uma quantidade com uma unidade
 Ex.: valores monetários, medidas

8
Adicionando Atributos ao
Sistema POST Atributo Derivado

Conceito Atributos e justificativa


 Um atributo “derivado” é um atributo cujo
Pagamento quantia—Para determinar se pagamento é suficiente valor pode ser deduzido a partir de outras
e calcular troco.
Especificação-Produto descrição—Para mostrar na tela e imprimir no recibo. informações
UCP—Para localizar especificação do item.  Ex.: quantidade em Item de Venda—pode ser
preço—Para calcular o total da venda. deduzido a partir da multiplicidade da
Venda data, hora—Para imprimir no recibo e registrar no log
de vendas. associação entre Item de Venda e Item
Item de Venda quantidade—Para registrar a quantidade digitada
quando há mais de um do mesmo item. SalesLineItem 0..1 Records-sale-of Item
1..*

Loja nome, endereço—Para imprimir no recibo. /quantity

derived attribute from


the multiplicity value

Identificando Relacionamentos
1. Associações
 Os relacionamentos entre as classes representam a
interação entre seus objetos: em geral, representam  Conexão entre classes/objetos
a utilização de serviços e/ou a organização entre as
mesmas. Relacionamento que descreve uma série de
– Devem refletir o domínio do problema ligações entre duplas de classes/ objetos
 Tipos:  Uma ligação significa por exemplo que:
Associação (associação simples)
elas "conhecem uma a outra“


 Agregação/composição
 Generalização  "estão conectadas com“
 Dependência  para cada X existe um Y
 Refinamentos

Associações Associações
• Uma associação representa relacionamentos  O mais comum, com apenas uma conexão,
(ligações) que são formados entre objetos representada por uma linha sólida e um
durante a execução do sistema.
– embora as associações sejam representadas nome (geralmente verbo)
entre classes do diagrama, tais associações
representam ligações possíveis entre objetos
das classes envolvidas registra
Caixa Venda

9
Nome de associação, direção de
Associações leitura e papéis
 Podem possuir dois nomes, significando um • Para melhor esclarecer o significado de uma
nome para cada sentido da associação e os associação no diagrama de classes, a UML
papéis de cada classe define três recursos de notação:
– Nome da associação: fornece algum
significado semântico à mesma.
registra – Direção de leitura: indica como a associação
Caixa Venda deve ser lida
é registrada por – Papel: para representar um papel específico em
uma associação.

Exemplo (Nome de associação, Associações – Cardinalidade


direção de leitura e papéis) (Multiplicidade)
 Especifica o número de objetos de cada
Papel
Nome da
associação
Direção
de leitura
classe envolvidos com a associação
Papel
 A leitura da cardinalidade é diferente para
os diferentes sentidos da associação
contratante Contrata contratado
Organização Indivíduo
* *
registra
Caixa 1
Venda
0..*

Associações - Multiplicidade Multiplicidades


zero or more;
* T
"many" • Cada associação em um diagrama de classes
possui duas multiplicidades, uma em cada
1..*
T one or more
extremo da linha de associação.
1..40
T one to forty

5
T exactly five

3, 5, 8 exactly three,
T
five or eight

10
Exemplo (multiplicidade)
Exemplo (multiplicidade) • Uma corrida está associada a, no mínimo,
• A caixa pode registrar várias vendas dois velocistas
• Uma venda é registrada em somente uma • Uma corrida está associada a, no máximo,
caixa seis velocistas.
• Pode haver uma caixa que não registra • Um velocista pode estar associado a várias
nenhuma venda corridas (a zero ou mais)

participa
Velocista Corrida
registra 2..6 0..*
Caixa Venda
1 0..*

Conectividade Conectividade X Multiplicidade


• A conectividade corresponde ao tipo de Conectividade Em um No outro
associação entre duas classes: “muitos para extremo extremo
muitos”, “um para muitos” e “um para um”. Um para um 0..1 0..1
1 1
• A conectividade da associação entre duas
Um para muitos 0..1 *
classes depende dos símbolos de 1 1..*
multiplicidade que são utilizados na 0..*
associação. Muitos para * *
muitos 1..* 1..*
0..* 0..*

Exemplo (conectividade) Participação


• Uma característica de uma associação que
Um para um indica a necessidade (ou não) da existência
Empregado
1 0..1
Departamento
desta associação entre objetos.
Um para muitos
Empregado Departamento • A participação pode ser obrigatória ou
0..* 1 Muitos para muitos opcional.
Empregado Projeto – Se o valor mínimo da multiplicidade de uma
0..* 1..*
associação é igual a 1 (um), significa que a
participação é obrigatória
– Caso contrário, a participação é opcional.

11
Associações - Navegabilidade Associações - Navegabilidade
 Mostra a direção de navegação, ou seja do canal Dada uma mercadoria pode-se identificar diretamente
de comunicação entre os objetos e classes. a empresa fornecedora, mas a volta não é verdadeira
 Uma associação é navegável da classe A para a
classe B, se, dado um objeto de A, consegue-se
obter de forma direta os objetos relacionados da fornece
classe B. Empresa Mercadoria
0..* 0..*
 É importante na visão de especificação e
implementação -> visibilidade entre objetos,
capacidade de um objeto de uma classe mandar
mensagem a um objeto de outra classe

Exemplo (associação
Associações reflexivas
reflexiva)
• Associa objetos da mesma classe.
– Cada objeto tem um papel distinto na associação.
Supervisão
• A utilização de papéis é bastante importante para supervisor 1
evitar ambigüidades na leitura da associação.
• Uma associação reflexiva não indica que um Empregado *
objeto se associa com ele próprio. supervisionado
– Ao contrário, indica que objetos de uma mesma classe
se associam

Associação Exclusiva
 Podem ser especificadas restrições em duas ou mais Associação Ordenada
associações
 Na associação exclusiva objetos de uma classe podem  Especifica uma ordem entre os objetos da
participar de no máximo uma das associações ao associação. Ex: janelas de um sistema têm
mesmo tempo que ser ordenadas na tela (uma está no topo,
0..*
Contrato
0..* uma está no fundo e assim por diante).
em OCL: xor
{OU}
1..* 1..* {ordenada}
Janela Top Janela Bottom
Empresa Pessoa

12
Notação para uma classe
Classes de Associações (ou
Associativas associativa
• É uma classe que está ligada a uma • Representada pela notação utilizada para uma
associação, ao invés de estar ligada a outras classe. A diferença é que esta classe é ligada a
classes. uma associação.
• É criada quando duas ou mais classes estão
Emprego
associadas, e é necessário manter informações salário
sobre esta associação que possui operações e dataContratação

métodos (portanto ela é uma classe) Pessoa * * Empresa


• Uma classe associativa pode estar ligada a nome
telefone
razãoSocial
endereço
associações de qualquer tipo de conectividade. endereço empregado empregador

Associações n-árias Exemplo (associação ternária)


• São utilizadas para representar a associação
existente entre objetos de n classes. Técnico 1 1
Projeto
Uso nome
• Uma associação ternária é um caso mais nome
verba
comum (menos raro) de associação n-ária
(n = 3). *

• Na notação da UML, as linhas de Computador


modelo
associação se interceptam em um losango.

2. Agregação/ Composição
Associação Qualificada  Casos particulares de associação
 conseqüentemente, multiplicidades,
 Usadas com multiplicidades 1..* ou *. O participações, papéis, etc. podem ser usados
qualificador (chave) identifica um objeto igualmente
 onde se puder utilizar uma
chave para agregação/composição, uma associação também
recupera conta poderá ser utilizada.

possui  Representam uma relação todo-parte


nr.
Cliente
conta 0..*
ContaCorrente  Uma das classes é uma parte ou está contida
em outra.

13
Agregação/Composição Como identificar
• Características particulares: • Sejam duas classes associadas, X e Y. Se
– São assimétricas: se um objeto A é parte de um uma das perguntas a seguir for respondida
objeto B, B não pode ser parte de A. com um sim, provavelmente há uma
– Propagam comportamento, no sentido de que agregação onde X é todo e Y é parte.
um comportamento que se aplica a um todo – X tem um ou mais Y?
automaticamente se aplica as suas partes. – Y é parte de X?
– As partes são criadas e destruídas pelo todo, na
classe do objeto todo, existem operações para  Palavras chaves: consiste em, contém, é
remover e adicionar as partes parte de, tem, possui, é composta de, faz
parte de, etc.

Agregação, características Composição, características


• A destruição de um objeto todo não implica • A destruição de um objeto todo implica
necessariamente a destruição de suas partes necessariamente a destruição de suas partes
• Um objeto pode pertencer a mais de um • Uma classe pertence a um único composto (vive
composto, ou estar contido nele várias vezes nele).
- conhecida como agregação de
- conhecida como agregação não compartilhada
compartilhamento (ou compartilhada)

é composto de é composto de
Time Jogador capítulo seção
* * 1 *

Notação losango sem preenchimento Notação losango com preenchimento

3. Generalização/Especialização Notações para generalização


 Relacionamento entre uma classe geral e outra Superclasse Superclasse
mais específica (de herança). A classe mais
específica pode ser usada no lugar da mais geral e
herda suas características
– É como se as características da superclasse
estivessem definidas também nas suas Subclasse1 Subclasse2 ... SubclasseN Subclasse1 Subclasse2 ... SubclasseN
subclasses
• Representa o relacionamento é-um (is-a). Outros nomes: classe base e derivada, classe mãe (pai) e
filha; tipo e sub-tipo; pai e herdeira; geral e específica;
ancestral e descentente

14
Herança de associações Generalização/Especialização
• Atributos e operações e associações são herdados Diferença semântica entre a herança e a associação.
pelas subclasses. • A primeira trata de um relacionamento entre
Realiza
classes, enquanto que a segunda representa
Cliente Pedido relacionamentos entre instâncias de classes.
1 *
• Na associação, objetos específicos de uma classe se
associam entre si ou com objetos específicos de
outras classes.
– Herança: “Gerentes são tipos especiais de funcionários”.
ClientePessoaFísica ClientePessoaJurídica
– Associação: “Gerentes chefiam departamentos”.

Generalização/Especialização
Hierarquias de generalização • Transitividade: uma classe em uma hierarquia herda
Forma propriedades e relacionamentos de todos os seus
origem ancestrais.
mover() – Ou seja, a herança pode ser aplicada em vários níveis,
exibir() dando origem a hierarquia de generalização.
– uma classe que herda propriedades de uma outra classe
pode ela própria servir como superclasse.
Retângulo Círculo Polígono

ponto : Ponto raio : float pontos : ListaDePontos • Assimetria: dadas duas classes A e B, se A for uma
exibir() generalização de B, então B não pode ser uma
generalização de A.
– Ou seja, não pode haver ciclos em uma hierarquia de
Quadrado
generalização.

Herança múltipla Exemplo (Herança múltipla)


• Herança múltipla: Uma classe pode ter mais de
Veículo
uma superclasse.
– Tal classe herda de todas a suas superclasses.
• O uso de herança múltipla deve ser evitado.
– Esse tipo de herança é difícil de entender. Veículo Terrestre Veículo Aquático
– Requer políticas para resolver conflitos de herança
– Algumas LPs não dão suporte à implementação desse
tipo de herança (Java e Smalltalk).
Veículo Anfíbio

15
Herança Múltipla
Herança Múltipla
_________
(Entrelaçamento)

Herança Múltipla (Overriding) Classes abstratas e concretas


• Usualmente, a existência de uma classe se justifica
pelo fato de haver a possibilidade de gerar
instâncias (classes concretas).
• No entanto, podem existir classes que não geram
instâncias diretas: classes abstratas.
• Utilizadas para organizar e simplificar uma
hierarquia de generalização.
– Propriedades comuns a diversas classes podem ser
organizadas e definidas em uma classe abstrata a partir
da qual as primeiras herdam.
• Subclasses de uma classe abstrata também podem
ser abstratas, mas a hierarquia deve terminar em
uma ou mais classes concretas.

Notação para classes abstratas Classes abstratas – Sistema Post


• Na UML, uma classe abstrata é
representada com o seu nome em itálico.

A classe Telefone não pode Telefone


ser instanciada. Telefone Fixo
e Telefone Celular são
concretas, implementam os
métodos e podem ser
instanciadas.

Telefone Fixo Telefone Celular

16
Classes abstratas – Sistema Post Restrições sobre generalizações
• Restrições sobre generalizações são representadas
(entre chaves) no diagrama de classes próximas à
linha do relacionamento.
• Restrições predefinidas pela UML:

– Sobreposta
– Disjunta
– Completa
– Incompleta

Restrições sobre generalização e


na herança Exemplos (Restrições sobre
 Sobreposição (overlapping): caso em que um objeto generalizações)
da superclasse pode pertencer simultaneamente a Veículo FiguraGeométrica

mais do que uma subclasse


 Disjuntiva (disjoint): superclasses podem se {incompleta} {incompleta, disjunta}

especializar em apenas uma subclasse Caminhão Trator Elipse Quadrado Círculo

 Uma generalização está completa se já foram


Atleta
especificadas todas as sub-classes até aquele ponto e
Indivíduo

está incompleta se existir a possibilidade de uma


outra especialização, caso em que um objeto da {completa, disjunta} {incompleta, sobreposta}

superclasse pode não pertencer a nenhuma das Homem Mulher Nadador Corredor

subclasses

Conformidade das subclasses à


Como identificar
superclasse
• O seguinte teste pode ser realizado para identificar ContaBancária
se duas classes X e Y se relacionam por -número
generalização: Cliente
-dataAbertura
-saldo
HistóricoTransações
X é um tipo de Y? * * 1 *
+debitar()
+creditar()

• Regra da substituição: seja a classe A uma


generalização de outra B. Não pode haver
diferenças entre utilizar instâncias de B ou de A, ContaCorrente ContaPoupança
do ponto de vista dos usuários de A. -limiteSaque -dataAniversário
-rendimento
– Ou seja, é inadequado o uso de generalização onde nem
todas as propriedades da superclasse fazem sentido para
a subclasse.

17
Quais hierarquias são adequadas? Dicas
• Deve-se evitar a construção de hierarquias de
generalização muito profundas (com mais de três níveis)
– dificultam a leitura do diagrama.
• Papéis e subclasses não devem ser confundidos.
– Um papel corresponde ao uso de uma certa classe em
uma associação.Uma classe pode assumir vários papéis.
– Deve-se evitar a criação de subclasses em situações que
podem ser resolvidas através da utilização de papéis.

4. Dependências
5. Refinamentos
 Conexão entre dois elementos,
 Relacionamentos entre duas descrições de uma
representando que uma mudança no
mesma coisa, mas em níveis de abstração
elemento independente afeta o dependente.
diferentes
elemento que depende elemento de que se depende  São usados em modelos de coordenação, ou
(usa) (usado) seja, modelos que mostram como os modelos de
diferentes fases se relacionam

Mercadoria Fornecedor Classe de Classe de


Análise Projeto

Identificação dos Perspectiva Conceitual


Relacionamentos Associações
 Na perspectiva conceitual representam-se  Indicam conhecimento de um
relacionamentos conceituais relacionamento que precisa ser preservado
 As associações são estabelecidas durante algum tempo
analisando-se os papéis.  Duração de milisegundos ou anos, dependendo
do contexto
 A generalização representa a hierarquia
entre tipos e seus sub-tipos
 A agregação entre um todo e suas partes.

18
Associações Típicas Associações Típicas
Categoria Exemplos Categoria Exemplos
A é uma parte física de B (*) Gaveta - POST A é um membro de B Operador - Loja
Asa - Avião Piloto - Companhia Aérea
A é uma parte lógica de B (*) Item de Venda - Venda A é uma sub-unidade Departamento - Loja
organizacional de B
Escala - Vôo Manutenção - Companhia Aérea
A está fisicamente contido em B (*) POST - Loja A usa ou gerencia B Operador - POST
Passageiro - Avião Piloto - Avião
A está logicamente contido em B (*) Descrição-Item - Catálogo A se comunica com B Cliente - Operador
Vôo - Roteiro de Viagem Agente de Reserva - Passageiro
A é uma descrição de B Descrição-Item - Item A está relacionado com uma Cliente - Pagamento
transação B
Descrição-Vôo - Vôo Passageiro - Bilhete
A é um item de uma transação ou Item de Venda - Venda A é uma transação relacionada Pagamento - Venda
relatório B com outra transação B
Opção de Reserva - Reserva Reserva - Cancelamento
A é conhecido/registrado/repor- Venda - POST A é possuído por B POST - Loja
tado/capturado em B (*)
Reserva - Terminal de Reserva Avião - Companhia Aérea
(*) Alta prioridade

Adicionando Associações ao
Modelo Conceitual do Sistema
Identificando Associações
POST
 Regras úteis:  Relacionamentos fundamentais
 Focar nas associações cujo conhecimento deve ser  Venda Capturada-em POST
preservado
 Para conhecer a venda corrente, calcular total e imprimir
 Usar nomes baseados em expressões verbais que façam recibo
sentido quando lidas no contexto do modelo
 Venda Paga-por Cliente
 Evitar mostrar associações deriváveis ou redundantes
 Para saber se a venda foi paga, calcular troco, e imprimir
 É mais importante identificar conceitos do que
recibo
associações
 Associações demais tendem a confundir um modelo ao  Catálogo-Produto Contém Especificação-Item
invés de iluminá-lo  Para obter a especificação de um item, dado um UPC

Aplicando o Checklist Aplicando o Checklist


Categoria Exemplos Categoria Exemplos
A é uma parte física de B N.A. A é um membro de B Operador - Loja

A é uma parte lógica de B Item de Venda - Venda A é uma sub-unidade N.A.


organizacional de B

A está fisicamente contido em B POST - Loja A usa ou gerencia B Operador - POST


Item - Loja Gerente - POST
A está logicamente contido em B Especificação-Produto - Catálogo A se comunica com B Cliente - Operador
Catálogo - Loja
A é uma descrição de B Especificação-Produto - Item A está relacionado com uma Cliente - Pagamento
transação B
Operador - Pagamento
A é um item de uma transação ou Item de Venda - Venda A é uma transação relacionada Pagamento - Venda
relatório B com outra transação B

A é conhecido/registrado/repor- Venda (corrente) - POST A é possuído por B POST - Loja


tado/capturado em B
Venda (completada) - Loja

19
Eliminando Associações
Preservando Associações de
Redundantes
Compreensão
 Preservar apenas associações de conhecimento pode
Associação Consideração resultar num modelo que não transmite um completo
Venda Iniciada-por Operador Conhecimento não exigido nos entendimento do domínio
requisitos; derivável da associação
Operador Registra-vendas-em POST.  Ex.: Venda Iniciada-por Cliente
Operador Registra-vendas-em POST Conhecimento não exigido nos  Remoção deixa de fora um aspecto importante do domínio— o fato
requisitos. de que um cliente gera uma venda
POST Inicializado-por Gerente Conhecimento não exigido nos
requisitos.
Venda Iniciada-por Cliente Conhecimento não exigido nos
requisitos.  Regra geral:
Loja Armazena Item Conhecimento não exigido nos
requisitos.
 Enfatizar associações de conhecimento, mas preservar
Item de Venda Registra-venda-de Item Conhecimento não exigido nos
associações que enriquecem o entendimento do domínio
requisitos.

Identificação dos
Relacionamentos Identificando Generalizações
 Na perspectiva de implementação representa • Quando particionar em Sub-Classes
um canal de comunicação entre duas classes  a sub-classe tem atributos adicionais de interesse
 A necessidade desse canal é dada pelos  a sub-classe tem associações adicionais de
diagramas de interação. Sempre que existir interesse
uma mensagem trocada entre dois objetos  a sub-classe será manipulada ou usada de maneira
diferente da super-classe ou das outras sub-classes
nesses diagramas existirá uma associação
entre eles, que representa as responsabilidades  a sub-classe se comporta diferente da super-classe
ou das outras sub-classes
das classes.

Identificando Generalizações Identificando Generalizações


• Quando criar uma Super-Classe
 as potenciais sub-classes representam variações de
um conceito similar
 as sub-classes satisfazem 100% a regra
``is-a''
 todas as sub-classes possuem um atributo comum
que poderá ser expresso na super-classe
 todas as sub-classes possuem uma associação
comum que poderá ser relacionada à super-classe

20
Identificando Agregações Identificando Agregações
 Verificar se algumas classes podem ser  Verificar se alguma classe pode ser sub-
agrupadas em algum composto: dividida em partes.
 elas são geralmente criadas/destruídas no  as partes possuem tempo de vida limitado ao
mesmo instante. tempo de vida do composto
 possuem relacionamentos comuns  possuem relacionamentos particulares e de
interesse

Exemplo de um modelo conceitual


Records-sale-of
Referências
Described-by
1
• Boock, G. and Rumbaugh, J. The Unified Modeling Language User
Product
Product Specification Guide . Addison-Wesley, 1999
Catalog Contains
1 1.. *
description • Arlow, J. and Neustadt, I. UML 2 and the Unified Process: Practical
price
UPC
Object-Oriented Analysis and Design, 2nd Edition, The Addison-
0..1
1
Used-by
Wesley Object Technology Series, 2005.
* Describes
• Rumbaugh, J.; Jacobson, I. and Booch , G. The Unified Modeling
Sales * *
LineItem Store
Item
Language Reference Manual, 2nd Edition, The Addison-Wesley Object
/quantity 1 address 1
Stocks
1..*
Technology Series, 2004.
name * • Boock, G.; Rumbaugh, J. and Jacobson, I; Unified Modeling Language
*
1..
Logs- 1 User Guide, 2nd Edition, The Addison-Wesley Object Technology
Contained-in
completed
Houses
Series, 2005.
1 6 1.. *
• Jacobson, I; Boock, G. and Rumbaugh, J., Unified Software
Sale * POST
Development Process, Addison-Wesley, Janeiro 1999.
Manager
Started-by
date
1 1 • Larman, C. Applying UML and Patterns: An Introduction to Object-
Oriented Analysis and Design Prentice-Hall, New Jersey - USA, 1997
Captured-on
time 1 1

1
1
1 • Bezerra, E. Princípios de Análise e Projeto com a UML, ed. Campus-
Elsevier. 2003.
Paid-by Initiated-by 3 Records-sales-on
1 1 1

Payment Customer Cashier

amount

21

Você também pode gostar