Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos...

Post on 07-Apr-2016

217 views 1 download

Transcript of Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos...

Visão Geral de Orientação a Objetos

com UML

OO e UML | 2

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ObjetivosApresentar os princípios do paradigma de orientação a objetosApresentar os conceitos de orientação a objetos com a notação UML correspondenteFoco em aspectos estruturais: diagramas de classes

OO e UML | 3

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Princípios básicos de OORepresentação agrupa dados e operações relacionadas (objetos e classes)Dados usualmente protegidos contra acesso indevido: objetos se comunicam através de mensagensPela própria natureza, objetos podem ser distribuídosPotencialmente, embutem características como Abstração Encapsulamento information hiding modularidade Extensibilidade (herança) Polimorfismo

OO e UML | 4

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Abstração

cliente

animal

automóvel

mapa

OO e UML | 5

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

AbstraçãoConstrução de um modelo para representação de uma realidade

Concentração nas características essenciais, gerenciando complexidade

OO e UML | 6

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

AbstraçãoConstrução de um modelo para a

realidade

Automovelmodelopreco...atualizaPreco()...

OO e UML | 7

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Encapsulamento e Information hiding

Exemplos de encapsulamento usados no nosso “dia-a-dia”

OO e UML | 8

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

EncapsulamentoAgrupa elementos relacionados em uma unidade sintática (cápsula, módulo, classe, pacote, ...)

OO e UML | 9

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Information hidingElimina dependência de implementação, escondendo-a do clienteUso de interfacesMudanças internas não têm impacto sobre os clientesImplementado via mecanismos de controle de visibilidade Ex.: elementos privados em classes

Java

OO e UML | 10

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Número Saldo

21.342-7 875,32

Crédito

Débito

Exemplo: objeto conta bancária

Encapsulamentoagregação de

elementos

Information hidingocultamento de

elementos

OO e UML | 11

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Modularidade

OO e UML | 12

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ModularidadeDecomposição de um problema em partes menores, para gerenciar complexidadeCada conceito independente deve ser representado por um móduloConstrução de módulos desacoplados e coesosDividir para conquistar ...

OO e UML | 13

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Extensibilidade (Herança)

Figura

RetânguloTriângulo

Polígono

ContaEspecialPoupança

Conta

OO e UML | 14

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Extensibilidade (Herança)Criação de hierarquias de abstraçãoBase conceitual para permitir extensibilidade do softwareReuso de código e comportamento (subtipo)Herança comportamental (behavioural inheritance)Referência clássica: A behavioral notion of subtyping (Liskov & Wing)

OO e UML | 15

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exemplo: objeto poupança

Número Saldo

21.342-7 875,32

Crédito

Débito

R. Juros

OO e UML | 16

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

PolimorfismoLinguagens polimórficas permitem que valores e identificadores (variáveis e operações) possuam mais de um tipoHá vários tipos de polimorfismo: Paramétrico, de inclusão, overloading e

coerção Referência clássica: On understanding types, data abstraction and polymorphism (Cardelli & Wegner)

OO e UML | 17

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Polimorfismo de inclusão Herança define polimorfismo Objeto da subclasse usado no lugar

do objeto da classe Exemplo: uso de poupança em

contextos onde contas são esperadas

Interfaces também definem polimorfismo Reuso de tipo, mas não de código

OO e UML | 18

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Polimorfismo real ou paramétrico

Forma mais pura de polimorfismoO mesmo objeto ou operação usada uniformemente em diferentes contextos (tipos só determinados em tempo de execução)Exemplo: generics em Java 1.5

OO e UML | 19

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Polimorfismo via overloading e coerção

Overloading permite o uso do mesmo nome para elementos semânticos Exemplo: métodos ou construtores

em JavaCoerção é semelhante, mas inclui conversão implícita de tipos Exemplo: soma envolvendo um

operando inteiro e outro real

OO e UML | 20

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Conceitos básicos de OOObjetoClasseAtributoOperaçãoInterfaceComponentePacoteSubsistemaRelacionamentos

OO e UML | 21

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ObjetoModelo de um objeto real entidade física, conceitual ou

de softwarePossui comportamento, estado e identidadeExemplo: objetos conta e poupança apresentados

donut

OO e UML | 22

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Objeto em UML

: Conta

contaSaque :Conta

contaSaqueApenas o nome daclasse

Apenas o nome doobjeto

Nome da classe e doobjeto

OO e UML | 23

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ClasseDescrições de objetos com propriedades e comportamento comunsAbstração que enfatiza o que é relevante suprime o que não

interessa Classes são fábricas de objetosObjetos são agrupados em classes

OO e UML | 24

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classe de Contas Bancárias

OO e UML | 25

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classes de ObjetosQuantas classes temos aqui?

Fonte: Rational

OO e UML | 26

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classe em UML

Conta

Nome da Classe Conta

Atributos Operações

numerosaldo

credito()debito()getSaldo()getNumero()

