Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Objetos/practica»

De WikiEducator
Saltar a: navegación, buscar
 
Línea 9: Línea 9:
 
{{MRM_Actividad|Title=Juego de mastermind orientado a objetos|
 
{{MRM_Actividad|Title=Juego de mastermind orientado a objetos|
 
*Para implementar este juego vamos a crear las siguientes clases
 
*Para implementar este juego vamos a crear las siguientes clases
 +
*Clave
 +
*Juego
 
;Clave
 
;Clave
;Juego
 
 
[[Archivo:Clave.png]]<br />
 
[[Archivo:Clave.png]]<br />
 +
*Es la clave  a adivinar
 +
*Su atributo contiene esa información
 +
*Tiene un método estático para obtener una clave
 +
;Juego
 
[[Archivo:Jugada.png]]<br />
 
[[Archivo:Jugada.png]]<br />
 +
*Es una jugada
 +
*Cada jugada son 4 colores
 +
*Cada jugada tiene un número de posiciones acertadas
 +
*Cada jugada tiene un número de colores acertados que será menor o igual que el de las posiciones
 
}}
 
}}
 
*Vamos a ver cómo las podremos usar en nuestro programa
 
*Vamos a ver cómo las podremos usar en nuestro programa
Línea 32: Línea 41:
 
     }
 
     }
 
</source>
 
</source>
 +
;Cada vez que presiones jugar
 +
*Creamos un objeto de la clase Juego con la jugada
 +
*El méotodo de Jugada llamado jugar analiza el juego y me devuelve un bool que indica si la jugada ha terminado o no.
 +
Recibirá como parámetro la instancia de la clase Clave
 +
<source lang=php>
 +
public function juega(Clave $clave):bool{
 +
 +
}
 +
</source>   
 +
;Las varialbe de sesión
 +
*Iremos almacenando un array de jugadas en una variable de sesion
 +
*Igualemnte almacenaremos la Clave en una variable de sesión
 +
*Recuerada que los objetos hay que serializarlos para guardarlos en variables de sesión.
 +
**Tanto para escribirlos
 +
**Como para leerlos
 +
***Deberíamos tener algo parecido a
 +
<source lang=php>
 +
  $jugada = new Jugada(...);
 +
....
 +
  $jugadas = unserialize($_SESSION['jugadas']);
 +
....
 +
  $jugada->jugar($clave);
 +
....
 +
  $jugadas[]=$jugada;
 +
....
 +
  $_SESSION['jugadas']=serialize($jugadas);
 +
 +
</source>
 +
 +
 
==Practica 2==
 
==Practica 2==

Última revisión de 09:32 27 feb 2019


  • En este tema tenemos dos prácticas

1.- Implementar el juego de masterMind orientado a objetos
2.- Implementar una calculadora Real/Racional orientada a objetos

Practica 1

  • Consiste en hacer el juego de mastermind cuya especificación ya se facilitó
  • En este caso lo vamos a implementar orientado a objetos
  • Tras un análisis hemos creado dos clases para nuestra aplicación


Icon activity.jpg
Juego de mastermind orientado a objetos
  • Para implementar este juego vamos a crear las siguientes clases
  • Clave
  • Juego
Clave

Clave.png

  • Es la clave a adivinar
  • Su atributo contiene esa información
  • Tiene un método estático para obtener una clave
Juego

Jugada.png

  • Es una jugada
  • Cada jugada son 4 colores
  • Cada jugada tiene un número de posiciones acertadas
  • Cada jugada tiene un número de colores acertados que será menor o igual que el de las posiciones



  • Vamos a ver cómo las podremos usar en nuestro programa
Arranca el programa y necesitamos una clave
  • Tenemos dos situaciones

1.-Es la primera vez que accedo

Genero la clave
La guardo en variable de sesión para próxima sesión

2.-Ya tengo clave

La leo de la variable de sesión.
Para probar este requisito visualizaré la clave.
  • De todo ello debe encargarse el método estático obtener_clave
 //Recupera un objeto de la clase Clave y lo retorna
 //La clave puede ser que la tenga que recuperar o generar
 static public function obtener_clave():Clave
    {
        return $clave;
    }
Cada vez que presiones jugar
  • Creamos un objeto de la clase Juego con la jugada
  • El méotodo de Jugada llamado jugar analiza el juego y me devuelve un bool que indica si la jugada ha terminado o no.

Recibirá como parámetro la instancia de la clase Clave

public function juega(Clave $clave):bool{
 
}
Las varialbe de sesión
  • Iremos almacenando un array de jugadas en una variable de sesion
  • Igualemnte almacenaremos la Clave en una variable de sesión
  • Recuerada que los objetos hay que serializarlos para guardarlos en variables de sesión.
    • Tanto para escribirlos
    • Como para leerlos
      • Deberíamos tener algo parecido a
  $jugada = new Jugada(...);
....
  $jugadas = unserialize($_SESSION['jugadas']);
....
  $jugada->jugar($clave);
....
  $jugadas[]=$jugada;
....
  $_SESSION['jugadas']=serialize($jugadas);


Practica 2