Diferencia entre revisiones de «Usuario:ManuelRomero/practica 4»

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
package calculadora;
+
{{ProjectNav
 
+
|image  = [[image:Java_logo.png|100px]]  [[image:UML_logo.png|100px]]
 
+
|title  = CURSO: ''' PRACTICAS (PROYECTOS) EN EL CURSO: ''' ''JAVA Y UML''
<<source lang=java>>
+
<h2>
public class EstadoCalculadora {
+
''<div style="color: green; text-align:center; ">'''¡Bienvenido a este curso!'''</div>''<br /><br />
//Definir una constante para cada estado
+
</h2>
final int INICIAL =0;
+
|tagline = Prácticas propuestas y resueltas durante el curso '''Programador de aplicaciones orientadas a objetos''' ''Abril-Mayo 2012''
final int OP1 = 1;
+
|pages  = [[../diagramas| Diagramas]]{{vbar}}[[../interfaz| Clase VentanaCalculadora]]{{vbar}}[[../estados| Clase EstadosCalculadora]]{{vbar}} [[../accion| Clase AccionCalculadora]]{{vbar}} [[../operacion| Clases para operar]]{{vbar}}}}
+
+
+
//atributo estrella
+
private int estado;
+
+
+
 
+
//constructor
+
EstadoCalculadora(){
+
estado=INICIAL;
+
}
+
 
+
private boolean esNum(char c){//0 1 2 3 4 5 6 7 8 9
+
}
+
private boolean esSepRac(char c){//  /
+
}
+
private boolean esOpReal (char c){//+ - * / %
+
}
+
private boolean esOpRacional (char c){
+
switch (c){
+
case '+':
+
case '-':
+
case '*':
+
case':':
+
case '%':
+
return true;
+
default:
+
return false;
+
}
+
}
+
private boolean esIgual(char c){ // =
+
}
+
private boolean esPto(char c){
+
}
+
private boolean esClear(char c){
+
}
+
private boolean esRetroceso(char c){
+
if (c==(char)8592)
+
return true;
+
else
+
return false;
+
}
+
private boolean esCambioSigno(char c){
+
if (c==(char)177)
+
return true;
+
else
+
return false;
+
}
+
/*
+
* La e es la entrada de la calculadora
+
* el método cambia de estado
+
*/
+
+
private int inicial(Character e,String valorActual, AccionCalculadora accion){
+
int estado=this.estado;
+
if (esNum(e)){
+
estado=OP1;
+
if (negativo(valorActual))
+
accion.actualiza("-"+e.toString());
+
else
+
accion.actualiza(e.toString());
+
}
+
 
+
//...
+
+
return estado;
+
}
+
private int op1(Character entrada ,String valorActual,AccionCalculadora accion ){
+
int estado = this.estado;
+
//...
+
return estado;
+
}
+
 
+
 
+
 
+
 
+
private void inicializarEstado(AccionCalculadora accion){
+
estado=INICIAL;
+
//accion.actualiza("0");
+
}
+
/**
+
* cambia el estado de la calculadora
+
* para ello tiene encuenta:
+
*      el estadoActual
+
*      la entrada
+
*      ValorActual de la pantalla de la calculadora
+
*      el tipo de calculadora
+
*
+
* @param entrada
+
* @param valorActual
+
* @param accion
+
* @param tipo
+
*/
+
public void cambiaEstado(Character entrada,String valorActual, AccionCalculadora accion, int tipo){
+
System.out.println("accion estado actual: "+getEstado(estado) + " entrada "+entrada);
+
if (esClear(entrada))
+
inicializarEstado(accion);
+
else
+
switch  (estado){
+
case INICIAL:
+
estado=inicial(entrada,valorActual, accion);
+
break;
+
case OP1 :
+
estado = op1(entrada,valorActual,accion,tipo);
+
break;
+
case OP1_REAL:
+
estado =op1Real(entrada,valorActual,accion,tipo);
+
break;
+
case ESPERANDO_OP2:
+
estado = esperandoOp2(entrada,valorActual,accion,tipo);
+
break;
+
case OP2:
+
estado = op2(entrada,valorActual,accion,tipo);
+
break;
+
case OP2_REAL:
+
estado = op2Real(entrada,valorActual,accion,tipo);
+
break;
+
case ESPERANDO_DEN_OP1:
+
estado = esperandoDenOp1(entrada,valorActual,accion,tipo);
+
break;
+
case ESPERANDO_DEN_OP2:
+
estado = esperandoDenOp2(entrada,valorActual,accion,tipo);
+
break;
+
case DEN_OP1:
+
estado = denOp1(entrada,valorActual,accion,tipo);
+
break;
+
case DEN_OP2:
+
estado = denOp2(entrada,valorActual,accion,tipo);
+
break;
+
case RTDO:
+
estado = rtdo(entrada,valorActual,accion,tipo);
+
break;
+
+
}//End switch
+
System.out.println("Estado siguiente "+ getEstado(estado));
+
System.out.println("===================================");
+
}
+
public int getEstado(){
+
  return estado;
+
}
+
 
+
 
+
private String getEstado(int estado){
+
 
+
switch (estado){
+
case INICIAL:
+
      return "INICIAL";
+
case  OP1 :
+
return "OPERANDO 1";
+
case  OP1_REAL:
+
return "OP1_REAL";
+
    case ESPERANDO_OP2 :
+
    return "ESPERANDO_OP2";
+
case  OP2 :
+
return "OP2";
+
case  OP2_REAL :
+
return "OP2_REAL";
+
case  RTDO :
+
return "RTDO";
+
case  ESPERANDO_DEN_OP1:
+
return "ESPERANDO_DEN_OP1";
+
case  DEN_OP1 :
+
return "DEN_OP1";
+
case  ESPERANDO_DEN_OP2:
+
return "ESPERANDO_DE_OP2";
+
case  DEN_OP2 :
+
return "DEN_OP2";
+
default:
+
return("SIN ESTADO!!!!");
+
}
+
}
+
/**
+
* Me verifica si un número es negativo
+
* Paso solamente el número a verificar como un string
+
* @return true si el número es negativo falso en otro caso
+
*/
+
private boolean negativo(String s){
+
//Verificar si un número es negativo
+
if (s.indexOf('-')!=-1){
+
System.out.println("Valor de s "+s);
+
return true;
+
}
+
else
+
return false;
+
}
+
 
+
}//eND CLASE
+
</source>
+

Revisión de 11:04 4 may 2012