You are on page 1of 11

GUA DE LABORATORIO

PROGRAMACIN ORIENTADA A OBJETOS CON PHP PARTE I

POO con PHP Parte I

LABORATORIO

Objetivos: Comprender los conceptos bsicos de la Programacin Orientada a Objetos (POO). Determinar, definir e implementar correctamente las Clases que involucran la solucin a un problema de mediana complejidad. Conocer la implementacin de las Clases y objetos con el lenguaje PHP.

Equipos, Materiales, Programas y Recursos: Sistema Operativo Windows. Apache, PHP y MySQL. Navegador Web.

Introduccin: En la presente unidad, se detallan los conceptos de la POO aplicados a PHP.

Preparacin: El alumno debe haber revisado previamente, las animaciones sobre los distintos temas del laboratorio correspondiente. Durante el desarrollo de los temas de clase se tendrn ejercicios explicativos en cada uno de los puntos, ello le dar a la sesin una interaccin de la teora y la parte prctica, ya que en todo el momento el alumno podr comprobar en su propia PC.

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 1

POO con PHP Parte I

EJERCICIO 1: EL GATO Felino.class.php <?php class Felino { // Atributos public $peso; public $tamanio; // Constructor public function __construct($p, $t){ $this->peso = $p; $this->tamanio = $t; } // Metodos public function araniar(){ // Aqui va la logica de araniar } } ?>

Gato.class.php <?php require_once 'Felino.class.php'; class Gato extends Felino { // Atributos public $nombre; public $raza; // Constructor public function __construct($p, $t, $n, $r){ parent::__construct($p, $t); $this->nombre = $n; $this->raza = $r; } // Metodos public function ronronear(){ return "Rrrrrrrrrmm"; } } ?>

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 2

POO con PHP Parte I

Persona.class.php <?php class Persona { // Atributos public $nombre; public $sexo; public $gatos; // $gatos es un arreglo // Constructor public function __construct($n, $s){ $this->nombre = $n; $this->sexo = $s; $this->gatos = array(); } // Metodos public function adoptarGato($gato){ $this->gatos[] = $gato; } public function mostrarMisGatos(){ print 'Mis gatos son: <br/>'; for($i=0; $i < count($this->gatos); $i++){ print $this->gatos[$i]->nombre . "<br/>"; } } } ?> probado_gato.php <?php require 'Felino.class.php'; require 'Gato.class.php'; require 'Persona.class.php'; // Creando el objeto $felino1 $felino1 = new Felino("12Kg","Grande"); // Creando objetos gatos $gato1 = new Gato("5Kg","Pequeo","Tom", "Angora"); $gato2 = new Gato("3Kg","Muy pequeo","Gabo", "Mezclado"); // Creando persona y adopta gatos $persona1 = new Persona("David","M"); $persona1->adoptarGato($gato1); $persona1->adoptarGato($gato2); $persona1->mostrarMisGatos(); ?>

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 3

POO con PHP Parte I

EJERCICIO 2: LA BICICLETA Bicicleta.class.php


<?php class Bicicleta { // Estas son las variables var $marca; var $modelo; var $numero_aro; function Bicicleta($pMarca, $pModelo, $pNumero_aro){ $this->marca = $pMarca; $this->modelo = $pModelo; $this->numero_aro = $pNumero_aro; } // Estos son los mtodos: function pedalear(){ $ret = "Pedaleando...<br/>"; return $ret; } function frenar(){ $ret = "Frenando...<br/>"; return $ret; } function cambiar_llanta($llanta){ $ret = "Cambiando la llanta " . $llanta . "<br/>"; return $ret; } } ?>

BicicletaCarrera.class.php
<?php require_once "Bicicleta.class.php"; class BicicletaCarrera extends Bicicleta { var $peso_oficial; function BicicletaCarrera($pMarca, $pModelo, $pNumero_aro, $peso_oficial){ parent::Bicicleta($pMarca, $pModelo, $pNumero_aro); $this->peso_oficial = $peso_oficial; } function acelerar(){ $ret = "Acelerando... <br/>"; return $ret; } } ?>

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 4

POO con PHP Parte I

probando_bicicletas.php
<?php require_once 'Bicicleta.class.php'; require_once 'BicicletaCarrera.class.php'; $bicicletaObj = new Bicicleta("Goliat", "RX", 28); // Accediendo al atributo print "La marca de la bicicleta es: " . $bicicletaObj->marca . "<br/>"; // Accediendo a los mtodos print $bicicletaObj->pedalear(); print $bicicletaObj->frenar(); print "<br/>"; print "BICICLETA DE CARRERA: "; print "<br/>"; // Creando una bicicleta carrera $bicicletaCarreraObj = new BicicletaCarrera("Goliat", "SC", 30, 65); print $bicicletaCarreraObj->pedalear(); print $bicicletaCarreraObj->acelerar(); print $bicicletaCarreraObj->frenar(); ?>

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 5

POO con PHP Parte I

EJERCICIO 3: EL CENTRO DE INFORMACIN El Centro de Informacin de una institucin desea realizar una aplicacin informtica que facilite la gestin de su mediateca y permita a sus socios la consulta (en su local) y el prstamo de diferentes tipos de soporte: libros, cintas de vdeo y cintas de audio y CD. Los datos asociados a cada tipo de soporte son: Para los libros: ttulo, autor, nmero de pginas, nmero de isbn. Para las cintas de vdeo (documentales, pelcula, etc.): ttulo, director, actores, duracin. Para las cintas y CD audio (discursos, entrevistas, etc.): ttulo, autor, lugar, duracin. Cada socio puede poseer hasta tres medios simultneos de cualquier tipo, pero el clculo de los precios para cada medio son independientes. Los libros pueden ser consultados a un precio de S./ 5.0 diarios. Las cintas de video pueden ser prestadas con un precio de S./10.0 diarios. Para las cintas y CDs pueden el precio es de S./20.0 (pago nico). Se desea disear una aplicacin que permita registrar el prstamo a un socio, el cual puede contener hasta tres ejemplares de cualquier soporte y permita calcular su precio.

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 6

POO con PHP Parte I

EJECICIO 4: CLASE DE CONEXIN A MYSQL Crear una Clase de modo que con el simple cdigo de: new ConexionDB(); Se realice una conexin a la base de datos. Por supuesto, sera una BD "por defecto". Los parmetros de conexin persistente a la Base de Datos seran por defecto, inicializados por el constructor, salvo el nombre de la Base de Datos que podra ser pasado como argumento: new ConexionDB('votacion'); Guardaremos esta Clase como ConexionDB.class.php ConexionDB.class.php
<?php class ConexionDB { var $_dbHost; var $_dbName; var $_dbUser; var $_dbPass; var $dbLink; /** * Constructor de la Clase ConexionDB **/ function ConexionDB($dbName = 'votacion'){ $this->_dbHost = 'localhost'; $this->_dbUser = 'root'; $this->_dbPass = 'root'; $this->_dbName = $dbName; $this->dbLink = mysql_pconnect($this->_dbHost, $this->_dbUser, $this->_dbPass); if (!$this->dbLink){ die('No se pudo conectar al Mysql: ' . mysql_error()); } if (!mysql_select_db($this->_dbName,$this->dbLink)){ die('No se pudo conectar a la BD "'. $this->_dbName . '": ' .mysql_error()); } } } ?>

Nota: La funcin exit() muestra un mensaje y termina la ejecucin del script. EJERCICIO: CLASE CONSULTA Crear una clase Consulta que podamos utilizar para realizar consultas a la base de datos. sta heredar de la Clase ConexionDB. Tendr las siguientes funciones (por ahora): Consulta($sql) Constructor de la clase, recibe como parmetro el cdigo SQL de la consulta. filas_afectadas() Devolver el nmero de filas afectadas por la consulta, si es un INSERT, UPDATE o DELETE o SELECT. Tendr tambin la siguiente propiedad: result Cdigo identificador de la consulta devuelto por mysql_query.

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 7

POO con PHP Parte I

Guardaremos esta clase como Consulta.class.php. Mire el captulo sobre funciones MySQL para ver qu debemos utilizar en cada caso. Consulta.class.php
<?php require_once "ConexionDB.class.php"; class Consulta extends ConexionDB { var $result; /** * Constructor de la Clase **/ function Consulta($sql){ //mismo nombre de la Clase parent::ConexionDB(); $this->result = @mysql_query($sql, $this->dbLink); if (!$this->result){ exit('No se completo la consuta: "'. $sql . '": ' . mysql_error()); } }

/* * Devuelve el nmero de filas afectadas por la consulta */ function filas_afectadas() { return @mysql_affected_rows(); } } ?>

EJERCICIO: CONSULTA A LA BASE DE DATOS


consulta_bd.php <html> <body> <table border = '1'><tr><th>Nombre</th></tr> <?php require_once "Consulta.class.php"; $query = 'SELECT pregunta FROM encuestas'; $consulta = new Consulta($query); while($row = mysql_fetch_row($consulta->result)) { print '<tr>'; print '<td>'. $row[0] .'</td>'; print '</tr>'; } ?> </table></body> </html>

EJERCICIO: MODIFICANDO LA CLASE CONSULTA Vamos a incluir en la clase Consulta un mtodo que nos permita utilizarla para realizar consultas que devuelvan registros. Para ello aadiremos los siguientes mtodos: num_filas() Devolver el nmero de filas ha devuelto la consulta, si es una SELECT. obtener_fila()
Docente: Ing Sergio Chapoan Chapoan. Correo: sersystemperu@gmail.com Pg. 8

POO con PHP Parte I

Devuelve en un vector el contenido del siguiente registro devuelto por la SELECT y avanza una posicin en la lista de registros devueltos. El vector tendr como claves los nombres de los campos y como valores el contenido de cada uno de esos campos. La incluiremos dentro del mismo archivo que la clase anterior.
/* * Devuelve el numero de filas de la consulta */ function num_filas() { return @mysql_num_rows($this->result); } /* * Obtiene y devuelve la siguiente fila de la consulta */ function obtener_fila() { return @mysql_fetch_array($this->result); }

Vamos a reescribir el ltimo ejemplo de la leccin utilizando la clase Consulta que acabamos de ampliar. Utilizar los dos mtodos nuevos.
<html> <body> <table border = '1'><tr><th>Nombre</th></tr> <?php require_once "Consulta.class.php"; $query = 'SELECT pregunta FROM encuestas'; $consulta = new Consulta($query); if ($consulta->num_filas() > 0) { while($row = $consulta->obtener_fila()) { print '<tr>'; print '<td>'. $row['pregunta'] .'</td>'; print '</tr>'; } } else { print 'La tabla est vaca.'; } ?> </table></body> </html>

EJERCICIO: MODIFICAR REGISTROS DE LA BD


<html> <body> <?php require_once "Consulta.class.php"; $query = "UPDATE encuestas SET pregunta='".$_POST['pregunta']."' WHERE id=".$_POST['id']; $consulta = new Consulta($query); echo "Gracias! Hemos recibido sus datos.\n"; ?> </body> </html>

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 9

POO con PHP Parte I

EJERCICIO: ELIMINAR REGISTROS DE LA BD


<html> <body> <?php require_once "Consulta.class.php"; $query = "DELETE FROM encuestas WHERE id=".$_POST['id']; $consulta = new Consulta($query); echo "Se ha eliminado exitsamente.\n"; ?> </body> </html>

EJERCICIO: TIENDA ON LINE Realizar un programa que permita realizar consulta de los productos que cuenta la tienda y que debern estar debidamente clasificadas en categoras, adems de ello se deber tener la posibilidad de mostrar los detalles del producto, como tambin el desarrollo de una pgina de registro de clientes.

Conclusiones: En la presente sesin, se detall la implementacin de la programacin orientada a objetos con PHP. Se vieron los detalles de la programacin orientada a objetos y todas sus tcnicas relacionadas. Finalmente, se hicieron ejercicios para solucionarlos en base a la programacin orientada a objetos.

Docente: Ing Sergio Chapoan Chapoan.

Correo: sersystemperu@gmail.com

Pg. 10

You might also like