60
CIn-UFPE CIn-UFPE 1 /58 /58 ©2003, Alexandre Vasconcelos & Augusto Sampaio ©2003, Alexandre Vasconcelos & Augusto Sampaio Análise e Projeto de Sistemas Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

Embed Size (px)

Citation preview

Page 1: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 11/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Análise e Projeto de SistemasAnálise e Projeto de Sistemas

Introdução ao Projeto Orientado a Objeto com UML

Page 2: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 22/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

ObjetivosObjetivos

Revisar os princípios do paradigma de orientação a objetos

Apresentar os conceitos de orientação a objetos com a notação UML correspondente

Foco em aspectos estruturais: diagramas de classes

Page 3: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 33/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Características do projeto OOCaracterísticas do projeto OO

A funcionalidade do sistema é expressa em termos de serviços de objetos (agrupados em classes)

Áreas de dados compartilhadas são eliminadas. Objetos se comunicam através de passagem de mensagens

Pela própria natureza, objetos podem ser distribuídos Potencialmente, embutem características como

abstração, encapsulamento, information hiding, modularidade e extensibilidade

Page 4: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 44/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Desenvolvimento orientado a objetoDesenvolvimento orientado a objeto

Análise, projeto e programação orientados a objeto são relacionados, mas são distintos

Análise orientada a objeto trata do desenvolvimento de um modelo orientado a objeto do domínio da aplicação (independente da implementação)

Projeto orientado a objeto trata do desenvolvimento de um modelo orientado a objeto voltado para a implementação dos requisitos

Programação orientada a objeto trata da realização de um projeto orientado a objeto usando uma linguagem de programação OO, como Java ou C++

Page 5: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 55/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

ObjetoObjeto

Modelo de um objeto real entidade física, conceitual ou de software

Possui comportamento, estado e identidade

Exemplo: conta, funcionario, livro, ponto de venda, ...

donut

Page 6: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 66/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Objetos em UMLObjetos em UML

Apenas o nome do objeto

: Conta

contaSaque :Conta

contaSaqueApenas o nome da classe

Nome da classe e do objeto

Page 7: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 77/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

ClasseClasse

Descrições de objetos com propriedades e comportamento comuns

Abstração que enfatiza o que é relevante suprime o que não interessa

Classes são fábricas de objetos Objetos são agrupados em

classes

Page 8: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 88/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes de ObjetosClasses de Objetos

Quantas classes temos aqui?

Fonte: Rational

Page 9: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 99/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classe em UMLClasse em UML

Conta

Nome da Classe Conta

Atributos Operações

numerosaldocredito()debito()getSaldo()getNumero()

estrutura

comportamento

Page 10: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1010/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes: mais exemplosClasses: mais exemplos

Indivíduo

Indivíduocódigo : longsexo : charnome : String

Indivíduo

código : longsexo : charnome : String

incluir()atualizar()

Indivíduo

incluir()atualizar()

Page 11: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1111/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes: atributosClasses: atributos

Um atributo representa alguma propriedade que é compartilhada por todos os objetos da classe

Os atributos descrevem os dados contidos nas instâncias de uma classe

Em um dado momento, um objeto de uma classe conterá valores para todos os atributos descritos na sua classe

Page 12: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1212/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Atributos: notaçãoAtributos: notação Atributos podem ser identificados apenas com nomes

Atributos podem ter seus tipos (ou classes) especificados e terem valores padrão definidos

Paredealtura : reallargura : realespessura : realviga : boolean = false

Conta

numero: integerSaldo: real

Page 13: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1313/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Objetos com atributos valoradosObjetos com atributos valorados

: Conta

numero = 23.025-1saldo = 500,00

: Conta

numero = 21.342-7saldo = 875,32

Conta

numerosaldo

Valor do Atributo

Objeto

Page 14: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1414/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes: operaçõesClasses: operações

Uma operação é uma abstração de algum serviço que se pode requisitar a um objeto e que é compartilhado por todos os objetos da classe

Um classe pode ter qualquer número de operações, inclusive nenhuma

Page 15: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1515/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Operações: notaçãoOperações: notação

Como para os atributos, pode-se especificar uma operação apenas com seu nome

Pode-se também especificar a assinatura da operação: seus parâmetros, o tipo desses parâmetros e o tipo de retorno

Conta

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

Especificação das operações

Page 16: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1616/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes: visibilidadeClasses: visibilidade

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

+ público: todos os objetos do sistema podem usar# protegido: qualquer descendente da classe pode usar- privado: somente a própria classe pode usar

Page 17: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1717/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Visibilidade no RoseVisibilidade no Rose

Pessoanome : Stringcpf : Stringtelefone : String

