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

76
Visão Geral de Orientação a Objetos com UML

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

Page 1: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

Visão Geral de Orientação a Objetos

com UML

Page 2: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 3: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 4: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 5: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 6: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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()...

Page 7: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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”

Page 8: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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, ...)

Page 9: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 10: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 11: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

OO e UML | 11

Copy

right

© 2

006

Qual

iti. T

odos

os d

ireito

s res

erva

dos.

Qualiti Software Processes

Modularidade

Page 12: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 13: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 14: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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)

Page 15: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 16: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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)

Page 17: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 18: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 19: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 20: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 21: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 22: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 23: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 24: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 25: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 26: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 27: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 28: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 29: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 30: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 31: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 32: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 33: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 34: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 35: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 36: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 37: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 38: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 39: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 40: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 41: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 42: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 43: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 44: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 45: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 46: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 47: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 48: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 49: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 50: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 51: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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!

Page 52: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 53: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 54: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 55: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 56: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 57: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 58: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 59: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 60: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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.

Page 61: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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)

Page 62: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 63: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 64: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 65: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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?

Page 66: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 67: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 68: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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)

Page 69: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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>>

Page 70: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 71: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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.

Page 72: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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}

Page 73: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 74: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 75: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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

Page 76: Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.

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