Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de...
Transcript of Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de...
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
Aviao
numDaCauda
Visualização do Conceito do domínio
Representação em uma
Linguagem OO
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
– 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
Definir Casos de Uso
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
– 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.
Definir Casos de Uso
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
– Mostra os conceitos ou objetos do domínio que são relevantes
Definir Modelo de Domínio
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
Definir Modelo de Domínio
Jogador
nome
Dado
valorDaFace
JogoDeDados
1 2
2
1
1
1Joga
Lança
Inclui
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
– 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
Definir Diagramas de Interação
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de Dados
:JogoDeDados dado1:Dado dado2:Dado
jogar()
lancar()
vf1 := obterValorDaFace()
vf2 := obterValorDaFace()
lancar()
Definir Diagramas de Interação
• 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
– 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
Definir Diagramas de Classes de
Projeto
Análise e Projeto Orientado a Objetos
• Análise e Projeto de um Jogo de DadosDefinir Diagramas
de Classes de Projeto
JogoDeDados
dado1 : Dadodado2 : Dado
jogar()
Dado
valorDaFace : int
obterValorDaFace() : int
lancar()
1 2
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 6Random r = new Random();valorDaFace = r.nextInt(5) + 1;
}
public int obterValorDaFace(){return valorDaFace;
}}
Análise e Projeto Orientado a Objetos• Resposta Exercício
– Classe JogoDeDadospublic 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)