La herencia en PHP5
Explicamos la herencia en PHP 5, un proceso por el cual los objetos pueden heredar las caracterÃsticas de otros, de modo que se pueden hacer objetos especializados, basados en otros más generales.
La herencia es uno de los mecanismos fundamentales de la programación orientada a objetos. Por medio de la herencia, se pueden definir clases a partir de la declaración de otras clases. Las clases que heredan incluyen tanto los métodos como las propiedades de la clase a partir de la que están definidos.
Por ejemplo, pensemos en la clase “vehÃculo”. Esta clase general puede incluir las caracterÃsticas generales de todos los vehÃculos (atributos de la clase), como la matrÃcula, año de fabricación y potencia. Además, incluirá algunas funcionalidades (métodos de la clase) como podrÃan ser, arrancar() o moverse().
Ahora bien, en la práctica existen varios tipos de vehÃculos, como los coches, los autobuses y los camiones. Todos ellos tienen unas caracterÃsticas comunes, que han sido definidas en la clase vehÃculo. Además, tendrán una serie de caracterÃsticas propias del tipo de vehÃculo, que, en principio, no tienen otros tipos de vehÃculos. Por ejemplo, los camiones pueden tener una carga máxima permitida o los autobuses un número de plazas disponibles. Del mismo modo, las clases más especÃficas pueden tener unas funcionalidades propias, como los camiones cargar() y descargar(), o los autobuses aceptar_pasajeros() o vender_billete().
Lo normal en sistemas de herencia es que las clases que heredan de otras incluyan nuevas caracterÃsticas y funcionalidades, aparte de los atributos y métodos heredados. Pero esto no es imprescindible, de modo que se pueden crear objetos que hereden de otros y no incluyan nada nuevo.
Sintaxis de herencia en PHP 5
La programación orientada a objetos nos ofrece una serie de mecanismos para definir este tipo de estructuras, de modo que se puedan crear jerarquÃas de objetos que heredan unos de otros. Veremos ahora cómo definir estas estructuras de herencia en PHP 5. Para ello, continuando con nuestro ejemplo de video club, vamos a crear los distintos tipos de elementos que se ofrecen en alquiler.
Como todo el mundo conoce, los video clubs ofrecen distintos tipos de elementos para alquiler, como pueden ser las pelÃculas (cintas de vÃdeo o DVD) y los juegos. Cada elemento tiene unas caracterÃsticas propias y algunas comunes. Hemos llamado “soporte” a la clase general, que incluye las caracterÃsticas comunes para todos los tipos de elementos en alquiler. Luego hemos creado tres tipos de soportes distintos, que heredan de la clase soporte, pero que incluyen algunas caracterÃsticas y funcionalidades nuevas. Estos tipos de soporte serán “cinta_video”, “dvd” y “juego”.
El esquema de herencia que vamos a realizar en este ejemplo se puede ver en la siguiente imagen.
![[image]](http://mowser.com/img?url=http%3A%2F%2Fwww.desarrolloweb.com%2Farticulos%2Fimages%2Ftallerphp%2Fesquema-herencia-soportes.gif)
Empezamos por la clase soporte. Su código será el siguiente:
class soporte{
public $titulo;
protected $numero;
private $precio; Â Â Â function __construct($tit,$num,$precio){
$this->titulo = $tit;
$this->numero = $num;
$this->precio = $precio;
}
public function dame_precio_sin_iva(){
return $this->precio;
}
public function dame_precio_con_iva(){
return $this->precio * 1.16;
}
public function dame_numero_identificacion(){
return $this->numero;
}
public function imprime_caracteristicas(){
echo $this->titulo;
echo "<br>" . $this->precio . " (IVA no incluido)";
}
}
Los atributos que hemos definido son, tÃtulo, numero (un identificador del soporte) y precio. Hemos aplicado a cada uno un modificador de acceso distinto, para poder practicar los distintos tipos de acceso.
Hemos definido un constructor, que recibe los valores para la inicialización del objeto. Un método dame_precio_sin_iva(), que devuelve el precio del soporte, sin aplicarle el IVA. Otro método dame_precio_con_iva(), que devuelve el precio una vez aplicado el 16% de IVA. El método dame_numero_identificacion(), que devuelve el número de identificador y imprime_caracteristicas(), que muestra en la página las caracterÃsticas de este soporte.
En todos los métodos se hace uso de la variable $this. Esta variable no es más que una referencia al objeto sobre el que se está ejecutando el método. En programación orientada a objetos, para ejecutar cualquiera de estos métodos, primero tenemos que haber creado un objeto a partir de una clase. Luego podremos llamar los métodos de un objeto. Esto se hace con $mi_objeto->metodo_a_llamar(). Dentro de método, cuando se utiliza la variable $this, se está haciendo referencia al objeto sobre el que se ha llamado al método, en este caso, el objeto $mi_objeto. Con $this->titulo estamos haciendo referencia al atributo “titulo” que tiene el objeto $mi_objeto.
Si queremos probar la clase soporte, para confirmar que se ejecuta correctamente y que ofrece resultados coherentes, podemos utilizar un código como el siguiente.
$soporte1 = new soporte("Los Intocables",22,3);
echo "<b>" . $soporte1->titulo . "</b>";
echo "<br>Precio: " . $soporte1->dame_precio_sin_iva() . " euros";
echo "<br>Precio IVA incluido: " . $soporte1->dame_precio_con_iva() . " euros";
En este caso hemos creado una instancia de la clase soporte, en un objeto que hemos llamado $soporte1. Luego imprimimos su atributo titulo (como el tÃtulo ha sido definido como public, podemos acceder a él desde fuera del código de la clase.
Luego se llaman a los métodos dame_precio_sin_iva() y dame_precio_con_iva() para el objeto creado.
Nos darÃa como resultado esto:
Los Intocables
Precio: 3 euros
Precio IVA incluido: 3.48 euros
En siguientes capÃtulos vamos a ver cómo definir clases que hereden de la clase soporte.
Extraido desde DesarrolloWeb.com
Comentarios Recientes