©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas...

Preview:

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

*

*

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

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!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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}

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

Recommended