Orientação a Objetoscom UML
Elementos básicos de OO em UML• Objeto• Classe• Atributo• Operação• Interface• Componente• Pacote• Subsistema• Relacionamentos• Vários tipos de diagrama
Análise e Projeto OO com UML e Padrões| 2
Objeto em UML
Análise e Projeto OO com UML e Padrões| 3
: Conta
contaSaque :Conta
contaSaqueApenas o nome daclasse
Apenas o nome doobjeto
Nome da classe e doobjeto
Classe em UML
Análise e Projeto OO com UML e Padrões| 4
Conta
Nome da Classe Conta
Atributos Operações
numerosaldo
credito()debito()getSaldo()getNumero()
estrutura
comportamento
• O que deve ser modelado por uma classe?• O que é abstração e modularidade?
Visibilidade
• Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações
+ público # protegido - privado
Análise e Projeto OO com UML e Padrões| 5
Interface
• 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• Idealmente, interfaces deveriam prover contratos
Análise e Projeto OO com UML e Padrões| 6
Exemplo: Independência do meio de armazenamento
• Isolando as coleções de negócio de mudanças na coleção de dados correspondente
Análise e Projeto OO com UML e Padrões| 7
RepositorioContasBDR RepositorioContasOO
CadastroContas
<<interface>>RepositorioContas
Interface em UML: notação alternativa
Análise e Projeto OO com UML e Padrões| 8
RepositorioContas
Relacionamentos de realização
RepositorioContasOO
RepositorioContasXML
RepositorioContasBDR
Classes, Interfaces e Classes Abstratas
Análise e Projeto OO com UML e Padrões| 9
Classes
• Atributos• Métodos
Classes Abstratas
• Atributos• Métodos• Assinatura de Métodos
Interfaces
• Assinaturas dos métodos
Componente em UML
Análise e Projeto OO com UML e Padrões| 10
Interface doComponente
Arquivo fonte<<DLL>>
Componente<<EXE>>Arquivo
executável
Pacote• Mecanismo para organizar elementos em grupos• Facilita entendimento do sistema• Favorece modularidade e reuso em larga escala• Essencial para estruturar sistemas complexos
Análise e Projeto OO com UML e Padrões| 11
nome do pacote
nome do pacote
Subsistema em UML
Análise e Projeto OO com UML e Padrões| 12
Subsistema
Interface
Realização
<<subsystem>>
Nome do subsistema
Subsistemas e Componentes
• Ambos encapsulam um comportamento modelado por interfaces
• Subsistemas representam componentes no modelo de projeto
• Componentes são a realização física dos subsistemas
Análise e Projeto OO com UML e Padrões| 13
Projeto
Implementação
Nome do componente
<<subsystem>>Nome do subsistema
Relacionamentos
• Associação– simples– agregação– composição
• Dependência • Generalização• Realização
Análise e Projeto OO com UML e Padrões| 14
Associação• Relação estrutural entre classes
Análise e Projeto OO com UML e Padrões| 15
Pessoa
Pessoa Empresa
Empresa
trabalha
Associação
Nome da associação
Classe
Empregado Empregador
Papéis
Agregação• Tipo especial de associação• Relacionamento todo-parte• O todo possui um nível de abstração maior que
a parte
Análise e Projeto OO com UML e Padrões| 16
DepartamentoEmpresa
Todo Parte
Agregação
Composiçã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
Análise e Projeto OO com UML e Padrões| 17
DepartamentoEmpresa
Todo Parte
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
Análise e Projeto OO com UML e Padrões| 18
CartãoLeitoraCartao
lerCartao (cartao) Relacionamentode Dependência
Dependência
• Pode existir relacionamento de dependência entre vários elementos de UML
Análise e Projeto OO com UML e Padrões| 19
Classe
Pacote
PacoteFornecedor
ComponenteFornecedorCliente
PacoteClienteDependência
Fonte: Rational
FornecedorCliente
Multiplicidade
• 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
Análise e Projeto OO com UML e Padrões| 20
Tipos de Multiplicidade
• Não especificada• Exatamente um• Zero ou mais• Muitos (mesmo que 0..*)• Um ou mais• Zero ou um• Intervalo determinado• Valores múltiplos
Análise e Projeto OO com UML e Padrões| 21
1
0..*
*
1..*
0..1
2..4
2, 4..6
Exemplo: Multiplicidade
Análise e Projeto OO com UML e Padrões| 22
PessoaEmpresa
Multiplicidade
1..*1
Navegação
• Especifica a direção da associaçã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 e acoplam o modelo
Análise e Projeto OO com UML e Padrões| 23
Exemplo: Navegação
Análise e Projeto OO com UML e Padrões| 24
PessoaEmpresa
Navegação
1..*1
Generalizaçã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)
Análise e Projeto OO com UML e Padrões| 25
Generalização
• Uma subclasse pode – adicionar atributos, operações e
relacionamentos– redefinir operações herdadas
• Tipos de herança: simples e múltipla
Análise e Projeto OO com UML e Padrões| 26
Herança Simples
• Classes herdando de apenas uma outra classe
Análise e Projeto OO com UML e Padrões| 27
Círculoraiocentrodesenhar()
Retânguloverticesdesenhar()diagonal()
Figuracorlargura da linhadesenhar()girar(graus)selecionar()
Subclasses
Superclasse(pai)
Relacionamentode Generalização
Quadrado
Herança Múltipla
• Classes herdando de mais de uma classe
Análise e Projeto OO com UML e Padrões| 28
Mamífero AnimalVoadorHerançamúltipla
Cachorro Gato Morcego Passarinho Gaviao
Herança Múltipla
• 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?
Análise e Projeto OO com UML e Padrões| 29
Realização• Indica que um elemento serve como contrato que o outro deve
seguir
Exemplos:
Análise e Projeto OO com UML e Padrões| 30
Realização
SubsistemaClasse
Caso de uso
Componente
Realização de Caso de uso
Exercício - Arquitetura• 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
Análise e Projeto OO com UML para Sistemas RT| 31
Mecanismos adicionais de UML
• Estereótipos• Notas• Propriedades (Tagged values)• Restrições• OCL (Object Constraint Language)
Análise e Projeto OO com UML e Padrões| 32
Estereótipos
• 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>>
Análise e Projeto OO com UML e Padrões| 33
Estereótipos - Exemplo
• Classes de fronteira:
Análise e Projeto OO com UML e Padrões| 34
ClasseFronteira
<<boundary>>ClasseFronteira
Notas
• Anotação utilizada para adicionar informação a diagramas– Pode ser afixionada a qualquer elemento de UML – Pode ser ligada a um elemento com uma linha tracejada
Exemplo:
Análise e Projeto OO com UML e Padrões| 35
LeitorCartao
Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético.
Propriedades (Tagged Values)
• 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
Análise e Projeto OO com UML e Padrões| 36
Cliente{persistence}
LeitorCartao {location=server}
Restrições• Usadas para criação de novas regras sobre
elementos do modelo• Ou modificação de regras existentes
Análise e Projeto OO com UML e Padrões| 37
Pessoa Empresa{subset}
funcionários
diretores
1..* 1
3 1
OCL (Object Constraint Language)• É 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
Análise e Projeto OO com UML e Padrões| 38
Empresacontext Empresainv diretoresNecessarios:self.diretor->size() == 3
Diagramas UML
• Diagramas de UML usados no curso (apresentados sob demanda)– Casos de uso– Classes– Sequência– Comunicação (Colaboração)– Pacotes– Estados– Componentes (usado em SOA)
Análise e Projeto OO com UML e Padrões| 39
Processos e Padrões• Orientação a objetos e DBC são paradigmas
promissores, mas – Reuso– Extensibilidade – Escalabilidade ...
exigem– Processos– Técnicas– Disciplina– Experiências anteriores de sucesso (padrões)!
40