Fluxo de Análise e Projeto
7 - Atividade Projetar Classes
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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( );
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
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
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
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
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
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**
?
* *
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
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
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
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
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)
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
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)
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
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
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
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
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
Top Related