CIn-UFPE1 Mineração na Web Preparação dos documentos Flávia Barros.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas...
-
Upload
vasco-fabio-alvaro-peralta -
Category
Documents
-
view
215 -
download
1
Transcript of ©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/58 Análise e Projeto de Sistemas...
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