7
CALCULADORA 1 (2 DEPENDENCIAS Y 1 ASOCIACIÓN) Se instancia un objeto “grande” (de la clase Operaciones) capaz de hacer cualquiera de las 4 operaciones. EntradaSalida sólo tiene métodos estáticos (no se requiere instanciación). Main.java package calculadora; public class Main { public static void main(String[] args) { Calculadora c = new Calculadora(); c.comenzar(); } } EntradaSalida.java package calculadora; import javax.swing.JOptionPane; public class EntradaSalida { public static double leerDouble(String texto) { String st = JOptionPane.showInputDialog(texto); return Double.parseDouble(st); }

Calculadora

  • Upload
    dcorsi

  • View
    308

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Calculadora

CALCULADORA 1

(2 DEPENDENCIAS Y 1 ASOCIACIÓN) Se instancia un objeto “grande” (de la clase Operaciones) capaz de hacer cualquiera de las 4 operaciones. EntradaSalida sólo tiene métodos estáticos (no se requiere instanciación).

Main.java

package calculadora;

public class Main {

public static void main(String[] args) { Calculadora c = new Calculadora(); c.comenzar();

} }

EntradaSalida.java

package calculadora;

import javax.swing.JOptionPane; public class EntradaSalida {

public static double leerDouble(String texto) { String st = JOptionPane.showInputDialog(texto);

return Double.parseDouble(st); }

Page 2: Calculadora

public static char leerChar(String texto) {

String st = JOptionPane.showInputDialog(texto); return st.charAt(0);

} public static void mostrarString(String s) {

JOptionPane.showMessageDialog(null, s); } }

Calculadora.java

package calculadora;

public class Calculadora {

private Operaciones op; public void comenzar() {

double d1 = EntradaSalida.leerDouble("Ingrese el primer numero:"); double d2 = EntradaSalida.leerDouble("Ingrese el segundo numero:"); char operador = EntradaSalida.leerChar("Ingrese el operador [ + - * /

]:"); op = new Operaciones();

switch (operador) { case '+': EntradaSalida.mostrarString(op.sumar(d1, d2)); break;

case '-': EntradaSalida.mostrarString(op.restar(d1, d2)); break; case '*':

EntradaSalida.mostrarString(op.multiplicar(d1, d2)); break; case '/': EntradaSalida.mostrarString(op.dividir(d1, d2));

} } }

Operaciones.java

package calculadora;

public class Operaciones {

public String sumar(double d1, double d2) { return Double.toString(d1 + d2); }

public String restar(double d1, double d2) { return Double.toString(d1 - d2);

} public String multiplicar(double d1, double d2) {

return Double.toString(d1 * d2); }

public String dividir(double d1, double d2) { return Double.toString(d1 / d2); }

}

Page 3: Calculadora

CALCULADORA 2

(6 DEPENDENCIAS) Sólo se instancia un objeto “chico” de una de las clases Suma, Resta, Producto o Division, según se necesite. Hay un mejor aprovechamiento de la memoria.

Main.java

package calculadora;

public class Main { public static void main(String[] args) {

Calculadora c = new Calculadora(); c.comenzar(); }

}

EntradaSalida.java

package calculadora;

import javax.swing.JOptionPane; public class EntradaSalida {

public static double leerDouble(String texto) { String st = JOptionPane.showInputDialog(texto);

return Double.parseDouble(st); }

public static char leerChar(String texto) { String st = JOptionPane.showInputDialog(texto); return st.charAt(0);

Page 4: Calculadora

}

public static void mostrarString(String s) {

JOptionPane.showMessageDialog(null, s); } }

Calculadora.java

package calculadora;

public class Calculadora {

public void comenzar() { double d1 = EntradaSalida.leerDouble("Ingrese el primer numero:"); double d2 = EntradaSalida.leerDouble("Ingrese el segundo numero:");

char operador = EntradaSalida.leerChar("Ingrese el operador [ + - * / ]:");

switch (operador){ case '+': Suma op1 = new Suma();

EntradaSalida.mostrarString(op1.sumar(d1, d2)); break; case '-':

Resta op2 = new Resta(); EntradaSalida.mostrarString(op2.restar(d1, d2)); break;

case '*': Producto op3 = new Producto(); EntradaSalida.mostrarString(op3.multiplicar(d1, d2));

break; case '/': Division op4 = new Division ();

EntradaSalida.mostrarString(op4.dividir(d1, d2)); } }

}

Suma.java

package calculadora;

public class Suma {

public String sumar (double d1, double d2) { return Double.toString(d1 + d2); }

}

Resta.java

package calculadora;

public class Resta { public String restar (double d1, double d2) { return Double.toString(d1 - d2);

} }

Page 5: Calculadora

Producto.java

package calculadora;

public class Producto { public String multiplicar (double d1, double d2) { return Double.toString(d1 * d2);

}

}

Division.java

package calculadora;

public class Division {

public String dividir (double d1, double d2) { return Double.toString(d1 / d2); }

}

CALCULADORA 3

(2 DEPENDENCIAS, 1 ASOCIACIÓN Y 4 GENERALIZACIONES) Se vuelve a tener la asociación entre las clases Calculadora y Operacion, al mismo tiempo que la generalización permite aprovechar el ahorro de memoria que se produce al dividir las responsabilidades entre las 4 clases Suma, Resta, Producto y Division, ya que sólo se instancia un objeto de alguna de estas clases, según se necesite, el cual es referenciado mediante la variable polimórfica op (que por ser de la clase Operacion, puede referenciar objetos de cualquier subclase de ésta). La clase Operacion es abstracta porque la implementación de su método calcular se hace en las subclases.

Page 6: Calculadora

Main.java

package calculadora;

public class Main { public static void main(String[] args) {

Calculadora c = new Calculadora(); c.comenzar(); }

}

EntradaSalida.java

package calculadora;

import javax.swing.JOptionPane;

public class EntradaSalida {

public static double leerDouble(String texto) { String st = JOptionPane.showInputDialog(texto); return Double.parseDouble(st);

} public static char leerChar(String texto) {

String st = JOptionPane.showInputDialog(texto); return st.charAt(0); }

public static void mostrarString(String s) { JOptionPane.showMessageDialog(null, s);

} }

Calculadora.java

package calculadora;

public class Calculadora { private Operacion op;

public void comenzar() { double d1 = EntradaSalida.leerDouble("Ingrese el primer numero:");

double d2 = EntradaSalida.leerDouble("Ingrese el segundo numero:"); char operador = EntradaSalida.leerChar("Ingrese el operador [ + - * / ]:");

switch (operador) { case '+':

op = new Suma(); break; case '-':

op = new Resta(); break; case '*':

op = new Producto(); break; case '/':

op = new Division(); }

Page 7: Calculadora

EntradaSalida.mostrarString(op.calcular(d1, d2)); }

}

Operacion.java

package calculadora;

public abstract class Operacion {

public abstract String calcular(double d1, double d2); }

Suma.java

package calculadora;

public class Suma extends Operacion {

public String calcular(double d1, double d2) { return Double.toString(d1 + d2); }

}

Resta.java

package calculadora;

public class Resta extends Operacion {

public String calcular(double d1, double d2) { return Double.toString(d1 - d2);

} }

Producto.java

package calculadora;

public class Producto extends Operacion { public String calcular(double d1, double d2) {

return Double.toString(d1 * d2); } }

Division.java

package calculadora;

public class Division extends Operacion {

public String calcular(double d1, double d2) { return Double.toString(d1 / d2); }

}