Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
-
Upload
luiz-prado-barreiro -
Category
Documents
-
view
215 -
download
3
Transcript of Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Arquiteto de Informação
Analisar Casos de Uso
Revisar Projeto
Projetar Arquitetura
Projetista deBanco de Dados
Arquiteto de Software
Revisor de projeto
Projetar Casos de Uso
Projetar Subsistemas
Projetar Base de Dados
Analista deSistemas
CheckList bla bla bla blabla
Projetar classes
Prototipar Interface gráfica
Analisar Serviços
ProjetarServiços
decisões doarquiteto
<<subsystem>>
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Objetivos desta atividade
• Detalhar o projeto interno das classes (em termos de atributos, métodos ) bem como rever os relacionamentos entre as classes
• Descrever algumas técnicas para reutilização de código
• Aplicável tanto ao RUP quanto a SOA• Aplicável também a classes ativas (cápsulas)
Análise e Projeto OO com UML e Padrões| 3
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Visão geral dos artefatos
Análise e Projeto OO com UML e Padrões| 4
Analista de Sistemas
Projetar Classes
Classes de Projeto
(atualizadas)
Modelo de Análise e Projeto
Requisitos Não
Funcionais
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Passos para Projetar Classes
1. Projetar classes de projeto2. Definir atributos3. Definir operações4. Refinar relacionamentos
Análise e Projeto OO com UML e Padrões| 5
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Projetando Classes de Fronteira
• Interface com usuário – depende da ferramenta de desenvolvimento a ser
usada (de quanto pode ser automatizado)
• Interface com sistemas externos– usualmente resulta em um subsistema, como
ilustrado anteriormente
Análise e Projeto OO com UML e Padrões| 6
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Projetando Classes de Entidade
• Normalmente dão origem a uma única classe• Requisitos não funcionais (como performance)
podem demandar alterações no projeto
Análise e Projeto OO com UML e Padrões| 7
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Projetando Classes de Controle
• Podem ser eliminadas – se não estiverem desempenhando nenhum papel
adicional à classe fronteira correspondente
• Podem dar origem a uma única classe– se encapsulam algum fluxo de controle relevante
• Podem ser divididas– se o controle encapsulado for muito complexo ou
para atender, por exemplo, requisitos de distribuição
Análise e Projeto OO com UML e Padrões| 8
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Passo 2. Definir atributos
• Identificados a partir das informações que a classe necessita manter e descrição das operações
• Atributos derivados– avaliar questões de desempenho
Análise e Projeto OO com UML e Padrões| 9
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Passo 3. Definir operações• Mapear responsabilidades definidas na análise para
operações que implementem essas responsabilidades
• Aspectos envolvidos– nome, assinatura e descrição da operação– visibilidade
• privada -• protegida #• pública +
– escopo: operação de classe ou de instância– Usando OCL, pré e pós condições
Análise e Projeto OO com UML e Padrões|
10
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Definindo Operações
• Decisões a serem tomadas:– Mecanismo de passagem de parâmetros – quanto menos parâmetros, melhor!– passar objetos como parâmetros– aspectos de implementação (uso de algum
algoritmo específico)
Análise e Projeto OO com UML e Padrões|
11
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Definindo Operações• Classes e relacionamentos adicionais podem ser necessários
para suportar a assinatura
Análise e Projeto OO com UML e Padrões|
12
calcularFrete(destino:Endereco): float
Transporte
Endereco
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Passo 4. Refinar relacionamentos
• Detalhar as associações entre as classes– tipo– navegabilidade– multiplicidade
• Avaliar relacionamentos de generalização
Análise e Projeto OO com UML e Padrões|
13
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Tipo dos relacionamentos
• Dependência• Associação • Agregação• Composição• Generalização
Análise e Projeto OO com UML e Padrões|
14
Menor nível deacoplamento
Maior nível deacoplamento
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Navegabilidade
• Que direções são necessárias?• Analisar diagramas de interação• Priorizar o uso de apenas uma direção
quando:– o uso de uma das direções for infreqüente– o número de instâncias de uma das classes é
pequeno
Análise e Projeto OO com UML e Padrões|
15
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Navegabilidade: exemplo• Que direção priorizar?• Exemplo: dado um fornecedor qualquer, ocorre com
freqüência a busca pelos seus produtos?
Análise e Projeto OO com UML e Padrões|
16
Produto Fornecedor**
?
* *
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Avaliar relacionamentos de generalização
• Devem representar uma relação é-um– o descendente é um objeto do tipo do ancestral– herança comportamental (behavioural
ineritance)• Como reusar código em situações onde se
estaria ferindo essa regra?
Análise e Projeto OO com UML e Padrões|
17
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Avaliar relacionamentos de generalização
Análise e Projeto OO com UML e Padrões|
18
Animal
comer()
Leão
comer()
Tigre
comer() Fila
Lista
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Factoring: compartilhamento de implementação
• Suporta o reuso de implementação de outra classe
• Não pode ser utilizado se a classe a ser utilizada não puder ser modificada
Análise e Projeto OO com UML e Padrões|
19
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Compartilhamento de implementação: exemplo
Análise e Projeto OO com UML e Padrões|
20
Lista
Fila
inserirFim( Item)removerInicio ()
Lista
inserirInicio (Item)removerFim ()inserir (Item, posicao)
Fila
ContainerSequencial
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Delegação
• Suporta o reuso de implementação de outra classe
• Pode ser utilizado se a classe a ser utilizada não puder ser modificada
Análise e Projeto OO com UML e Padrões|
21
Copy
right
© 2
006
Qual
iti. T
odos
os d
ireito
s res
erva
dos.
Delegação: exemplo
Análise e Projeto OO com UML e Padrões|
22
Lista Lista
Fila
inserir(Item)remover():Item
1 1
Fila
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)