210 likes | 363 Vues
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:
E N D
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.
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 – IntegratedDevelopmentEnvironment • NetBeans • http://netbeans.org/features/web/java-ee_pt_BR.html • Eclipse • http://www.eclipse.org/downloads/
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 voidprintIt(); public abstract voiddrawIt(); }
////////////////////////////////////////////////// //Ponto // //Desc: Implementa o objeto ponto em 3 dimensões ////////////////////////////////////////////////// public class Ponto extends FiguraGeometrica{ //atributos privatedouble x; privatedouble y; privatedouble z; //construtor publicPonto(){ x = 0; y = 0;z = 0; } //construtor publicPonto(doublenx, doubleny, doublenz){ x = nx; y = ny;z = nz; }
//interface especifica do objeto publicvoidmovePara(doublenx, doubleny, doublenz){ x = x + nx; y = y + ny; z = z + nz; } publicdouble distancia(Ponto p){ doubledistX = p.getx() - x; doubledistY = p.gety() - y; doubledistZ = p.getz() - z; returnMath.sqrt(distX*distX + distY*distY); } //metodos de acesso publicvoidsetponto(intnx, intny, intnz){ x = nx; y = ny; z = nz; } publicdoublegetx(){ returnx; }
publicdoublegety(){ return y; } publicdoublegetz(){ return z; } //implementação da interface abstrata publicvoidprintIt(){ System.out.print(x); System.out.print(y); System.out.print(z); System.out.print("\n"); } publicvoiddrawIt(){ //TODO: decidir em que ambiente o ponto deve ser desenhado } }
////////////////////////////////////////////////// //Retangulo // ////////////////////////////////////////////////// public class Retangulo extends Object{ privatePonto p1; privatePonto p2; publicRetangulo(Ponto np1, Ponto np2){ p1 = np1; p2 = np2; } publicvoidprintIt(){ } publicvoiddrawIt(){ } publicdoublearea(){ doublea = p2.getx() - p1.getx(); doubleb = p2.gety() - p1.gety(); returna * 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;
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 Logpara 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 Buffer 1 Definido +, - , *, / Display vazio C, CE Primeiro n. sendo digitado =, +, - , *, / C, CE Mostra resultado C, CE
Atributos do Objeto Calculadora • Display • Buffer1 • Buffer2 • Memória • Log
Mensagens do Objeto Calculadora • checaOperandoValido • calculaMais • calculaMenos • calculaVezes • calculaDivisao • calculaPercentagem • calculaRaiz • calculaInv • salvaParaMemoria • recuperaDaMemoria
Exercício • Modele o Objeto Log que registrará todos os cálculos feitos na calculadora