Orientação a Objetos
com UML
Elementos básicos de OO em UML
Copyright © 2006 Qualiti. Todos os direitos reservados.
Objeto
Classe
Atributo
Operação
Interface
Componente
Pacote
Subsistema
Relacionamentos
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 2
: Conta
Apenas o nome da
classe
contaSaque :
Conta
contaSaque
Apenas o nome do
objeto
Nome da classe e do
objeto
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 3
Copyright © 2006 Qualiti. Todos os direitos reservados.
Objeto em UML
Classe em UML
• O que deve ser modelado por uma classe?
• O que é abstração e modularidade?
Nome da Classe
Atributos
Operações
Conta
numero
saldo
credito()
debito()
getSaldo()
getNumero()
estrutura
comportamento
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 4
Copyright © 2006 Qualiti. Todos os direitos reservados.
Conta
Marcações de acesso podem ser usadas para
especificar o tipo de acesso permitido aos
atributos e operações
+
#
-
público
protegido
privado
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 5
Copyright © 2006 Qualiti. Todos os direitos reservados.
Visibilidade
Interfaces definem um tipo
especificando apenas a assinatura de
seus métodos
Interfaces não possuem atributos e
seus métodos não têm corpo
Classes, subsistemas e componentes
implementam interfaces
- provêem implementação para os métodos
especificados em uma interface
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 6
Copyright © 2006 Qualiti. Todos os direitos reservados.
Interface
Exemplo: Independência do meio
de armazenamento
Copyright © 2006 Qualiti. Todos os direitos reservados.
Isolando as coleções de negócio de mudanças na
coleção de dados correspondente
CadastroContas
<<interface>>
RepositorioContas
RepositorioContasBDR
RepositorioContasOO
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 7
Interface em UML:
notação alternativa
RepositorioContasOO
RepositorioContas
RepositorioContasXML
Relacionamentos
de realização
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 8
Copyright © 2006 Qualiti. Todos os direitos reservados.
RepositorioContasBDR
Classes, Interfaces e Classes
Abstratas
• Assinaturas dos métodos
Classes
• Atributos
• Métodos
Classes Abstratas
• Atributos
• Métodos
• Assinatura de Métodos
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 9
Copyright © 2006 Qualiti. Todos os direitos reservados.
Interfaces
Arquivo fonte
<<EXE>>
Arquivo
executável
<<DLL>>
Componente
Interface do
Componente
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 10
Copyright © 2006 Qualiti. Todos os direitos reservados.
Componente em UML
Mecanismo para organizar elementos em grupos
Facilita entendimento do sistema
Favorece modularidade e reuso em larga escala
Essencial para estruturar sistemas complexos
nome do
pacote
nome do
pacote
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 11
Copyright © 2006 Qualiti. Todos os direitos reservados.
Pacote
Realização
Subsistema
<<subsystem>>
Interface
Nome do subsistema
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 12
Copyright © 2006 Qualiti. Todos os direitos reservados.
Subsistema em UML
Subsistemas e Componentes
Projeto
<<subsystem>>
Nome do
subsistema
Implementação
Nome do
componente
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 13
Copyright © 2006 Qualiti. Todos os direitos reservados.
Ambos encapsulam um
comportamento modelado
por interfaces
Subsistemas representam
componentes no modelo de
projeto
Componentes são a
realização física dos
subsistemas
Relacionamentos
Associação
Copyright © 2006 Qualiti. Todos os direitos reservados.
- simples
- agregação
- composição
Dependência
Generalização
Realização
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 14
Associação
Relação estrutural entre classes
Pessoa
trabalha
Copyright © 2006 Qualiti. Todos os direitos reservados.
Nome da associação
Empresa
Associação
Papéis
Classe
Pessoa
Empresa
Empregado Empregador
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 15
Tipo especial de associação
Relacionamento todo-parte
O todo possui um nível de abstração maior que
a parte
Todo
Parte
Empresa
Departamento
Agregação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 16
Copyright © 2006 Qualiti. Todos os direitos reservados.
Agregação
Tipo especial de agregação
Relação de posse mais forte
O todo é responsável pela criação da parte
A parte não vive sem o todo
Não permite compartilhamento
Todo
Parte
Empresa
Departamento
Composição
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 17
Copyright © 2006 Qualiti. Todos os direitos reservados.
Composição
Dependência
Relacionamento não estrutural (uso)
mais fraco que associação
Uma dependência entre dois elementos indica
que mudança em um elemento pode causar
mudanças no outro
LeitoraCartao
lerCartao (cartao)
Cartão
Relacionamento
de Dependência
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 18
Copyright © 2006 Qualiti. Todos os direitos reservados.
-
Pode existir relacionamento de
dependência entre vários elementos de
UML
Classe
Cliente
Pacote
PacoteCliente
Componente
Fornecedor
Cliente
PacoteFornecedor
Fornecedor
Dependência
Fonte: Rational
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 19
Copyright © 2006 Qualiti. Todos os direitos reservados.
Dependência
Multiplicidade define quantos
objetos participam do
relacionamento
- O número de instâncias de uma classe
relacionadas a uma instância de outra classe
- Especificado em cada uma das pontas da
associação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 20
Copyright © 2006 Qualiti. Todos os direitos reservados.
Multiplicidade
Tipos de Multiplicidade
Não especificada
Zero ou mais
Muitos (mesmo que 0..*)
Um ou mais
Zero ou um
Intervalo determinado
Valores múltiplos
1
Copyright © 2006 Qualiti. Todos os direitos reservados.
Exatamente um
0..*
*
1..*
0..1
2..4
2, 4..6
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 21
Multiplicidade
Empresa
1
1..*
Pessoa
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 22
Copyright © 2006 Qualiti. Todos os direitos reservados.
Exemplo: Multiplicidade
Navegação
Associações e agregações são
bidirecionais por default, mas é
desejável que a navegação seja
restringida a apenas uma direção
Associações bidirecionais são mais
difíceis de implementar
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 23
Copyright © 2006 Qualiti. Todos os direitos reservados.
Especifica a direção da associação
Empresa
1
1..*
Pessoa
Navegação
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 24
Copyright © 2006 Qualiti. Todos os direitos reservados.
Exemplo: Navegação
Relacionamento entre classes onde uma classe
compartilha a estrutura (atributos e
relacionamentos) e comportamento (operações)
de outras classes
Define uma hierarquia de abstrações
Relacionamento “é um tipo de” (is-a-kind-of)
- Herança comportamental (behavioural inheritance)
- Referência clássica: A behavioral notion of subtyping
(Liskov & Wing)
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 25
Copyright © 2006 Qualiti. Todos os direitos reservados.
Generalização
Generalização
Uma subclasse pode
-
Copyright © 2006 Qualiti. Todos os direitos reservados.
- adicionar atributos, operações e
relacionamentos
redefinir operações herdadas
Tipos de herança: simples e
múltipla
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 26
Herança Simples
Classes herdando de apenas uma outra classe
Superclasse
(pai)
Subclasses
cor
largura da linha
desenhar()
girar(graus)
selecionar()
Círculo
raio
centro
desenhar()
Relacionamento
de Generalização
Retângulo
vertices
desenhar()
diagonal()
Quadrado
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 27
Copyright © 2006 Qualiti. Todos os direitos reservados.
Figura
Herança Múltipla
Mamífero
AnimalVoador
Herança
múltipla
Cachorro
Gato
Morcego
Passarinho
Gaviao
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 28
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classes herdando de mais de uma classe
O que acontece quando as superclasses
possuem o mesmo método (métodos
com o mesmo nome?
O que acontece quando se tenta
executar um método que não está
definido na subclasse? Em que
hierarquia de superclasses deve-se
procurar o método?
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 29
Copyright © 2006 Qualiti. Todos os direitos reservados.
Herança Múltipla
Realização
Exemplos:
Classe
Subsistema
Componente
Realização
Caso de uso
Realização de Caso de uso
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 30
Copyright © 2006 Qualiti. Todos os direitos reservados.
Indica que um elemento serve como contrato que o
outro deve seguir
Defina uma arquitetura simplificada
de uma aplicação bancária, com:
- Pelo menos 2 tipos de conta (corrente,
poupança) e um cadastro de contas
- Cliente e um cadastro de clientes
- Operações para criar, remover, debitar,
creditar, transferir, ...
- Adoção do padrão fachada
Qualiti Software Processes
Análise e Projeto OO com UML para Sistemas RT| 31
Copyright © 2006 Qualiti. Todos os direitos reservados.
Exercício - Arquitetura
Estereótipos
Notas
Propriedades (Tagged values)
Restrições
OCL (Object Constraint Language)
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 32
Copyright © 2006 Qualiti. Todos os direitos reservados.
Mecanismos adicionais de UML
Mecanismo utilizado para estender os
elementos de UML
Define um novo modelo de elemento em
termos de outro já existente
Como
-
criando um novo ícone
utilizando a notação <<novo_elemento>>
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 33
Copyright © 2006 Qualiti. Todos os direitos reservados.
Estereótipos
Estereótipos - Exemplo
<<boundary>>
ClasseFronteira
ClasseFronteira
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 34
Copyright © 2006 Qualiti. Todos os direitos reservados.
Classes de fronteira:
Notas
-
Pode ser afixionada a qualquer elemento de UML
Pode ser ligada a um elemento com uma linha tracejada
Exemplo:
LeitorCartao
Esta classe é uma abstração
do dispositivo de hardware
que será usado para ler
efetivamente as informações
do cartão magnético.
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 35
Copyright © 2006 Qualiti. Todos os direitos reservados.
Anotação utilizada para adicionar
informação a diagramas
Servem para estender elementos UML,
adicionando informações sobre eles
Exemplos já definidos em UML:
-
Persistence
Location (ex: no cliente, no servidor)
Você pode criar suas próprias propriedades
Cliente
{persistence}
LeitorCartao
{location=server}
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 36
Copyright © 2006 Qualiti. Todos os direitos reservados.
Propriedades (Tagged Values)
Usadas para criação de novas regras
sobre elementos do modelo
Ou modificação de regras existentes
funcionários
Pessoa
1..*
1
Empresa
{subset}
diretores
3
1
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 37
Copyright © 2006 Qualiti. Todos os direitos reservados.
Restrições
É uma linguagem usada para definir
restrições sobre elementos do modelo
ou modificação de restrições existentes
- Invariantes de classe
- Pré e pós-condições de operações
context Empresa
inv diretoresNecessarios:
self.diretor->size() == 3
Empresa
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 38
Copyright © 2006 Qualiti. Todos os direitos reservados.
OCL (Object Constraint
Language)
Diagramas de UML usados no curso
(apresentados sob demanda)
- Casos de uso
- Classes
- Sequência
- Comunicação (Colaboração)
- Pacotes
- Componentes (usado em SOA)
Qualiti Software Processes
Análise e Projeto OO com UML e Padrões| 39
Copyright © 2006 Qualiti. Todos os direitos reservados.
Diagramas UML
Processos e Padrões
Orientação a objetos e DBC são paradigmas
promissores, mas
Copyright © 2006 Qualiti. Todos os direitos reservados.
- Reuso
- Extensibilidade
- Escalabilidade ...
exigem
- Processos
- Técnicas
- Disciplina
- Experiências anteriores de sucesso (padrões)!
Qualiti Software Processes
40
Download

Aula2-OOeUML - Centro de Informática da UFPE