RETO MES DE ABRIL .............................docx
Guía práctica Herencia
1. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
1.Conceptos básicos: Clases,Objetos,Herencia,UML
Unidad VI y VII
Herencia y Polimorfismo
Objetivo de la Unidad:
Desarrollar los conceptos y fundamentos de la programación orientada a objetos a través de la técnica de
herencia y polimorfismo entre clases y objetos
Practica a Realizar en el Laboratorio
Realiza la siguiente practica en tu computador. Crea una carpeta raíz en el servidor local con el nombre de
herencia, dentro de esta las carpetas css, img, modelo,vista y controlador.
La página principal contiene la siguiente vista
Introducción
El concepto de herencia nos permite crear una nueva clase que esté basada en otra clase ya existente. Esto
nos sirve cuando nos damos cuenta de que precisamos una nueva clase que posea métodos o propiedades
muy semejantes a los de otra clase ya definida. E n vez de declarar dos veces lo mismo, simplemente
“extendemos” la clase primera, como si creáramos un duplicado de ésta, y tendremos una clase “hija”. Luego a
ese duplicado le podemos agregar algunas otras propiedades y/o métodos propios de esa clase hija y no de la
original, es decir, especializamos un poco más sus funcionalidades. La nueva clase va a poder acceder a sus
propios métodos y propiedades, pero también a los de su clase “padre” que hayan sido declarados como
protected o como public (pero no podrá acceder a los que hayan sido declarados como private).
Se denomina herencia a la capacidad de una clase de emplear todos los métodos y propiedades de otra clase,
lo cual se consigue en PHP mediante la palabra reservada extends.
Objetivo.
Aprender a codificar la Herencia en PHP
Requerimientos.
Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu),Apache,
PHP, Editor de Texto.
Componentes.
2. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Código del archivo index.php
Código de la vista principal.php archivo en la carpeta vista
3. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Código de la clase padre Persona archivo persona.php en la carpeta modelo
Código de la clase hija Docente archivo docente.php en la carpeta modelo
4. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Código de la vista del docente.php en la carpeta vista
6. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Código del controlador docente.php en la carpeta controlador
Código de mostrardocente.php en la carpeta vista
7. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Al ejecutar la opción docente se visualiza el formulario de entrada de datos de un docente
Al dar clic al botón Registrar Docente se presenta la vista mostrar los datos registrados en el formulario
Te invito a desarrollar la clase estudiante que herede de la clase persona: La clase estudiante debe indicar
sección. Cohorte, lapso, índice de nota.
8. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
2.- Dado el siguiente Diagrama de Clase realizar en tu computador la siguiente practica
Crea una carpeta en llamada Practica Herencia, y luego crea las carpetas Modelo,Vista,Controlador en la
carpeta Modelo crea el script llamado clasepersona.php
<?php
class Persona {
private $cedula;
private $nombre;
private $sexo;
private $direccion;
public function __construct($ci,$nombre,$sexo,$dir)
{
$this->cedula = $ci;
$this->nombre = $nombre;
$this->sexo = $sexo;
$this->direccion = $dir;
}// fin del constructor
public function getCedula(){
return $this->cedula;
Persona
-cedula:String
-nombre:String
-sexo:String
-direccion:String
CtaBancaria
-NroCta:String
-titular:Persona
-FechaApertura:fecha
#SaldoDispo:Float
+depositar(monto)
+retirar(monto)
CtAhorro
-interes:float
+CalcularInteres()
CtaCorriente
+Solicitarchequera()
+EmitirCheque()
9. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
}
public function getNombre(){
return $this->nombre;
}
public function __toString(){
return $this->nombre . ' ' .$this->cedula;
}
}// fin de la clase
?>
Luego el segundo script llamado ClaseCtaBanco.php
<?php
require_once 'clasepersona.php';
class CtaBancaria {
private $nroCta;
private $titular;
private $fechaApertura;
protected $saldoDispo;
public function __construct($nrocta,$ci,$nombre,$sexo,$dir,$fecha,$saldo)
{
$this->nroCta = $nrocta;
$this->titular = new Persona($ci,$nombre,$sexo,$dir);
$this->fechaApertura = $fecha;
$this->saldoDispo = $saldo;
}// fin del costructor
public function depositar($monto){
$this->saldoDispo += $monto;
}// fin metodo depositar
10. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
public function retirar($monto){
$this->saldoDispo -= $monto;
}// metodo retirar
public function __toString(){
return ' Titular '.$this->titular-> __toString() . ' Nro de Cta '.$this->nroCta. ' Saldo Disponibe '.$this-
>saldoDispo;
}// fin de ToString
public function getSaldoDispo(){
return $this->saldoDispo ;
} // fin del metodo obtener el saldo disponible
}// fin de la clase
?>
En la carpeta controlador crear el sript controlador.php
<?php
require_once '../Modelo/claseCtaBanco.php';
$nrocta= "28905";
$ci ="10956121";
$nombre = "Lissette Mujica";
$sexo = "F";
$dir = "Quibor";
$fecha= "10/04/2006";
$saldo = 2000000;
$monto= 1500000;
$objcta = new CtaBancaria($nrocta,$ci,$nombre,$sexo,$dir,$fecha,$saldo);
echo "****************************Registro************************";
echo $objcta;
echo "<br>";
echo "****************************Deposito****************************";
echo "<br>";
$objcta->depositar(5000000);
echo $objcta;
11. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
echo "<br>";
echo "****************************Retiro****************************";
echo "<br>";
if ($monto <= $objcta->getSaldoDispo()){
$objcta->retirar($monto);
}
else {echo "error no dispone de saldo suficiente";
}
echo $objcta;
?>
Luego ejecutar el script en el navegador
2da practica herencia
Crear la carpeta Modelo el script clasectahorro.php
<?php
require_once '../Modelo/claseCtaBanco.php';
class CtAhorro extends CtaBancaria {
private $interes;
const tasa = 0.05;
public function __construct($nrocta,$ci,$nombre,$sexo,$dir,$fecha,$saldo)
{
parent:: __construct($nrocta,$ci,$nombre,$sexo,$dir,$fecha,$saldo);
$this-> interes= 0.0;
}// fin del constructor
public function CalcularInteres(){
$this-> interes = $this->saldoDispo * (self::tasa);
$this->saldoDispo= $this->saldoDispo+ $this-> interes;
Self, hace referencia a
la constantes .
No está permitido
$this->constante
La palabra clave parent, hace referencia a
la clase de la cual se está heredando.
Al usar parent::metodo(), se llama a la
función que se sobrescribio
12. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
}// fin de Metodo Calcular el interes
public function __toString(){
return ' Datos de La Cuenta de Ahorro '. parent::__toString().' Interes Mensual '. $this-> interes;
}// fin metodo toString
public function MostrarCta(){
}// fin del metodo Mostrar datos de la Cuenta
}// fin de la clase
?>
Luego en la carpeta Controlador controlHerencia.php
<?php
require_once './Modelo/clasectahorro.php';
$nrocta= "28905";
$ci ="10956121";
$nombre = "Lissette Mujica";
$sexo = "F";
$dir = "Quibor";
$fecha= "10/04/2006";
$saldo = 2000000;
$monto = 1500000;
$objcta_ahorro = new CtAhorro($nrocta,$ci,$nombre,$sexo,$dir,$fecha,$saldo);
echo "****************************Registro************************";
echo "<br>";
echo $objcta_ahorro;
echo "<br>";
echo "****************************Deposito****************************";
echo "<br>";
$objcta_ahorro->depositar(5000000);
echo $objcta_ahorro;
echo "<br>";
echo "*****************************Retiro******************************";
¡Y funciona! ;-)
La explicación es que, a
diferencia que el
constructor, el
toString se hereda
porque es público
pero este se ejecuta
de forma automática,
sin necesidad de
explicitar como en el
anterior caso
(constructor).
Aquí es donde
deberíamos entender
que el principio de
ocultación refuerza los
diseños al ocultar y
cerrar el acceso a
detalles internos, pero
no por eso nos impide
poder aprovechar las
implementaciones
realizadas.
El método debe devolver un
string, se llama solo cuando
se combina directamente
con echo o print, es un
método mágico
13. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
echo "<br>";
if ($monto <= $objcta_ahorro->getSaldoDispo()){
$objcta_ahorro->retirar($monto);
}
else {echo "error no dispone de saldo suficiente";
}
$objcta_ahorro->CalcularInteres();
echo $objcta_ahorro;
?>
Actividad a Realizar
1.- Crear las vistas para cada práctica y asícumplir con el patrón Modelo Vista Controlador
2.- Crear una abstracción de herencia de clases de tu sistema propuesto en la U.C. PSTII
Referencias Bibliográficas
Un sitio clave para quienes programamos en PHP orientado a objetos es PHPClasses:
http://www.phpclasses.org