1. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
1. Conceptos básicos: POO, Sintaxis básicas de PHP
Unidad V: Programación Orientada a la Web /Lenguaje de Programación Orientada a Objeto
Objetivo de la Unidad:
Analizar, diseñar y desarrollar aplicaciones dinámicas en el entorno Web a través de Lenguaje de Programación
Orientado a Objeto
Sumario
Introducción
La programación orientada a objetos, se refiere al método de programación que invoca el uso de clases para organizar los
datos y la estructura de una aplicación. Con PHP, la POO comenzó a ser factible con el lanzamiento de PHP 4, pero
realmente entró en su propia con PHP 5. Ahora, mientras el mundo espera el lanzamiento de PHP 8 nos espera otro gran
salto en la evolución de PHP con POO En esta práctica vamos a explorar exactamente la POO con PHP y observar
algunas cosas que usted también debe recordar al respecto. Vamos a ver un ejemplo sencillo de cómo implementarla.
Objetivo.
Estudiar, analizar y codificar en PHP Clases y Objetos.
Requerimientos.
Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu), Servidor
apache, lenguaje de Programación PHP, Editor de texto(sublime text,)
Componentes.
7. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
UN EJEMPLO SENCILLO DIAGRAMA DE CLASE
Para representar una clase se usara un rectángulo dividido en tres filas:
La primera fila contendrá el NOMBRE de la clase
La segunda los ATRIBUTOS (siendo los atributos los elementos que identifican de forma única a la clase, puede verse
como los campos de la tabla en el modelo entidad relación o MER como le dicen acá) y La tercera los MÉTODOS de la
clase (similar a las funciones en programación estructurada, se refiere a las operaciones que puede ejecutar la clase,
mostrar, sumar, restar, entre otros).
8. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Persona
-cedula:String
-nombre:String
-sexo:String
-edocivil:String
+obsequio():String
Observaciones: Note que delante de cada atributo está presente el símbolo -, esto indica que el atributo debe ser declarado
como privado dentro de la codificación, así mismo el método esta precedido del símbolo +, que indica que es de acceso
público, es decir, puede ser accedido por el objeto que instancia la clase.
El otro punto a considerar es la declaración de tipo de datos que para el ejemplo son todos String esta consideración es
necesaria para cumplir con los estándares de diagrama de clase, sin embargo, los tipos de datos en php dependen de la
asignación de valor a la variable, es decir, no están definidos de forma explícita.
Traducción de diagrama de clase a código en php
El siguiente paso luego de realizar el diagrama de clases, es traducir este a lenguaje de máquina, para ello se utiliza
cualquiera de los lenguajes de programación que soporten el paradigma orientado a objetos, para nuestro caso utilizaremos
PHP.
El primer paso a realizar para crear la clase, es crear un archivo con extensión .php, el nombre queda a criterio del grupo
de desarrolladores; como sugerencia, puede escribir el nombre de la clase, seguido de la palabra clase. En el MVC, el
archivo que contiene la clase debe ser guardado en la carpeta modelo
Creación de archivo = personalclase.php
Si es buen observador, notara tanto el nombre del archivo como su extensión, están en minúsculas, esta consideración se
hace a fin de mantener la compatibilidad entre servidores si bien todo código php corre bajo un servidor APACHE, la
interpretación de mayúsculas y minúsculas difiere según el sistema operativo donde esté instalado el servidor, en Windows,
APACHE no es case sensitive, es decir, no hace diferencia entre mayúsculas y minúsculas, sin embargo bajo sistemas
operativos basados en UNIX, sí.
Segundo paso La codificación, toda clase en php debe comenzar con la palabra reservada class seguido del nombre de la
clase
<?php
class personal {
}
?>
Lo siguiente que se debe realizar es declarar los atributos de la clase
<?php
class personal {
private $cedula;
private $nombre;
private $sexo;
private $edocivil;
}
?>
Note que los atributos están precedidos de la palabra prívate, esta consideración hace que el valor de ellos no pueda ser
modificado directamente por el objeto que lo instancia y es la forma en que de ahora en adelante debe ser usada, esto es
la propiedad de encapsulamiento.
9. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Una vez declarado los atributos, lo siguiente que se debe crear es el primer método que se llama constructor este
método aunque no declarado en el diagrama de clase, debe existir en toda clase debido a que es el que se
encarga de inicializar el estado de los atributos que son privados.
<?php
class Persona {
private $cedula;
private $nombre;
private $sexo;
private $edocivil;
public function__construct($cedula,$nombre,$sexo,$edocivil)
{
$this->cedula = $cedula;
$this->nombre = $nombre;
$this->sexo = $sexo;
$this->edocivil = $edocivil;
}
}
?>
La última parte, consiste en codificar los métodos que fueron declarados dentro del diagrama de clases.
<?php
class Persona {
private $cedula;
private $nombre;
private $sexo;
private $edocivil;
public function __construct($cedula,$nombre,$sexo,$edocivil)
{
$this->cedula = $cedula;
$this->nombre = $nombre;
$this->sexo = $sexo;
$this->edocivil = $edocivil;
}
public function obsequio(){
$mensaje = "";
if($this->sexo=='M'
and $this->edocivil='soltero'){
$mensaje = "Felicidades "
.$this->cedula." ".
$this->nombre." te ganaste una rumba con strepers";
}
else{
$mensaje="Los obsequios son para hombres solteros";
}
return $mensaje;
}// fin del método obsequio
?>
10. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Nuestra clase ya está lista y definida, ahora habría que probar de crear a partir del “molde” un
“objeto” y probarlo.
Archivo objeto.php , este debe ser ejecutado desde el localhost.
<?php
require_once("clasepersona.php");
$objPersona = new Persona("10956121","Lissette","F","soltera");
$mjs=$objPersona->obsequio(); // instanciar el método
echo $mjs
?>
En resumen las clases se construyen en la etapa de diseño donde definimos qué es lo que queremos
crear. Lo que creamos a partir de ellas es un objeto que “tendrá vida” (será lo que verdaderamente se ejecutará
en nuestro sistema) y a la vez “único” (podrán existir muchos objetos del mismo tipo, pero podremos interactuar
con ellos e identificarlos de forma única).
El modelo–vista–controlador (MVC)
El patrón MVC es un patrón de arquitectura de software encargado de separar la lógica del negocio de la
interfaz del usuario y es el más utilizado en aplicaciones Web, ya que facilita la funcionalidad, mantenibilidad y
escalabilidad del sistema de forma sencilla, a la vez que permite no mezclar lenguajes de programación en el
mismo código.
La programación de la aplicación se separa en tres componentes con sus respectivas responsabilidades: un
modelo, una o varias vistas, y uno o varios controladores
11. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
CÓMO FUNCIONA EL PATRÓN MVC
El funcionamiento básico del patrón MVC es el siguiente:
1. El usuario realiza una petición que captura el controlador
2. El controlador llama al modelo correspondiente
3. El modelo solicita la información a la base de datos
4. El modelo recoge la información de la base de datos
5. El controlador recibe la información
6. El controlador procesa y envía la información a la vista
7. La vista entrega al usuario la información de forma “humanamente legible”.
La entrada del usuario, el modelado del mundo externo, y la retroalimentación visual para el usuario son
separados y dirigidos por los objetos modelo, vista y controlador.
Actividad a Realizar en el Laboratorio
1.- con el diagrama de la clase Persona, llevarlo a modelo MVC.
1er paso Crear tres carpeta: vista, modelo, controlador en una carpeta raíz en el servidor local, llamada poo-mvc
12. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
2do . Crear una clase obsequio.php en la carpeta modelo, este archivo contendrá la clase persona.
3er paso e n la carpeta vista crear el archivo obsequio.php, este archivo contendrá el código del formulario de
entrada de datos
!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<link rel="" href="">
<title>Programación II - Formulario - Uptaeb</title>
<link rel="stylesheet" href="css/miestilos.css">
</head>
<body>
<header></header>
<nav id="menu">
</nav>
<section id="principal">
<div id="contenido">
<form class="formulario" method="post" action="">
<h2> Registro de Obsequio </h2>
<div>
<label for="Cedula">Cédula:</label>
<input type="text" id="ci" name="txtci" placeholder="Introduzca su Cédula" title="Introduzca su Cédula" required />
</div>
<div>
<label for="nombre">Nombre:</label>
14. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
<?php
require_once("modelo/obsequio.php");
if(is_file("vista/".$pagina.".php")){
if(!empty($_POST)){
$ci=$_POST['txtci'];
$nombre=$_POST['txtnombre'];
$sexo=$_POST['sexo'];
$estadocivil=$_POST['estadocivil'][0];
for ($i=1; $i < count($_POST['estadocivil']); $i++){
$estadocivil.=",".$_POST['estadocivil'][$i];
}// fin for }
$objPersona = new Persona($ci,$nombre,$sexo,$estadocivil);
$obsequiO=$objPersona->obsequiar();
$pagina='msj';
}// FIN DEL IF $_POST
require_once("vista/".$pagina.".php");
}
else{
echo "pagina en construccion";
}
?>
5to paso crear el archivo msj.php en la carpeta vista
Comentario [l1]: Este será
implementada en el 5to paso
Comentario [l2]: Aquí se está
requiriendo la página msj.php
15. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
6to. Paso crear el archivo index.php en la carpeta raíz poo-mvc
Al ejecutar el index.php, esta es la corrida de programa
16. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Actividad Post Laboratorio
1.- Se tiene el siguiente diagrama de una clase calculadora;
Calculadora
-Nro1:integer
-Nro2:integer
+sumar():integer
+restar():integer
+multiplicar():integer
+dividir():integer
Realizar la aplicación en MVC
2.- Se tiene el siguiente diagrama de clase
CuentaBancaria
-nroCta:string
-tipoCta:string
-saldoDisponible:real
+depositar(monto):integer
+retirar(monto):integer
+consulta():integer
Realizar la aplicación en MVC
Autoevaluación
1.- Ciclo foreach funciona para cualquier tipo de variable
a) Verdadero
b) Falso
2.- Los datos de entrada son enviados al script de PHP especificado en el atributo name de ese
formulario.
a) Verdadero
b) Falso
3.- El método constructor se encarga de Inicializar a la Clase
a) Verdadero
b) Falso
4.- Cuál de las siguientes es la sentencia para crear un objeto de una clase A
a) $objeto = new class Clase();
b) new A = $objeto;
c) $objeto= new A();
d) $objeto = clase A();
17. Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
5.- Coloca el nro de la repuesta correcta: 1. Objeto, 2. Método get, 3. Método Setter, 4. Función
require, 5. Clase,6; Método. Post 7. $this, 8. Función include, 10. Metodo Getter
( ) Si no existe el fichero referenciado o su referencia es errónea, la función se genera un error fatal y detiene
la ejecución del script.
( ) Cuando se usa este método una cadena de caracteres es visible en la barra de direcciones del navegador
( ) Hace referencia al objeto que se está construyendo
( ) Método modificador, asignara un nuevo valor al atributo
( ) Si el fichero referenciado no existe o su referencia es errónea, la función genera un aviso o warning,
continuando la ejecución del Script
Referencias Bibliográficas
Bahit, Eugenia Programador PHP
Gutiérrez Rodríguez, Abraham y Bravo García Ginés PHP5 a través de ejemplos
IBM Capacitación (2008) Programación Web Avanzada