0% encontró este documento útil (0 votos)
38 vistas7 páginas

Ejemplo de POO en PHP: Videoclub

Este documento describe un ejemplo de gestión de un videoclub utilizando objetos en PHP. Se definen clases como Videoclub, Cliente, Producto, Película, Cd y Juego para representar los diferentes elementos del dominio. Se muestra el código PHP para instanciar objetos de estas clases y ejecutar operaciones como registrar un cliente, agregar un producto y alquilar un producto a un cliente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas7 páginas

Ejemplo de POO en PHP: Videoclub

Este documento describe un ejemplo de gestión de un videoclub utilizando objetos en PHP. Se definen clases como Videoclub, Cliente, Producto, Película, Cd y Juego para representar los diferentes elementos del dominio. Se muestra el código PHP para instanciar objetos de estas clases y ejecutar operaciones como registrar un cliente, agregar un producto y alquilar un producto a un cliente.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Una vez visto gran parte de los conceptos orientados a objetos en PHP vamos a mostrar un

ejemplo que maneja objetos para gestionar un videoclub. Antes de nada, hay que decir que este
ejemplo no est completo, ni siquiera es la forma ideal de realizar una aplicacin de gestin,
pero nos sirve como ejemplo para aprender a manejar objetos.

Vamos a realizar en primer lugar un diagrama de clases en UML para representar grficamente
las clases que vamos a utilizar para gestionar los diferentes objetos. Para no alargar mucho el
ejemplo, vamos a contar con una serie de clases muy limitadas:

-La clase Videoclub: es la clase principal de nuestra aplicacin. Representa a un videoclub en el


dominio del problema y cuenta con una coleccin de clientes y productos registrados. As como
mtodos para alquilar un producto a un cliente, y registrar nuevos productos y clientes en el
videoclub.

-La clase Cliente: representa a un cliente. Cuenta con una variable que representa la coleccin
de productos alquilados.
-La clase Producto: clase abstracta que representa un producto del videoclub. No podemos
instanciar objetos Producto. Cuenta con una serie de atributos que heredarn las
subclases,nombre y precio.

-Las clases Pelicula, Cd, Juego: clases derivadas de la clase padre Producto. Representan los
diferentes productos del que dispone el videoclub. Cada producto tiene asignado un precio
diferente de alquiler. Para mostrar un ejemplo de clases abstractas, herencias y reemplazo de
mtodos, he diseado la clase Producto con un mtodo abstracto getPrecio() que debern
implementar las clases derivadas. As cada tipo de Producto contar con un
mtodo getPrecio() que devolver el precio en funcin del tipo de producto que sea. Las
peliculas devolvern 2 euros, los cds de msica devolvern 1 euro y los juegos 3 euros.

Tras esta breve descripcin de las clases del dominio de nuestra aplicacin, vamos a crear el
cdigo PHP que utilizaremos para instanciar objetos:

Clase Cliente

<?php

/* Clase que representa a un cliente en el dominio del problema */


class Cliente
{
private $nombre;
private $productosAlquilados;

public function __construct($nombre)


{
$this->nombre=$nombre;
$this->productosAlquilados=array();
}

public function getNombre()


{
return $this->nombre;
}

public function getProductosAlquilados()


{
return $this->productosAlquilados;
}

public function alquilarProducto($producto)


{
$this->productosAlquilados[]=$producto;
return true;
}
}
?>

Clase Producto

<?php
abstract class Producto
{
protected $nombre;
protected $precio;

public function getNombre()


{
return $this->nombre;
}

abstract public function getPrecio();


}
?>

Clase Pelicula

<?php
class Pelicula extends Producto
{
private $idioma;
private $duracion;
private $genero;

public function __construct($nombre,$idioma,$duracion,$genero)


{ $this->nombre = $nombre;
$this->precio = 2;
$this->idioma = $idioma;
$this->duracion = $duracion;
$this->genero=$genero;
}

public function getPrecio()


{
return $this->precio;
}

public function getIdioma()


{
return $this->precio;
}

public function getDuracion()


{
return $this->precio;
}
}
?>

Clase Cd

<?php
class Cd extends Producto
{

private $duracion;
private $genero;
public function __construct($nombre,$duracion,$genero)
{
$this->nombre = $nombre;
$this->precio = 1;
$this->genero = $genero;
$this->duracion = $duracion;
}

public function getPrecio()


{
return $this->precio;
}

public function getDuracion()


{
return $this->duracion;
}

public function getGenero()


{
return $this->Genero;
}
}
?>

Clase Juego

<?php
class Juego extends Producto
{

private $plataforma;
private $genero;

public function __construct($nombre,$plataforma,$genero)


{
$this->nombre = $nombre;
$this->precio = 3;
$this->idioma = $idioma;
$this->duracion = $duracion;
}

public function getPrecio()


{
return $this->precio;
}

public function getPlataforma()


{
return $this->plataforma;
}

public function getGenero()


{
return $this->Genero;
}
}
?>

Clase Videoclub

<?php

include_once('[Link]');
include_once('[Link]');
include_once('[Link]');
include_once('[Link]');
include_once('[Link]');

class Videoclub
{

private $nombre;
private $productos;
private $clientes;

public function __construct($nombre)


{
$this->nombre=$nombre;
$this->productos=array();
$this->clientes=array();
}

public function addProducto($producto)


{
$this->productos[]=$producto;
}

public function getProductos()


{
return $this->productos;
}

public function addCliente($cliente)


{
$this->clientes[]=$cliente;
}

public function getClientes()


{
return $this->clientes;
}

public function alquilar($cliente,$producto)


{
$cliente->alquilarProducto($producto);
}
}
?>

Ya tenemos creadas las clases que vamos a utilizar para instanciar objetos y gestionar
nuestro videoclub. Ahora realizamos un pequeo script de ejemplo que muestr el manejo de
estos objetos.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<title>Prueba</title>
</head>
<body>

<?php

include_once('[Link]');

//Creamos un videoclub
$videoclub= new Videoclub('VideoMax');

//Creamos un nuevo cliente de nombre Francisco


$cliente=new Cliente('Francisco');

//Creamos una nueva pelicula


$pelicula=new Pelicula('El seor de los Anillos','Castellano','3
horas','Fantasa');

//Registramos el cliente y el producto en el videoclub


$videoclub->addCliente($cliente);
$videoclub->addProducto($pelicula);

//El cliente alquila la pelicula


$videoclub->alquilar($cliente, $pelicula);

//Obtenemos la lista de clientes registrados


$clientes = $videoclub->getClientes();

//Imprimimos la lista de clientes registrados


echo '<p>Lista de Clientes:</p>';
foreach($clientes as $cliente)
{
echo $cliente->getNombre().'<br />';
}

//Obtenemos la lista de productos registrados


$productos = $videoclub->getProductos();
echo '<p>Lista de Productos:</p>';
foreach($productos as $producto)
{
echo $producto->getNombre().'<br />';
}
?>

</body>
</html>

También podría gustarte