Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.
-
Upload
henrique-vilalobos-valverde -
Category
Documents
-
view
222 -
download
1
Transcript of Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.
![Page 1: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/1.jpg)
Fluxo de Análise e Projeto
7 - Atividade Projetar Classes
![Page 2: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/2.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto2
Analisar caso de
usoProjetista
Projetista de banco de
dados
Revisar projeto
Projetar caso de
uso
ArquitetoRevisor do
projeto
Projetar base de dados
Projetar arquitetura
Projetar subsistema
Projetar classes
Projetar Classes
![Page 3: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/3.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto3
O que foi feito até agora
• Identificação das classes de análise, seus atributos, responsabilidades e relacionamentos
• Mapeamento das classes de análise em elementos de projeto • Identificação das oportunidades de reuso• Definição da organização do sistema• Refinamento das realizações dos casos de uso (substituição dos
elementos de análise por elementos de projeto)• Distribuição do comportamento dos elementos dos subsistemas
![Page 4: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/4.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto4
Objetivos desta atividade
• Detalhar a estrutura interna (atributos e operações) das classes de projeto
• Identificar classes e relacionamentos adicionais • Garantir que as classes fornecem o
comportamento necessário à realização dos casos de uso
Realizada para cada classe da iteração corrente
![Page 5: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/5.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto5
Na prática...
• Os passos desta atividade são realizados simultaneamente às atividades de projeto:– projeto da arquitetura;– projeto de casos de uso e – projeto de subsistemas
• Aqui o objetivo é rever o que foi feito, refinando e acrescentando detalhes
![Page 6: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/6.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto6
Visão geral dos artefatos
Classes de projeto
Projetar classesRealização de casos de uso
Requisitos não funcionais
Classes de projeto
Modelo de análise e projeto
![Page 7: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/7.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto7
Passos para Projetar Classes
• 1. Identificar classes de projeto• 2. Definir visibilidade da classe• 3. Definir atributos• 4. Definir operações• 5. Refinar relacionamentos
![Page 8: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/8.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto8
Passo 1. Identificar classes de projeto
• Iniciado no projeto da arquitetura • Classe de projeto já identificada dá origem a uma ou
mais classes• A estratégia de criação de classes faz uso do
estereótipo definido na análise (fronteira, controle e entidade)
• Pode fazer uso de padrões de projeto (design patterns)
![Page 9: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/9.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto9
Projetando Classes de Fronteira
• Interface com usuário – depende da ferramenta de desenvolvimento a ser usada
(de quanto pode ser automatizado)
• Interface com subsistemas externos– usualmente resulta em um subsistema– se for muito simples (servindo apenas como interface
para uma API existente), deve resultar em uma ou mais classes de projeto
![Page 10: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/10.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto10
Projetando Classes de Entidade
• Normalmente dão origem a uma única classe
• Requisitos não funcionais (como performance) podem demandar alterações no projeto
![Page 11: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/11.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto11
<<entity>>Exemplo
+atributoMuitoUsado1+atributoMuitoUsado2+atributoPoucoUsado1+atributoPoucoUsado2
AnáliseExemplo
+ getAtributoMuitoUsado1 ()+ getAtributoMuitoUsado2 ()+ getAtributoPoucoUsado1 ()+ getAtributoPoucoUsado2 ()
ExemploEager+atributoMuitoUsado1+atributoMuitoUsado2
ExemploLazy+ atributoPoucoUsado1+ atributoPoucoUsado2
Projeto
Alterações em função da performance
Fonte: Rational
![Page 12: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/12.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto12
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
![Page 13: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/13.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto13
A
B
Visibilidade Pública
Visibilidade Privada
Classe A1
Classe A2
Classe A3
+Classe B1
Pacote A
Pacote B
-Classe B2
Fonte: Rational
Passo 2. Definir visibilidade da classe
![Page 14: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/14.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto14
Passo 3. 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
![Page 15: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/15.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto15
Contasaldo$ saldoMinimo
Definir atributos
• Aspectos envolvidos– Nome, tipo e valor inicial (default)– Visibilidade
• atributos devem ser privados! – Escopo
• atributos de instância• atributos de classe
![Page 16: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/16.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto16
Passo 4. 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
• privado -• protegido #• público +
– escopo: operação de classe ou de instância
![Page 17: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/17.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto17
Operações de classe e de instância
• Operações de instância são executadas por uma instância específica (um objeto) da classe– emitirExtrato( );– creditar(valor:float);– ...
• Operações de classe são executadas pela própria classe– getSaldoMinimo( );
![Page 18: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/18.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto18
Definindo Operações
• Decisões a serem tomadas:– parâmetros (passagem por valor ou
referência, intervalo válido, ...)– quanto menos parâmetros, melhor– passar objetos como parâmetros
![Page 19: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/19.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto19
calcularFrete(destino:Endereco): float
Transporte
Endereco
Definindo Operações
• Classes e relacionamentos adicionais podem ser necessários para suportar a assinatura
![Page 20: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/20.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto20
Passo 5. Refinar relacionamentos
• Detalhar as associações entre as classes– tipo– navegabilidade– multiplicidade
• Avaliar relacionamentos de generalização
![Page 21: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/21.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto21
Menor nível deacoplamento
Maior nível deacoplamento
Tipo dos relacionamentos
• Dependência• Associação • Agregação• Composição• Generalização
![Page 22: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/22.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto22
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
![Page 23: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/23.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto23
Navegabilidade: exemplo
• Espera-se que existam quantos produtos?• Dado um fornecedor qualquer, ocorre com
freqüência a busca pelos seus produtos?
Produto Fornecedor**
?
* *
![Page 24: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/24.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto24
Instrutor
estaEnsinando( ) : Boolean
Disciplina
temInstrutor( ) : Boolean0..* 0..*
Multiplicidade
• Se o relacionamento é opcional, crie uma operação para testar a existência do relacionamento– garantir a existência da instância sendo utilizada
![Page 25: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/25.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto25
Avaliar relacionamentos de generalização
• Muito bom, mas…– usar com cautela
• Devem representar uma relação é-um– o descendente é um objeto do tipo do
ancestral
![Page 26: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/26.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto26Fonte: Rational
Animal
comer()
Leão
comer()
Tigre
comer() Pilha
Lista
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
Avaliar relacionamentos de generalização
![Page 27: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/27.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto27
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
![Page 28: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/28.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto28
Compartilhamento de implementação: exemplo
Lista
Pilha
inserirInicio( Item)removerFim ()
Lista
inserirInicio (Item)removerFim ()inserir (Item, posicao)
Pilha
Fonte: Rational
ContainerSequencial
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
![Page 29: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/29.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto29
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
![Page 30: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/30.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto30
Fonte: Rational
Lista Lista
Pilha
push (Item)pop () : Item
1 1
Pilha
Delegação: exemplo
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
inserirInicio (Item)inserirFim (Item)removerInicio()removerFim ()inserir (Item, posicao)
![Page 31: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/31.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto31
Fonte: Rational
Estudante
nomeenderecomatricula
EstudanteParcialnumMaxDisciplinas
EstudanteIntegraldataGraduacao
O que vai acontecerse um aluno
“part-time” se tornar “full-time”?
Metamorfose: o problema
![Page 32: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/32.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto32Fonte: Rational
Classificação1 1
Metamorfose: a solução
Estudante
nomeenderecomatricula
EstudanteParcialnumMaxDisciplinas
EstudanteIntegraldataGraduacao
![Page 33: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/33.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto33
Passos realizados nesta atividade
• 1. Identificar classes de projeto• 2. Definir visibilidade da classe• 3. Definir atributos• 4. Definir operações• 5. Refinar relacionamentos
![Page 34: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/34.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto34
Projeto em Equipes
• Data de entrega: 22/11/2000
• A partir do documento de requisitos– Parte 1: Escolha três casos de uso relevantes e
faça a análise (produzindo diagramas de interação e, em seguida um VOPC, com estereótipos, responsabilidades e associações para cada caso de uso; identifique classes persistenes
![Page 35: Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.](https://reader035.fdocumentos.tips/reader035/viewer/2022062400/5706384b1a28abb8238f5e07/html5/thumbnails/35.jpg)
Maio, 2000Copyright CESAR-Qualiti, Maio 2000. Todos os direitos reservados.
Fluxo de Análise e Projeto35
Projeto em Equipes
– Parte 2: Faça o projeto da arquitetura identificando subsistemas, interfaces, pacotes e camadas. Produza um diagrama de pacotes, relacione classes de análise em elementos de projeto, e agrupe elementos de projeto em camadas.
– Parte 3: Faça o projeto de pelo menos um caso de uso, refazendo os diagramas de interação e o VOPC já incluindo elementos de projeto (deve ilustrar imclusão de persistência e interfaces de subsistemas)
– Parte 4: Faça o projeto de um subsistema e de uma classe