Diferencia entre revisiones de «Plantilla:PHP/Herencia»
De WikiEducator
Línea 61: | Línea 61: | ||
*Realizamos los siguientes clases | *Realizamos los siguientes clases | ||
;Clase Polígono | ;Clase Polígono | ||
− | + | <font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploGeometria/Poligono | Descripción de la Clase Polígono]]</font> | |
− | <font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploGeometria/Poligono | Descripción de la Clase | + | |
<hr /> | <hr /> | ||
;Clase Rectángulo | ;Clase Rectángulo | ||
Línea 72: | Línea 71: | ||
;Clase Triangulo | ;Clase Triangulo | ||
− | <font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploGeometria/Triangulo | Descripción de la Clase | + | <font size<nowiki>=</nowiki>5 color<nowiki>=</nowiki>red>[[Usuario:ManuelRomero/ProgramacionWeb/php/POO/Herencia/EjemploGeometria/Triangulo | Descripción de la Clase Triángulo]]</font> |
<hr /> | <hr /> | ||
;Uso de esta aplicación | ;Uso de esta aplicación | ||
+ | *Un posible código index.php que lo único que hace es crear objetos y visulizar su área y dibujarlos | ||
<source lang=php> | <source lang=php> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title></title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <?php | ||
+ | spl_autoload_register(function ($clase){ | ||
+ | require "$clase.php"; | ||
+ | }); | ||
+ | |||
+ | $triangulo = new Triangulo(200,300); | ||
+ | $cuadrado = new Cuadrado(200); | ||
+ | $rectangulo = new Rectangulo(200,100); | ||
+ | |||
+ | echo "<h4>Triángulo, ". Poligono::lados($triangulo)." y área ". | ||
+ | $triangulo->area()." px<sup>2</sup></h4>"; | ||
+ | |||
+ | echo "<h4>Cuadrado, ". Poligono::lados($cuadrado)." y área ". | ||
+ | $cuadrado->area()." px<sup>2</sup></h4>"; | ||
+ | echo "<h4>Rectángulo, ". Poligono::lados($rectangulo)." y área ". | ||
+ | $rectangulo->area()." px<sup>2</sup></h4>"; | ||
+ | |||
+ | echo $triangulo->dibuja(); | ||
+ | echo $cuadrado->dibuja(); | ||
+ | echo $rectangulo->dibuja(); | ||
+ | |||
+ | |||
+ | ?> | ||
+ | </body> | ||
+ | </html> | ||
</source> | </source> | ||
;Resultado de su ejecución | ;Resultado de su ejecución | ||
− | [[Archivo: | + | [[Archivo:AppGeometria.png]] |
}} | }} | ||
V | V |
Revisión de 13:59 7 dic 2016
Herencia
- La herencia es un mecanismo de programación que me permite crear una jerarquía en los componentes software, que se pueden ir especializando
Se puede definir una clase con ciertas características (atributos, métodos)
- Posteriormente puedo definir otra clase a partir de la ya existente, quedándo implícitamente los atributos y métodos como también parte de su estructura o composición
- Es una característica muy natural (p.e Personas (médicos y bailarines) vehículos (Terrestres (coche, moto) Acuáticos (barco, lancha))
- Es una forma de obtener características comunes por separado y luego especializar evitando redundancias
- Facilita la reusabilidad y adaptación
- Vemos dos ejemplos para explicar de forma empírica este concepto
Herencia: gestión personal ambulatorio
| |
Las propiedades (atributos) y métodos de cada clase se especifican en los siguientes diagramas de clases
|
clases abstractas
- Es una situación particular que se presentan en muchas jerarquías
- Cuando realizamos jerarquías muchas veces encontramos métodos comunes a varias clases. Esto implicaría que ese método sería un método de una superclase o clase padre de la que luego se heredará
- Pero puede ocurrir que aunque el concepto del método es común a todas las clases,la forma de implementarla es particular en cada una de ellas.
- En este caso, la forma correcta de proceder, es especificar el método el la clase superior, e implementar el código en cada una de las clases que derivo.
- El método especificado en la clase superior sería un método sin código, conocido como un método abstracto, y la clase dónde se especifica pasa a ser abstracta
|
|
- Vamos a platear un ejemplo
App de Geometría
| |
Descripción de la Clase Polígono
Descripción de la Clase Rectángulo
Descripción de la Clase Cuadrado
Descripción de la Clase Triángulo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <?php spl_autoload_register(function ($clase){ require "$clase.php"; }); $triangulo = new Triangulo(200,300); $cuadrado = new Cuadrado(200); $rectangulo = new Rectangulo(200,100); echo "<h4>Triángulo, ". Poligono::lados($triangulo)." y área ". $triangulo->area()." px<sup>2</sup></h4>"; echo "<h4>Cuadrado, ". Poligono::lados($cuadrado)." y área ". $cuadrado->area()." px<sup>2</sup></h4>"; echo "<h4>Rectángulo, ". Poligono::lados($rectangulo)." y área ". $rectangulo->area()." px<sup>2</sup></h4>"; echo $triangulo->dibuja(); echo $cuadrado->dibuja(); echo $rectangulo->dibuja(); ?> </body> </html>
|
V