Utilizando UML e Padrões
Prof. Fábio Botelho, MSc Redes e
Sistemas Distribuídos
Recife, Março de 2010
Análise e Projeto Orientado a Objetos
• Análise e Projeto OO são essenciais para a
criação de um software bem projetado,
robusto e capaz de ser corrigido ou evoluído,
usando tecnologias e linguagens orientadas a
objetos, tais como Java, C#, C++
Análise e Projeto Orientado a Objetos
• Em relação à tecnologia de objetos, é válido o
provérbio: “Possuir um martelo não torna
alguém um arquiteto”
– Para criar sistemas orientado a objetos é preciso
pensar em termos de objetos, antes de conhecer
uma linguagem orientada a objetos
Análise e Projeto Orientado a Objetos
• Análise X Projeto
– Análise enfatiza uma investigação do problema e
dos requisitos, em vez de uma solução
• Responde-se às perguntas:
– Como o sistema deverá ser usado
– Quais as suas funções
– Melhor seria chamar: Análise de Requisitos ou
Análise orientada a objetos
Análise e Projeto Orientado a Objetos
• Análise X Projeto
– O Projeto enfatiza uma solução conceitual em
software ou em hardware que satisfaça os
requisitos
• A descrição do esquema de banco de dados e a
descrição dos objetos do sistema são exemplos
– Melhor seria definir como o projeto de objetos ou
o projeto de bancos de dados
Análise e Projeto Orientado a Objetos
• Análise X Projeto Orientados a Objetos
– Na análise orientada a objetos, há uma ênfase em
encontrar e descrever os objetos ou conceitos do
domínio do problema
• E.g., Sistema de informações de vôo inclui conceitos de
avião, vôo e piloto
Análise e Projeto Orientado a Objetos
• Análise X Projeto Orientados a Objetos
– Projeto Orientado a Objetos enfatiza a definição
dos objetos e como eles colaboram para a
satisfação dos requisitos
• E.g., Objeto avião possui atributo numDaCauda e
método obterHistoricoDoVoo
Análise e Projeto Orientado a Objetos
• Análise X Projeto Orientados a Objetos
– Na implementação ou programação OO os objetos
de projeto são implementados
• E.g., Classe Aviao em Java
Análise e Projeto Orientado a Objetos
• Análise X Projeto Orientados a Objetos
– Na implementação ou programação OO os objetos
de projeto são implementados
• E.g., Classe Aviao em Java
Análise e Projeto Orientado a Objetos
Conceito
do domínio
Visualização
do Conceito
do domínio
Representação
em uma
Linguagem OO
Aviao
numDaCauda
public class Aviao {
private String numDaCauda;
public List obterHistoricoDoVoo() { ... }
}
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
– Um jogador lança dois dados e ganha caso o
resultado seja sete
– Passos:
Definir Casos
de Uso
Definir Modelo
de Domínio
Definir Diagramas
de Interação
Definir Diagramas
de Classes de
Projeto
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Casos
de Uso
– A Análise de Requisitos pode incluir narrativas ou
cenários sobre como as pessoas usam a aplicação
• Tais narrações podem ser escritas como casos de uso
– Casos de Uso não são artefatos OO, são apenas
narrações escritas
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Casos
de Uso
– Caso de Uso Jogar um Jogo de Dados
• Um jogador pede que os dados sejam lançados. O
sistema apresenta o resultado. Se a soma do valor das
faces dos dois dados totalizar sete, o jogador vence,
caso contrário, perde.
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Modelo
de Domínio
– Mostra os conceitos ou objetos do domínio que
são relevantes
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Modelo
de Domínio
Jogador
nome
1
Dado
1
Lança
2
valorDaFace
2
Joga
1
JogoDeDados
1
Inclui
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Diagramas
de Interação
– Além da definição das responsabilidades, o
Projeto OO preocupa-se com as colaborações
entre os objetos
• Diagrama de sequencia – diagrama de interação da
UML, mostra o fluxo de mensagem (invocação de
método) entre os objetos de software
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
:JogoDeDados
dado1:Dado
Definir Diagramas
de Interação
dado2:Dado
jogar()
lancar()
vf1 := obterValorDaFace()
lancar()
vf2 := obterValorDaFace()
• Diagrama de Sequencia ilustrando mensagem entre os objetos
• Apresenta uma visão dinâmica dos objetos colaborativos
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Diagramas
de Classes de
Projeto
– Diagrama de Classes do Projeto especifica uma
visão estática das definições de classes
• Ilustra atributos e métodos das classes
• Baseado no diagrama de sequencia podemos definir
quais atributos e métodos deveremos definir nas
classes
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Diagramas
de Classes de
Projeto
JogoDeDados
dado1 : Dado
dado2 : Dado
jogar()
Dado
1
2
valorDaFace : int
obterValorDaFace() : int
lancar()
Análise e Projeto Orientado a Objetos
• Exercício
– Baixe e instale o Eclipse Galileo com JavaSE 1.6
– Implemente o projeto Jogo
Análise e Projeto Orientado a Objetos
•
Resposta Exercício
–
Classe Dado
import java.util.Random;
public class Dado {
private int valorDaFace;
public void lancar(){
// implementar geracao aleatoria de um numero de 1 a 6
Random r = new Random();
valorDaFace = r.nextInt(5) + 1;
}
public int obterValorDaFace(){
return valorDaFace;
}
}
Análise e Projeto Orientado a Objetos
•
Resposta Exercício
–
Classe JogoDeDados
public class JogoDeDados {
public static void Jogar(){
Dado dado1 = new Dado();
Dado dado2 = new Dado();
dado1.lancar();
int vf1 = dado1.obterValorDaFace();
dado2.lancar();
int vf2 = dado2.obterValorDaFace();
System.out.println("O dado 1 deu " + vf1);
System.out.println("O dado 2 deu " + vf2);
int resultado = vf1 + vf2;
System.out.println("O resultado do jogo foi " + resultado);
}
public static void main(String[] args) {
// Comentar a chamada de método Jogar() abaixo e descomentar as duas próximas linhas caso não defina o método Jogar() como static
//JogoDeDados j = new JogoDeDados();
//j.Jogar();
Jogar();
}
}
Análise e Projeto Orientado a Objetos
• O que é UML ?
– A Linguagem de Modelagem Unificada (UML) é
uma linguagem visual para especificar, construir e
documentar os artefatos dos sistemas [OMG03a]
Análise e Projeto Orientado a Objetos
• Três modos de Aplicar UML, segundo Fowler:
– UML como rascunho
– UML como planta de software
– UML como linguagem de programação
Análise e Projeto Orientado a Objetos
• Três modos de Aplicar UML, segundo Fowler:
– UML como rascunho
• Diagramas incompletos e informais criados para
explorar partes difíceis do problema ou espaço de
soluções, explorando o poder das linguagens visuais
Análise e Projeto Orientado a Objetos
• Três modos de Aplicar UML, segundo Martin
Fowler:
– UML como planta de software
• Diagramas de projeto relativamente detalhados usados
para:
– Engenharia reversa
» Para visualizar e melhor entender o código existente
através de diagramas UML
– Engenharia avante
» Geração de código a partir dos diagramas UML
elaborados
Análise e Projeto Orientado a Objetos
• Três modos de Aplicar UML, segundo Martin
Fowler:
– UML como linguagem de programação
Análise e Projeto Orientado a Objetos
• Exercício
– Baixe e instale o plugin OMONDO para o Eclipse
Galileo que foi instalado anteriormente
– Implemente o diagrama de classes do projeto Jogo
e faça a geração automática de código JAVA a
partir dos diagramas UML (Engenharia avante)
Download

Utilizando UML e Padrões