Diferencia entre revisiones de «Usuario:ManuelRomero/DAW/Distancia/2015/tutorias/tutoria1/»
De WikiEducator
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/DAW/distancia/tutorias/nav}} | {{:Usuario:ManuelRomero/DAW/distancia/tutorias/nav}} | ||
__NOTOC__ | __NOTOC__ | ||
− | + | <div id=parrafo> | |
<br/> | <br/> | ||
{{MRM_Objetivos| | {{MRM_Objetivos| | ||
Línea 10: | Línea 10: | ||
#La práctica de la calculadora | #La práctica de la calculadora | ||
#El examen de primera evaluación | #El examen de primera evaluación | ||
− | } | + | }} |
;La programación orientada a objetos | ;La programación orientada a objetos | ||
*Se revisa las peculiaridades de php como lenguaje orientado a objetos | *Se revisa las peculiaridades de php como lenguaje orientado a objetos | ||
Línea 68: | Línea 68: | ||
Por lo que si tuvierámso la siguiente estructura de clases | Por lo que si tuvierámso la siguiente estructura de clases | ||
+ | </div> |
Revisión de 23:34 24 ene 2020
|
- 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
- Que no permite la sobrecarga/polimorfismo como la entendemos en otros lenguajes como java
- 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