Usuario:ManuelRomero/DAW/Distancia/2015/tutorias/tutoria1/

De WikiEducator
Saltar a: navegación, buscar





Icon objectives.jpg
Objetivo
Se han tratado 3 temas fundamentalmente
  1. La programación orientada a objetos
  2. La práctica de la calculadora
  3. El examen de primera evaluación
La programación orientada a objetos
  • Se revisa las peculiaridades de php como lenguaje orientado a objetos
  • Se insiste en leer el wiki a pesar de que a veces pueda parecer un poco desordenado. pero es información importante. Cualquier cuestión que no quede clara o que se vea incompleta se debería comentar para solvertarlo.
  • En php hay dos aspecto peculiares sobre OOP
  1. Que no permite la sobrecarga/polimorfismo como la entendemos en otros lenguajes como java
  2. Que tiene lo que se llama métodos mágicos que son métodos que no se invocan de forma explícita, si no que implícitamente se invocas (si es que se han implementado) cuando ocurre algo
  • Sobre la primera cuestión se trabaja el ejemplo del racional:
  • Suponemos que queremos tener las siguientes opiciones de instanciar objetos
$r1 = new Racional(); // 1/1
$r2 = new Racional(6); // 6/1
$r3 = new Racional(7, 4); // 7/4
$r4 = new Racional("9/4"); //9/6
  • En este caso queremos sobre cargar el constructor. En php no se pueden crear métodos con el mismo nombre
  • Entonces lo que hacemos es crerar un solo método que tenga el máximo número de parámetros con el que se pueda invocar (en este caso 2) y con valores por defecto para aquellos que podrían no aparecer (en este caso los dos
class Racional {
//put your code here
 private $num;
 private $den;
 
public function __construct($num = null, $den = null) {
  • Ahora en el método empezamos a interrogar sobre si existe o no el parámetro y el tipo de dato
  • En este caso creamos este código, claramente sin optimizar ...
public function __construct($num = null, $den = null) {
 if ($num == null) { //new Racional()
      $this->num = 1;
      $this->den = 1;
  } else {
        if ($den == null) {
            if (is_numeric($num)) { // new Racional(5)
                $this->num = $num;
                $this->den = 1;
             } else { //new Racional("9/4");
                $v = explode("/", $num);
                $this->num = $v[0];
                $this->den = $v[1];
             }
        } else { //new Racional (5,6)
             $this->num = $num;
             $this->den = $den;
        }//end if/else $den ==null
     }
 }
Autocarga de clases

Sobre la autocarga de clases, se ha comentado como en php si seguimos las buenas prácticas de programación se debe de implementar cada clase en un fichero que tenga su nombre Cuando en un programa principal, voy a usar clases en de incluir los ficheros que contengan la implementación de las clases

Por lo que si tuvierámso la siguiente estructura de clases