estrutura

comportamento

OO e UML | 27

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

AtributoPropriedades de um objetoArmazenam estado dos objetos

númerosaldo

OO e UML | 28

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Atributo em UML

: Conta

numero = 23.025-1saldo = 500,00

: Conta

numero = 21.342-7saldo = 875,32

Conta

numero: Stringsaldo: Real

Valor do Atributo

Objeto

OO e UML | 29

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

OperaçãoModela comportamento das classesServiços que os objetos oferecem a outros objetos

númerosaldo

creditar debitar

getNumero

OO e UML | 30

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Operação em UML

Conta

credito(valor:Real)debito(valor:Real)getSaldo(): RealgetNumero(): String

Especificação das operações

OO e UML | 31

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classes: visibilidade

Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações

+ público # protegido - privado

OO e UML | 32

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Visibilidade no Rose

Pessoanome : Stringcpf : Stringtelefone : String

incluir()consultar()atualizar()

público

privado

protegido

OO e UML | 33

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

InterfaceInterfaces formalizam polimorfismo com implementações independentesAumentam o nível de reusabilidadeViabilizam o uso de componentesReduzem o esforço de evolução da aplicação

OO e UML | 34

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

InterfaceInterfaces definem um tipo especificando apenas a assinatura de seus métodosInterfaces não possuem atributos e seus métodos não têm corpo

Classes implementam interfaces provêem implementação para os métodos

especificados em uma interface

OO e UML | 35

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exemplo: Independência do meio de armazenamento

Isolando as coleções de negócio de mudanças na coleção de dados correspondente

RepositorioContasBDR RepositorioContasOO

CadastroContas

<<interface>>RepositorioContas

OO e UML | 36

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Interface em UML: notação alternativa

RepositorioContas

Relacionamentos de realização

RepositorioContasOO

RepositorioContasXML

RepositorioContasBDR

OO e UML | 37

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classe abstrataClasse abstrata é aquela que não possui instânciaEm geral, possui pelo menos um método abstratoMétodos abstratos não têm corpo subclasses não abstratas são obrigadas

a fornecer uma implementação para eles

OO e UML | 38

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classes, Interfaces e Classes Abstratas

Classes

• Atributos• Métodos

Classes Abstratas

• Atributos• Métodos• Assinatura de Métodos

Interfaces

• Assinaturas dos métodos

OO e UML | 39

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Classes abstratas x Interfaces

Herança de tipos x herança de códigoClasses descrevem propriedades fundamentais de um objetoInterfaces descrevem papéis desempenhados por um objeto em determinadas situaçõesInterfaces são úteis para implementar herança múltipla

OO e UML | 40

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ComponenteParte não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) interface(s)Exemplos um código fonte um componente de tempo de execução

um componente executável

OO e UML | 41

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Componente em UML

Interface doComponente

Arquivo fonte<<DLL>>

Componente<<EXE>>Arquivo

executável

OO e UML | 42

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

PacoteMecanismo para organizar elementos em gruposFacilita entendimento do sistemaFavorece modularidade e reuso em larga escalaEssencial para estruturar sistemas complexos

nome do pacote

OO e UML | 43

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Coesão e AcoplamentoAcoplamento é a medida de quão conectadas duas classes são cuidado com herançaCoesão é a medida de quão auto-contida uma classe é

Sistemas devem ter baixo acoplamento e alta coesão bom para manutenção

OO e UML | 44

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

SubsistemaUnião de pacote (agrupa outros elementos) classe (comportamento)

Realiza uma ou mais interfaces, que definem o seu comportamento

OO e UML | 45

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Subsistema em UML

Subsistema

Interface

Realização

<<subsystem>>

Nome do subsistema

OO e UML | 46

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Subsistemas e Componentes

Ambos encapsulam um comportamento modelado por interfacesSubsistemas representam componentes no modelo de projetoComponentes são a realização física dos subsistemas

Projeto

Implementação

Nome do componente

<<subsystem>>Nome do subsistema

OO e UML | 47

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

RelacionamentosAssociação simples agregação composiçãoDependência GeneralizaçãoRealização

OO e UML | 48

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

AssociaçãoRelação estrutural entre classes

Pessoa

Pessoa Empresa

Empresa

trabalha

Associação

Nome da associação

Classe

Empregado Empregador

Papéis

OO e UML | 49

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

AgregaçãoTipo especial de associaçãoRelacionamento todo-parteO todo possui um nível de abstração maior que a parte

DepartamentoEmpresa

Todo Parte

Agregação

OO e UML | 50

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

ComposiçãoTipo especial de agregaçãoRelação de posse mais forteO todo é responsável pela criação da parteA parte não vive sem o todoNão permite compartilhamento

DepartamentoEmpresa

Todo Parte

Composição

OO e UML | 51

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Associação x Agregação x Composição

Como você modelaria: Dependente e Funcionário? Pedido e Item do pedido? Funcionário e Cartão de ponto? Carro, Roda, Direção e Carburador?

Na dúvida, use agregação!

Na dúvida, use associação!

OO e UML | 52

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

DependênciaRelacionamento 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

CartãoLeitoraCartao

lerCartao (cartao) Relacionamentode Dependência

OO e UML | 53

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

DependênciaPode existir relacionamento de dependência entre vários elementos de UML

Classe

Pacote

PacoteFornecedor

ComponenteFornecedorCliente

PacoteClienteDependência

Fonte: Rational

FornecedorCliente

OO e UML | 54

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exercício - Relacionamentos

Modele os relacionamentos existentes entre as classes abaixo:

Universidade Departamento

Aluno Disciplina Professor

Curso

Turma

OO e UML | 55

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Multiplicidade

Multiplicidade define quantos objetos participam do relacionamento O número de instâncias de uma classe

relacionada a uma instância de outra classe

Especificado em cada uma das pontas da associação

OO e UML | 56

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Tipos de MultiplicidadeNão especificadaExatamente umZero ou maisMuitos (mesmo que 0..*)Um ou maisZero ou umIntervalo determinadoValores múltiplos

1

0..*

*

1..*

0..1

2..4

2, 4..6

OO e UML | 57

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exemplo: Multiplicidade

PessoaEmpresa

Multiplicidade

1..*1

OO e UML | 58

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Navegação

Especifica a direção da associaçãoAssociações e agregações são bidirecionais por default, mas é desejável que a navegação seja restringida a apenas uma direçãoAssociações bidirecionais são mais difíceis de implementar

OO e UML | 59

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exemplo: Navegação

PessoaEmpresa

Navegação

1..*1

OO e UML | 60

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exercício - MultiplicidadeAcrescente a multiplicidade nos relacionamentos encontrados no exercício anterior.

OO e UML | 61

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Generalização

Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classesDefine uma hierarquia de abstraçõesRelacionamento “é um tipo de” (is-a-kind-of)

OO e UML | 62

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Generalização

Uma subclasse pode adicionar atributos, operações e

relacionamentos redefinir operações herdadas

Tipos de herança: simples e múltipla

OO e UML | 63

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Herança Simples

Classes herdando de apenas uma outra classe

Círculoraiocentrodesenhar()

Retânguloverticesdesenhar()diagonal()

Figuracorlargura da linhadesenhar()girar(graus)selecionar()

Subclasses

Superclasse(pai)

Relacionamentode Generalização

Quadrado

OO e UML | 64

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Herança Múltipla

Classes herdando de mais de uma classe

Mamífero AnimalVoadorHerançamúltipla

Cachorro Gato Morcego Passarinho Gaviao

OO e UML | 65

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

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?

OO e UML | 66

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Realização

Realização

SubsistemaClasse

Caso de uso

Indica que um elemento serve como contrato que o outro deve seguir

Exemplos:

Componente

Realização de Caso de uso

OO e UML | 67

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Exercício - ArquiteturaModele um diagrama de classes, com todos os relacionamentos, de uma aplicação bancária, envolvendo: Classes Conta, Poupanca e Cliente,

com as respectivas coleções Fachada Interface

OO e UML | 68

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Mecanismos adicionais de UML

EstereótiposNotasPropriedades (Tagged values)RestriçõesOCL (Object Constraint Language)

OO e UML | 69

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Estereótipos

Mecanismo utilizado para estender os elementos de UMLDefine um novo modelo de elemento em termos de outro já existente Como criando um novo ícone utilizando a notação <<novo_elemento>>

OO e UML | 70

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Estereótipos - Exemplo

Classes de fronteira:

ClasseFronteira

<<boundary>>ClasseFronteira

OO e UML | 71

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

NotasAnotaçã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:

LeitoraCartao

Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético.

OO e UML | 72

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Propriedades (Tagged Values)

Servem para estender elementos UML, adicionando informações sobre elesExemplos já definidos em UML: Persistence Location (ex: no cliente, no servidor)

Você pode criar suas próprias propriedades

Cliente{persistence}

LeitoraCartao {location=server}

OO e UML | 73

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Restrições

Pessoa Empresa{subset}

Funcionário

Diretor1..* 1

3 1

Usadas para criação de novas regras sobre elementos do modeloOu modificação de regras existentes

OO e UML | 74

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

OCL (Object Constraint Language)

Empresa

É 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 Empresainv diretoresNecessarios:self.diretor->size() == 3

OO e UML | 75

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Diagramas UML

Diagramas usados no curso serão apresentados sob demanda Seqüência Colaboração Classes (já apresentado) Pacotes Estados Estrutura

OO e UML | 76

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Paradigma de Orientação a Objetos

Favorece modularidade, manutenibilidade e reusoAproxima-se do mundo realUso do mesmo conceito em várias fases do desenvolvimentoMas não é adequado para capturar requisitos, planejar o projeto e realizar testes funcionais