Desenvolvimento de Sistemas Orientados a Objetos METODOLOGIA PARA
Desenvolvimento de Sistemas Orientados a Objetos METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das. ufsc. br
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 • Net. Beans – http: //netbeans. org/features/web/java-ee_pt_BR. html • Eclipse – http: //www. eclipse. org/downloads/
IDE - Eclipse
IDE - Net. Beans
Classes Abstratas • Definem uma interface (conjunto de métodos) que devem ser definidos por todas as classes que especializem esta classe
Classes Abstratas ///////////////////////// //Figura. Geometrica // //Desc: Define uma interface unificada que todos // os objetos filhos devem implementar ///////////////////////// public abstract class Figura. Geometrica extends Object{ public abstract void print. It(); public abstract void draw. It(); }
///////////////////////// //Ponto // //Desc: Implementa o objeto ponto em 3 dimensões ///////////////////////// public class Ponto extends Figura. Geometrica{ //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 move. Para(double nx, double ny, double nz){ x = x + nx; y = y + ny; z = z + nz; } public double distancia(Ponto p){ double dist. X = p. getx() - x; double dist. Y = p. gety() - y; double dist. Z = p. getz() - z; return Math. sqrt(dist. X*dist. X + dist. Y*dist. Y); } //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 print. It(){ System. out. print(x); System. out. print(y); System. out. print(z); System. out. print("n"); } public void draw. It(){ //TODO: decidir em que ambiente o ponto deve ser desenhado } }
///////////////////////// //Retangulo // ///////////////////////// public class Retangulo extends Object{ private Ponto p 1; private Ponto p 2; public Retangulo(Ponto np 1, Ponto np 2){ p 1 = np 1; p 2 = np 2; } public void print. It(){ } public void draw. It(){ } public double area(){ double a = p 2. getx() - p 1. getx(); double b = p 2. gety() - p 1. 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 Primeiro n. sendo digitado C, CE =, +, - , *, / Mostra resultado
Atributos do Objeto Calculadora • • • Display Buffer 1 Buffer 2 Memória Log
Mensagens do Objeto Calculadora • • checa. Operando. Valido • salva. Para. Memoria calcula. Mais • recupera. Da. Memoria calcula. Menos calcula. Vezes calcula. Divisao calcula. Percentagem calcula. Raiz calcula. Inv
Exercício • Modele o Objeto Log que registrará todos os cálculos feitos na calculadora
- Slides: 21