Orientação a Objetos com UML. Elementos básicos de OO em UML Objeto Classe Atributo Operação...

40
Orientação a Objetos com UML

Transcript of Orientação a Objetos com UML. Elementos básicos de OO em UML Objeto Classe Atributo Operação...

Page 1: 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.

Orientação a Objetoscom UML

Page 2: 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.

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

Page 3: 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.

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

Page 4: 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.

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?

Page 5: 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.

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

Page 6: 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.

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

Page 7: 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.

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

Page 8: 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.

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

Page 9: 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.

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

Page 10: 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.

Componente em UML

Análise e Projeto OO com UML e Padrões| 10

Interface doComponente

Arquivo fonte<<DLL>>

Componente<<EXE>>Arquivo

executável

Page 11: 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.

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

Page 12: 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.

Subsistema em UML

Análise e Projeto OO com UML e Padrões| 12

Subsistema

Interface

Realização

<<subsystem>>

Nome do subsistema

Page 13: 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.

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

Page 14: 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.

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

Page 15: 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.

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

Page 16: 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.

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

Page 17: 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.

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

Page 18: 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.

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

Page 19: 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.

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

Page 20: 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.

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

Page 21: 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 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

Page 22: 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.

Exemplo: Multiplicidade

Análise e Projeto OO com UML e Padrões| 22

PessoaEmpresa

Multiplicidade

1..*1

Page 23: 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.

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

Page 24: 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.

Exemplo: Navegação

Análise e Projeto OO com UML e Padrões| 24

PessoaEmpresa

Navegação

1..*1

Page 25: 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.

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

Page 26: 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.

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

Page 27: 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.

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

Page 28: 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.

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

Page 29: 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.

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

Page 30: 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.

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

Page 31: 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.

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

Page 32: 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.

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

Page 33: 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.

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

Page 34: 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.

Estereótipos - Exemplo

• Classes de fronteira:

Análise e Projeto OO com UML e Padrões| 34

ClasseFronteira

<<boundary>>ClasseFronteira

Page 35: 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.

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.

Page 36: 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.

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}

Page 37: 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.

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

Page 38: 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.

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

Page 39: 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.

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

Page 40: 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.

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