Bienvenid@s, continuando con el hilo del capítulo anterior en el cual creamos la clase empleado, vamos a ver qué es la herencia en la
programación.
Puedes ir al siguiente enlace para ver la clase empleado ... empleado.php
La herencia es como su propio nombre indica, heredar las características de un objeto ya definido, por ejemplo la clase "empleado" puede
ser heredada por otro objeto, también llamada subclase cuando hereda las características de otro objeto. Esta subclase puede ampliar
sus características y acceder a las propiedades y métodos de la clase heredada.
Para entenderlo mejor vamos a crear una subclase que heredará las propiedades y métodos de la clase "empleado", esta subclase nos
permitirá definir el sueldo total del empleado, para ello le agregaremos las siguientes propiedades ... SUELDO, EXTRA y IRPF ...
SUELDO será
el sueldo base
EXTRA será la paga extra
IRPF lo que se le descontará de hacienda
Cada una de las propiedades podrán ser cambiadas
a través de sus respectivos métodos y además se agregará un nuevo método que nos devolverá la cantidad total que percibirá el empleado.
Bien, empezaremos viendo la estructura básica de una subclase a la cual llamaremos "sueldo", primeramente incluiremos el archivo "empleado.php" de la clase empleado y
la heredaremos a través de la palabra reservada "extends" ...
<?php require("empleado.php"); class sueldo extends empleado { function __construct() { $self = $this; } } ?>
Bien, ahora tenemos la estructura básica de la nueva subclase sueldo que hereda la clase "empleado" a través de extends. También hemos
iniciado el métodos constructor, ahora agregaremos las propiedades ...
<?php require("empleado.php"); class sueldo extends empleado { function __construct() { $self = $this; $self -> SUELDO = 1000; $self -> EXTRA = 100; $self -> IRPF = 50; } } ?>
OK, ahora hay tres propiedades, ahora crearemos los métodos que nos permitirán modificarlas y como dije anteriormente un método llamado total(),
que regresará la suma total a percibir por el empleado.
<?php require("empleado.php"); class sueldo extends empleado { function __construct() { $self = $this; $self -> SUELDO = 1000; $self -> EXTRA = 100; $self -> IRPF = 50; } /* MÉTODOS */ function sueldo($sueldo="") { if ($sueldo == null) { $this->SUELDO = $this->SUELDO; } else { $this->SUELDO = $sueldo; } return $this->SUELDO; } function extra($extra="") { if ($extra == null) { $this->EXTRA = $this->EXTRA; } else { $this->EXTRA = $extra; } return $this->EXTRA; } function irpf($irpf="") { if ($irpf == null) { $this->IRPF = $this->IRPF; } else { $this->IRPF = $irpf; } return $this->IRPF; } function total() { $total = $this->SUELDO + $this->EXTRA - $this->IRPF; return $total; } /* MÉTODOS */ } ?>
Ahora ya puedes guardar la nueva subclase como sueldo.php, lo más significativo es el método total, este método no aceptará parámetros,
únicamente retornará el sueldo total a percibir del empleado tras la suma de la propiedad SUMA más EXTRA menos el IRPF.
Ahora desde un nuevo archivo, por ejemplo, index.php, incluiremos sueldo.php y llamaremos a la subclase para definir el sueldo de un
empleado con todos sus datos ...
<?php require("sueldo.php"); $sueldo_empleado = new sueldo(); $nombre = $sueldo_empleado -> nombre("Fernando"); $apellidos = $sueldo_empleado -> apellidos("Torres Macías"); $edad = $sueldo_empleado -> edad(30); $poblacion = $sueldo_empleado -> poblacion("Madrid"); $direccion = $sueldo_empleado -> direccion("Calle Zamora"); $telefono = $sueldo_empleado -> telefono("900 00 00 00"); $puesto = $sueldo_empleado -> puesto("Programador Web"); $sueldo = $sueldo_empleado->sueldo(1200); $extra = $sueldo_empleado->extra(250); $irpf = $sueldo_empleado->irpf(120); $total = $sueldo_empleado->total(); echo "<p>Nombre: $nombre</p>"; echo "<p>Apellidos: $apellidos</p>"; echo "<p>Edad: $edad</p>"; echo "<p>Poblacion: $poblacion</p>"; echo "<p>Dirección: $direccion</p>"; echo "<p>Teléfono: $telefono</p>"; echo "<p>Puesto: $puesto</p>"; echo "<p>Sueldo: $sueldo €</p>"; echo "<p>Paga extra: $extra €</p>"; echo "<p>Descuento IRPF: $irpf €</p>"; echo "<p>TOTAL A PERCIBIR: $total €</p>"; ?>
Y este es el resultado final ...
No hay comentarios:
Publicar un comentario