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

Post on 07-Apr-2016

260 views 26 download

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

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