Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

La herencia en PHP5, Tercera parte


Creamos otras clases a partir de una clase padre, para continuar con nuestro ejemplo de videoclub.


17/6/05 - La clase soporte tiene otras clases que heredan de ella y que todavía no hemos definido.

Veamos primero el código de la clase "dvd", que es muy parecido al visto para la clase cinta_video. Lo único que cambia es que ahora vamos a definir otros atributos relacionados con los DVD, como son los idiomas disponibles en el DVD y el formato de pantalla que tiene la grabación.

class dvd extends soporte{
   public $idiomas_disponibles;
   private $formato_pantalla;

   function __construct($tit,$num,$precio,$idiomas,$pantalla){
      parent::__construct($tit,$num,$precio);
      $this->idiomas_disponibles = $idiomas;
      $this->formato_pantalla = $pantalla;
}

   public function imprime_caracteristicas(){
      echo "Película en DVD:<br>";
      parent::imprime_caracteristicas();
      echo "<br>" . $this->idiomas_disponibles;
   }
}
Nota:Para una explicación detallada de este código os referimos al capítulo anterior, donde se explicaba la clase cinta_video y la sobrescritura de métodos.


Por su parte, la clase juego, tendrá 3 nuevos atributos. Estos son "consola", para especificar la consola para la que está creado este juego, "min_num_jugadores", para especificar el número de jugadores mínimo y "max_num_jugadores", para especificar el máximo número de jugadores que pueden participar en el juego.

Este será el código de la clase juego.

class juego extends soporte{
   public $consola; //nombre de la consola del juego ej: playstation
   private $min_num_jugadores;
   private $max_num_jugadores;

   function __construct($tit,$num,$precio,$consola,$min_j,$max_j){
      parent::__construct($tit,$num,$precio);
      $this->consola = $consola;
      $this->min_num_jugadores = $min_j;
      $this->max_num_jugadores = $max_j;
   }

   public function imprime_jugadores_posibles(){
      if ($this->min_num_jugadores == $this->max_num_jugadores){
         if ($this->min_num_jugadores==1)
         echo "<br>Para un jugador";
         else
         echo "<br>Para " . $this->min_num_jugadores . " jugadores";
      }else{
       echo "<br>De " . $this->min_num_jugadores . " a " . $this->max_num_jugadores . " Jugadores.";
      }
   }

   public function imprime_caracteristicas(){
      echo "Juego para: " . $this->consola . "<br>";
      parent::imprime_caracteristicas();
      echo "<br>" . $this->imprime_jugadores_posibles();
   }
}


Nos fijamos en el constructor, que llama al constructor de la clase padre para inicializar algunos atributos propios de los soportes en general.

Luego nos fijamos en el método imprime_jugadores_posibles(), que muestra los jugadores permitidos. Ha sido declarada como public, para que se pueda acceder a ella desde cualquier lugar. Nos da un mensaje como "Para un jugador" o "De 1 a 2 Jugadores", dependiendo de los valores min_num_jugadores y max_num_jugadores.

Por su parte, se sobrescribe la función imprime_caracteristicas(), para mostrar todos los datos de cada juego. Primero se muestra la consola para la que se ha creado el juego. Los datos generales (propios de la clase "soporte") se muestran llamando al mismo método de la clase "parent" y el número de jugadores disponibles se muestra con una llamada al método imprime_jugadores_posibles().

Podríamos utilizar un código como el que sigue, si es que queremos comprobar que la clase funciona correctamente y que nos ofrece la salida que estábamos pensando.

$mijuego = new juego("Final Fantasy", 21, 2.5, "Playstation",1,1);
$mijuego->imprime_caracteristicas();

//esta línea daría un error porque no se permite acceder a un atributo private del objeto
//echo "<br>Jugadores: " . $mijuego->min_num_jugadores;
//habria que crear un método para que acceda a los atributos private
$mijuego->imprime_jugadores_posibles();

echo "<p>";
$mijuego2 = new juego("GP Motoracer", 27, 3, "Playstation II",1,2);
echo "<b>" . $mijuego2->titulo . "</b>";
$mijuego2->imprime_jugadores_posibles();


Este código que utiliza la clase "juego" dará como salida:

Juego para: Playstation
Final Fantasy
2.5 (IVA no incluido)
Para un jugador

Para un jugador
GP Motoracer
De 1 a 2 Jugadores.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Manual de PHP 5

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Manuales de PHP


 Comentarios de los visitantes
Aun no hemos recibido comentarios de este artículo.
Puedes ser el primero en enviar tu comentario.



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Manual de PHP 5
Categorías
+Manuales de PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia