Orientação a Objetos
com 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
: Conta
Apenas o nome da
classe
contaSaque :
Conta
contaSaque
Apenas o nome do
objeto
Nome da classe e do
objeto
Análise e Projeto OO com
UML e Padrões| 3
Classe em UML
Conta
• 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
Análise e Projeto OO com
UML e Padrões| 4
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
CadastroContas
<<interface>>
RepositorioContas
RepositorioContasBDR
RepositorioContasOO
Análise e Projeto OO com
UML e Padrões| 7
Interface em UML:
notação alternativa
RepositorioContasBDR
RepositorioContasOO
RepositorioContas
RepositorioContasXML
Relacionamentos
de realização
Análise e Projeto OO com
UML e Padrões| 8
Classes, Interfaces e Classes
Abstratas
Interfaces
• Assinaturas dos métodos
Classes
• Atributos
• Métodos
Classes Abstratas
• Atributos
• Métodos
• Assinatura de Métodos
Análise e Projeto OO com
UML e Padrões| 9
Componente em UML
Arquivo fonte
<<EXE>>
Arquivo
executável
<<DLL>>
Componente
Interface do
Componente
Análise e Projeto OO com
UML e Padrões| 10
Pacote
•
•
•
•
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
Análise e Projeto OO com
UML e Padrões| 11
Subsistema em UML
Realização
Subsistema
<<subsystem>>
Interface
Nome do subsistema
Análise e Projeto OO com
UML e Padrões| 12
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
Projeto
<<subsystem>>
Nome do
subsistema
Implementação
Nome do
componente
Análise e Projeto OO com
UML e Padrões| 13
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
Nome da associação
Pessoa
trabalha
Empresa
Associação
Papéis
Classe
Pessoa
Empresa
Empregado Empregador
Análise e Projeto OO com
UML e Padrões| 15
Agregação
• 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
Análise e Projeto OO com
UML e Padrões| 16
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
Todo
Parte
Empresa
Departamento
Composição
Análise e Projeto OO com
UML e Padrões| 17
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
Análise e Projeto OO com
UML e Padrões| 18
Dependência
• 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
Análise e Projeto OO com
UML e Padrões| 19
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
1
0..*
*
1..*
0..1
2..4
2, 4..6
Análise e Projeto OO com
UML e Padrões| 21
Exemplo: Multiplicidade
Multiplicidade
Empresa
1
1..*
Pessoa
Análise e Projeto OO com
UML e Padrões| 22
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
Empresa
1
1..*
Pessoa
Navegação
Análise e Projeto OO com
UML e Padrões| 24
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
Figura
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
Análise e Projeto OO com
UML e Padrões| 27
Herança Múltipla
• Classes herdando de mais de uma classe
Mamífero
AnimalVoador
Herança
múltipla
Cachorro
Gato
Morcego
Passarinho
Gaviao
Análise e Projeto OO com
UML e Padrões| 28
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:
Classe
Subsistema
Componente
Realização
Caso de uso
Realização de Caso de uso
Análise e Projeto OO com
UML e Padrões| 30
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
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| 32
Download

Aula2-OOeUML - Centro de Informática da UFPE