incluir()consultar()atualizar()

público

privado

protegido

Page 18: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1818/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Comunicação entre objetosComunicação entre objetos

Conceitualmente, objetos se comunicam através da troca de mensagens.

Componentes de uma mensagem Nome do serviço requisitado pelo objeto que está fazendo a

chamada. Informação requerida para executar o serviço e o nome de um

proprietário para o resultado do serviço. Na prática, mensagens são normalmente implementadas

através de chamadas de procedimentos (operações) Nome = nome do procedimento. Informação = lista de parâmetros para o procedimento.

Page 19: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 1919/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Exemplos de mensagemExemplos de mensagem

// Chama um método associado a um objeto buffer que // retorna o próximo valor no buffer

v = circularBuffer.Get () ;

// Chama o método associado ao objeto termostato // que define a temperatura a ser mantida

thermostat.setTemp (20) ;

Page 20: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2020/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

ComponenteComponente

Parte 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 executáve tabelas de bancos de dados

Page 21: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2121/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Componentes em UMLComponentes em UML

Arquivo fonte<<EXE>>Arquivo

executável

Page 22: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2222/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

PacotePacote

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

Page 23: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2323/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

SubsistemaSubsistema

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

Page 24: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2424/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Subsistema em UMLSubsistema em UML

<<subsystem>>

Nome do subsistema

Page 25: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2525/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

RelacionamentosRelacionamentos

Objetos e classes de objetos participam de relacionamentos com outros objetos e classes de objetos

Tipos de relacionamento Associação

simples agregação composição

Dependência Generalização Realização

Page 26: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2626/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Navegabilidade de um relacionamentoNavegabilidade de um relacionamento Em geral a navegação entre as classes de um

relacionamento é bi-direcional Porém é possível limitá-la a apenas uma direção

Usuário Senha

Page 27: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2727/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Multiplicidade de um relacionamentoMultiplicidade de um relacionamento

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

Page 28: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2828/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Tipos de multiplicidadeTipos 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

Page 29: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 2929/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Associação simplesAssociação simples

Relação estrutural entre classes

Companhia Empregado1..** 1..** contrata

10..*0..*

1

Page 30: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3030/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Associação unáriaAssociação unária

Quando há um relacionamento de uma classe consigo própria

Funcionário

1

1..*

1

1..*

gerencia

Page 31: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3131/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Nome de papéis são úteis para distinguir relacionamentos entre o mesmo par de classes

Relacionamentos e papéisRelacionamentos e papéis

Companhia Empregado1..** 1..**

+empregador

contrata

10..*

+subordinado

+chefe0..*

1

Page 32: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3232/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Relacionamentos com atributosRelacionamentos com atributos

Modela as propriedades associadas com um relacionamento

Para indicar os atributos de um relacionamento, usamos uma linha tracejada para unir o relacionamento às suas propriedades

As propriedades devem ser representadas por uma classe

Page 33: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3333/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Exemplo de relacionamento com atributoExemplo de relacionamento com atributo

Companhia Empregado1..*** 1..*

+empregador

Trabalhodescriçãosalário

Page 34: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3434/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

AgregaçãoAgregação

Uma forma especial de associação entre o todo e suas partes, no qual o todo é composto das partes

DepartamentoEmpresa

Todo Parte

Agregação

Page 35: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3535/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

ComposiçãoComposição

Uma forma mais forte de agregação Há uma coincidência da vida das partes Uma vez criada a parte ela irá viver e morrer com o todo O “Todo” é responsável pelo gerenciamento da criação e

destruição das partes

Page 36: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3636/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Exemplo de ComposiçãoExemplo de Composição

+confirmar()+cancelar()-calcularTotal():CurrencygerarNovoCodigo: String

-codigo: Integer-dataRecebido-total: Currency

Pedido

-quantidade: Integer-preco: Currency

Item de Pedido

Produto

*

*

Page 37: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3737/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Exemplo de diagrama de classe: EscolaExemplo de diagrama de classe: Escola

Page 38: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3838/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

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

Composição ou agregação? Na dúvida, use agregação!

Agregação ou associação? Na dúvida, use associação!

Page 39: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 3939/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

DependênciaDependência

Dependências são relações de uso mais fraco que associação

Uma dependência indica que mudanças em um elemento (o “servidor”) podem afetar outro elemento (o “cliente”)

Uma dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe

Cliente Servidor

Page 40: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4040/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

DependênciaDependência

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

Classe

Pacote

PacoteFornecedor

ComponenteFornecedorCliente

PacoteClienteDependência

Fonte: Rational

FornecedorCliente

