Usuario:ManuelRomero/php/opp/practica

De WikiEducator
< Usuario:ManuelRomero‎ | php
Revisión a fecha de 23:17 19 dic 2014; ManuelRomero (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar
Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg




DWES TituloTema6.png

Enunciado

  • Se pide que realicemos una aplicación web que resuleva cálculos aritméticos
  • La operación se insertará en una caja de texto
  • La operacion tendrá el siguiente formato
OP1 operador OP2
  • Donde
  1. OP1 es un operador real o racional
  2. operador es una operación que puede ser +,-,*,/,:.
    1. según los operandos sean reales o racionales el operador división será / o : respectivamente
  • El tipo de operación, la seleccionará el cliente con un check box.
  • En el cliente veremos la siguiete pantalla

ClienteRacional.png

  • Para realizar este ejercicio, tendremos que implementar las siguientes clases según aparece en el dibujo

Racional.png

  • Todos los atributos private o protected
  • Los métodos según correspondan serán private protected o public
  • A continuación una descripción de las clases
Racional (p.e 10/6)
Propiedades
  1. Num (p.e 10)
  2. Den (p.e 6)
  3. Numero (p.e "10/6")
Métodos
  1. contructor. Hay que sobrecargarlo según se indica
$a = new Racional();      //Crea el racional 1/1
$a=  new Racional (10);   //Crea el racional 10/1
$a = new Racional(10,6);  //Crea el racional 10/6 
$a = new Racional("10/6");//Crea el racional 10/6
  1. 'asigna. También se pide que está sobrecargado
$a = new Racional();      //Crea el racional 1/1
$a->asigna(10);   //Asigna al raciona a el valor  10/1
$a->asigna(10,6);  //Asigna al raciona a el valor 10/6 
$a->asigna("10/6");//Asigna al raciona a el valor 10/6
$a->asigna();  //Asigna al raciona a el valor 1/1
  1. simplifica() Simplifica si se puede numerador y denominador
  2. toString() Retorna el número racional como una cadena de caracteres, es decir el contenido del atributo numero
  1. suma
  2. resta
  3. multimplica
  4. divide
Todos estos métodos operan con un argumento y retorna un Racional resultado de operarse él mismo con el racional que pasamos como argumento
//En la clase
public function suma (Racional $b) {
 $numResultado = ....;
 $denResultado = ....
 $resultado = new Racional......
 return $resultado;
}
.....
//En el programa que use la clase
 
$a = new Racional("5/6");
$b = new Racional (6,4);
$c= $a->sumar($b);
$c->toStrig(); //Me visualizará 56/24, o bien simplificado 7/3
Operacion
  • Como vemos en el diagrama va a tener algún método abstracto, por lo que la vamos a considerar abstracta
Propiedades
  • Operando1 es un atributo que podrá ser real o racional, pero como en php no hay que declarar tipos, nos va bien
  • Operando2 igual
  • Operación será la cadena de caracteres que el usuario inserte en la caja de texto.
  • Operador es el carácter que indica el tipo de operación que se quiere realizar.
  • Resultado es el resultado de la operación, puede ser real o racional
  • Esta clase descompondrá la operación y generará un resultado
Métodos
  • Los que consideres.
OpReal
  • Realiza una operación real
OpRacional
  • Realiza una operación racional

Resultado

  • Al presionar el botón resuelve, nos ha de aparecer
  • Operando 1 :
  • Operando 2 :
  • Operador  :
  • Resultado  :
  • Y Si es un número racional su valor simplificado:
  • Se recomienda usar el siguiente código para el index.php
if ($_POST['resuelve']){
   $contenido = $_POST['operacion'];
   if ($_POST['tipoOperacion'] == 'Real')
      $calculo = new OpReal($contenido);
   if ($_POST['tipoOperacion'] == 'Racional')
      $calculo = new OpRacional($contenido);
 
       echo "Operando 1 = ".$calculo->getOp1()."<br/>";
       echo "Operando 2 = ".$calculo->getOp2()."<br/>";
       echo "Operador = ".$calculo->getOperador()."<br/>";            
       echo "Operador = ".$calculo->resolver()."<br/>";            
   }
   if ($_POST['tipoOperacion'] == 'Racional'){
      $c= new Racional($calculo->resolver());
      $c->simplifica();
      echo "Valor simplificado ".$c->toString();
   }