Vous êtes sur la page 1sur 1

Curso PHP. Captulo 8: Programacin orientada a objetos. (II/II) 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. o 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: con CLIENTE.PHP <?php class cliente { private $nombre; private $productosAlquilados; public function __construct($nombre) { $this->nombre=$nombre; >productosAlquilados=array(); $this->productosAlquilados=array(); } public function getNombre() { return $this->nombre; } public function getProductosAlquilados() { return $this->productosAlquilados; } public function alquilarProducto($producto) { $this->productosAlquilados[]=$producto; return true; } } ?> PRODUCTO.PHP <?php abstract class Producto { protected $nombre; protected $precio; public function getNombre() { return $this->nombre; } abstract public function getPrecio(); } ?>

PELCULA.PHP <?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->idioma; } public function getDuracion() { return $this->duracion; } } ?> CD.PHP <?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; } } ?>

JUEGO.PHP <?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; } } ?> VIDEOCLUB.PHP <?php include_once "cliente.php"; include_once "producto.php"; include_once "pelicula.php"; include_once "cd.php"; include_once "juego.php"; 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) { return $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); } } ?>

VIDEOCLUB1.PHP <html> <head><title>mi aplicacion para video club</title></head> <body> <?php include_once "videoclub.php"; $videoclub=new videoclub('VideoMax'); $cliente=new cliente('Francisco'); $pelicula=new pelicula('El Seor de los Anillos','Castellano','3 horas','Fantasia'); $videoclub->addCliente($cliente); $videoclub->addProducto($pelicula); $videoclub->alquilar($cliente,$pelicula); $clientes=$videoclub->getClientes(); echo '<p>lista de clientes</p>'; foreach($clientes as $cliente) { echo $cliente->getNombre().'<br>'; } $productos=$videoclub->getProductos(); echo '<p>lista de productos</p>'; foreach($productos as $producto) { echo $producto->getNombre().'<br>'; } ?> </body> </html> No hay mucho ms que decir de este script de ejemplo ya que el cdigo viene muy detallado. Creamos una instancia del videoclub, un nuevo cliente y un nuevo producto, los registramos dentro del videoclub, y alquilamos la pelicula al cliente. Despes obtenemos los clientes y productos registrados y los mostramos por pantalla. Y hasta aqu nuestra pequea aplicacin de prueba. Vuelvo a repetir, que no es una buena forma de implementar una aplicacin de gestin, ya que no persisten los datos. Con cada nueva peticin, se crear un nuevo videoclub vacio. Y se volvern a aadir el cliente y la pelcula. Adems las clases estn incompletas, faltan mtodos, como el de devolver el producto, eliminar un cliente, eliminar un producto, comprobar si el producto est disponible y no est alquilado, y ni siquiera interacta con el usuario, simplemente sigue las mismas instrucciones con cada peticin. En definitiva, que es una chapuza de aplicacin lo que hemos creado, pero sirve bastante bien para ver como podemos manejar objetos a partir de clases creadas por nosotros mismos. DIFERENCIAS ENTRE INCLUDE, REQUIRE, INCLUDE_ONCE Y REQUIRE_ONCE creamos un fichero llamado por ejemplo general.php con las funciones que necesitamos y aadimos un include a cada uno de los ficheros luego para modificar la funcion solo tenemos que editar el fichero general.php ejemplo de include: fichero1.php [php]include fichero2.php;//$variable es igual a 10 echo $variable;//imprime 10[/php] fichero2.php [php]$variable = 10;[/php] si ejecutamos el fichero1.php, mostrara por pantalla el valor de la variable $variable, 10 la diferencia entre require e include, es que si el fichero no existe: include mostrara un warning y continuara con la ejecucion require mostrara un fatal error y parara la ejecucion ejemplo de include_once: fichero1.php [php]include_once(fichero2.php); //$variable es igual a 10 $variable = 20; //$variable es igual a 20 include_once(fichero2.php); //$variable es igual a 20 echo $variable; //imprime 20[/php] fichero2.php [php] $variable = 10[/php] si ejecutamos fichero1.php, mostrara por pantalla 20 porque 20 y no 10? tanto include_once como require_once solo se pueden ejecutar una vez la segunda vez que se llama a include_once, esta es como si no existiera. si en vez de utilizar include_once, utilizamos include o require el valor final de $variable seria 10

Vous aimerez peut-être aussi