Desenvolvimento de Sistemas
Orientados a Objetos
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS
Prof. Dr. rer. nat. Daniel D. Abdala
e-mail: [email protected]
Objetivos
• Fixar os diversos aspectos da orientação a objetos
via exemplos;
• Introduzir os conceitos de:
– Modificadores de acesso;
– Métodos de acesso;
– Classes abstratas.
• Exercitar os tópicos visto em aula via o exemplo
Geometrix.
2
Revisando OO
• Objetos x Classes x Instâncias
• Objetos
– Estado
– Funcionalidades
– Identificação Única
• Objetos interagem via troca de mensagens
• Mensagens x Métodos (public x private)
• Especialização x Agregação
Ambiente de Desenvolvimento
• IDE – Integrated Development Environment
• NetBeans
– http://netbeans.org/features/web/java-ee_pt_BR.html
• Eclipse
– http://www.eclipse.org/downloads/
IDE - Eclipse
IDE - NetBeans
Classes Abstratas
• Definem uma interface (conjunto de métodos)
que devem ser definidos por todas as classes
que especializem esta classe
Classes Abstratas
//////////////////////////////////////////////////
//FiguraGeometrica
//
//Desc: Define uma interface unificada que todos
// os objetos filhos devem implementar
//////////////////////////////////////////////////
public abstract class FiguraGeometrica extends
Object{
public abstract void printIt();
public abstract void drawIt();
}
//////////////////////////////////////////////////
//Ponto
//
//Desc: Implementa o objeto ponto em 3 dimensões
//////////////////////////////////////////////////
public class Ponto extends FiguraGeometrica{
//atributos
private double x;
private double y;
private double z;
//construtor
public Ponto(){
x = 0; y = 0;z = 0;
}
//construtor
public Ponto(double nx, double ny, double nz){
x = nx; y = ny;z = nz;
}
//interface especifica do objeto
public void movePara(double nx, double ny, double
nz){
x = x + nx; y = y + ny; z = z + nz;
}
public double distancia(Ponto p){
double distX = p.getx() - x;
double distY = p.gety() - y;
double distZ = p.getz() - z;
return Math.sqrt(distX*distX + distY*distY);
}
//metodos de acesso
public void setponto(int nx, int ny, int nz){
x = nx; y = ny; z = nz;
}
public double getx(){
return x;
}
public double gety(){
return y;
}
public double getz(){
return z;
}
//implementação da interface abstrata
public void printIt(){
System.out.print(x); System.out.print(y);
System.out.print(z);
System.out.print("\n");
}
public void drawIt(){
//TODO: decidir em que ambiente o ponto
deve ser desenhado
}
}
//////////////////////////////////////////////////
//Retangulo
//
//////////////////////////////////////////////////
public class Retangulo extends Object{
private Ponto p1;
private Ponto p2;
public Retangulo(Ponto np1, Ponto np2){
p1 = np1; p2 = np2;
}
public void printIt(){
}
public void drawIt(){
}
public double area(){
double a = p2.getx() - p1.getx();
double b = p2.gety() - p1.gety();
return a * b;
}}
Exercício
• Crie classes para representar:
– Elipses
– Círculos
– Quadrados
– Polígonos
• Liste os métodos e atributos que devem estar
contidos em cada um dos objetos antes de
definir as classes;
Exemplo da Aula - Calculadora
Projeto Calculadora
• Projeto pequeno, nem todos os diagramas
serão necessários:
– Documento de escopo
– Documentos de descrição do projeto
– Levantamento de Requisitos
– Levantamento de Objetos
– Modelagem
– Programação
Escopo
Uma empresa que cria programas para supermercados deseja adicionar a
seu sistema já existente uma calculadora para cálculos simples. O
programa deve ser criado embora já existam calculadoras em
computador porque o sistema roda em hardware dedicado sem acesso
direto ao sistema operacional.
O programa calculadora deve permitir a entrada de números de até oito
dígitos. O cálculo resultante deve ter no máximo nove dígitos. O
programa deve aceitar tanto entrada de dados via teclado quanto via
cliques de mouse. Para as operações binárias, um dos operandos é
assumido como o número existente no display no momento em que os
sinais +, - , * ou / são selecionados. Após a seleção de uma operação, o
segundo número será assumido como o número no display no momento
em que se preciona o sinal =, +, -, * ou /. A seleção de “CE” ou “C”
devem limpar ambos os operandos. Para os operadores unários, %, 1/x
ou √, operador único deve ser assumido como sendo o número atual no
display. Todos os cálculos efetuados na calculadora devem ser salvos em
um Log para que os mesmos possam ser auditados posteriormente.
Definição de requisitos via Interface
• O display deve ser limpo
• Opera apenas com o número no display
• Requer que um segundo número seja
informado
• Requer que o cálculo binário seja efetuado
Estados do Objeto Calculadora
%, 1/x, √
Primeiro
n. sendo
digitado
Display
vazio
+, - , *, /
Buffer 1
Definido
C, CE
C, CE
Primeiro
n. sendo
digitado
C, CE
=, +, - , *, /
Mostra
resultado
Atributos do Objeto Calculadora
•
•
•
•
•
Display
Buffer1
Buffer2
Memória
Log
Mensagens do Objeto Calculadora
•
•
•
•
•
•
•
•
checaOperandoValido • salvaParaMemoria
calculaMais
• recuperaDaMemoria
calculaMenos
calculaVezes
calculaDivisao
calculaPercentagem
calculaRaiz
calculaInv
Exercício
• Modele o Objeto Log que registrará todos os
cálculos feitos na calculadora
Download

DesenvolvimentoOO_3