Page 41: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4141/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Generalização (ou herança)Generalização (ou herança)

Uma generalização (também conhecida como herança) é um relacionamento entre um elemento mais geral (chamado de superclasse ou pai) e um mais específico (chamado de subclasse ou filho)

Classes são organizadas numa hierarquia onde uma super classe é uma generalização de uma ou mais sub classes

Uma sub classe herda os atributos e operações de sua super classe e pode adicionar seus próprios métodos ou atributos

Page 42: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4242/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Herança simplesHerança simples

Classes herdando de apenas uma outra classe

Relacionamentode Generalização

Círculoraiocentrodesenhar()

Retânguloverticesdesenhar()diagonal()

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

Subclasses

Superclasse(pai)

Quadrado

Page 43: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4343/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Herança múltiplaHerança múltipla

Classes herdando de mais de uma classe

Mamífero AnimalVoadorHerançamúltipla

Cachorro Gato Morcego Passarinho Gaviao

Page 44: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4444/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Vantagens da herançaVantagens da herança

É um mecanismo de abstração que pode ser usado para classificar entidades

É um mecanismo de reuso tanto em nível de projeto como em nível de programação

Page 45: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4545/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Problemas com a herançaProblemas com a herança

Classes de objeto não são auto-contidas. Elas não podem ser entendidas sem a referência a suas super classes

Herança introduz complexidade e isso é indesejável, especialmente em sistemas críticos

Herança múltipla: conflito de nomes

Page 46: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4646/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Realização e InterfacesRealização e Interfaces

Realização é uma relação pela qual um elemento especifica o contrato que outro elemento deve implementar

A realização é um relacionamento entre uma especificação de interface e sua implementação

Page 47: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4747/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

InterfaceInterface

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

Diferentemente das classes, as interfaces não especificam nenhuma estrutura

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

interface

Page 48: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4848/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Realização: notaçãoRealização: notação

Empregado

verificarFicha()calcularSalário()

<<interface>>

Empregado_Impl

Realização

SubsistemaClasse Componente

Realização

Page 49: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 4949/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Realização: outro exemploRealização: outro exemplo

Porca8mm

Porca6mm

Porca4mm

ApertarAfrouxar

<<interface>>ChaveKit

Relacionamentos de realização

Page 50: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5050/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Realização: outro exemploRealização: outro exemplo

ChaveKit

Relacionamentos de realização

Porca8mm

Porca6mm

Porca4mm

Page 51: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5151/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Subsistemas x ComponentesSubsistemas x 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

Implementação

Nome do componente

<<subsystem>>Nome do subsistema

Page 52: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5252/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classe abstrataClasse abstrata

Classe abstrata é aquela que não possui instância

Em geral, possui pelo menos um método abstrato

Métodos abstratos não têm corpo subclasses não abstratas são obrigadas a fornecer

uma implementação para eles

Page 53: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5353/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes, Interfaces Classes, Interfaces e e Classes AbstratasClasses Abstratas

Classes

• Atributos• Métodos

Classes Abstratas

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

Interfaces

• Assinaturas dos métodos

Page 54: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5454/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Classes abstratas x InterfacesClasses abstratas x Interfaces

Herança de tipos x herança de código Classes descrevem propriedades fundamentais

de um objeto Interfaces descrevem papéis desempenhados

por um objeto em determinadas situações Interfaces são úteis para implementar herança

múltipla

Page 55: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5555/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Mecanismos adicionais de UMLMecanismos adicionais de UML

Estereótipos Notas Propriedades (Tagged values) Restrições

Page 56: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5656/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

EstereótiposEstereó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>>

Page 57: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5757/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Estereótipos: exemploEstereótipos: exemplo

Classes de fronteira:

ClasseFronteira

<<boundary>>ClasseFronteira

Page 58: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5858/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

NotasNotas

Anotação utilizada para adicionar informação a diagramas Pode ser afixada 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 59: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 5959/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

Propriedades (Propriedades (Tagged ValuesTagged Values)) Servem para estender elementos UML, adicionando

informações sobre eles Exemplos já definidos em UML:

Persistence (valores: persistent, transient) Location (ex. de valores: client, server)

Você pode criar suas próprias propriedades

Cliente{persistence=persistent}

: LeitoraCartao {location=server}

Page 60: ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML

CIn-UFPECIn-UFPE 6060/58/58©2003, Alexandre Vasconcelos & Augusto Sampaio©2003, Alexandre Vasconcelos & Augusto Sampaio

RestriçõesRestrições

Pessoa Empresa{subset}

Funcionário

Diretor1..* 1

3 1

Usadas para criação de novas regras sobre elementos do modelo

Ou modificação de regras existentes