Modulo 3. Programacion orientada a
jetos y PHP
Introduccion
En este médulo, presentaremos el lenguaje de programacién que més se utiliza en la actualidad
para el desarrollo de aplicativos web: PHP.
El lenguaje PHP se creé, originalmente, para el desarrollo de sistemas web; es un lenguaje que
se procesa e interpreta por el propio servidor web (Apache, Tomcat, Windows Server, por nombrar
los mas importantes).
El lenguaje PHP cuenta con muchas funcionalidades que iremos comprendiendo en el avance del
curso. Ademas, aprenderemos conceptos que se relacionan con la programacién orientada a
objetos (POO), y cémo podemos aplicarla con este lenguaje.
Video de Inmersion
Unidad 1. Programacion orientada a objetos (POO)
En la actualidad, hay una forma de programaci6n llamada programacion orientada a objetos. Hoy,
es la técnica mas difundida y verificada como mejor practica de programacién. Esto se debe a que
podemos abstraer cuestiones propias de un sistema, y asi poder reutilizar cédigo,
Paradigmas de programacion
Los paradigmas de programacién son un conjunto de reglas a seguir para codificar sistemas.
Tema 1. Conceptos basicos de la programacién orientada a objetos
A la hora de codificar con programacién orientada a objetos utilizando PHP, hay determinados
conceptos que se deben tener en cuenta, como, por ejemplo, las clases, las variables miembro,
las variables finales y los métodos.
Las clases
Las clases son el concepto principal de! paradigma orientado a objetos. Este paradigma establece
que la codificacién de un sistema debe realizarse abstrayendo los objetos con los que las
personas interacttian en la vida real. Por ejemplo, si se quiere hacer un sistema para unrestaurante, es preciso considerar que, en la vida real, existe un mend, diferentes platos y mesas.
Cada uno de estos elementos del restaurante representa un tipo de objeto en nuestro sistema.
Las clases son importantes porque nos permiten definir y crear estos objetos.
Mas adelante, estudiaremos las clases y los métodos finales a fondo.
Variables miembro
Las variables miembro son variables que forman parte de un objeto y se definen en la clase de
ese objeto, Estas variables pueden ser tanto primitivas (string, int, float, double, bool) como
referencias a objetos de otra clase.
Las clases nos permiten crear objetos; por este motivo, podemos tener muchos objetos diferentes
que se crean desde la misma clase. Cada objeto que se crea tiene las mismas variables definidas
en la clase, pero cada uno de ellos puede tener diferentes valores asociados con esas variables.
Por ejemplo, dada la clase Persona, pueden definirse como variables miembro el nombre, la
altura y el afio de nacimiento. Luego, cada objeto creado con la clase Persona puede tener
diferentes valores de dichas variables, es decir, diferente nombre, altura 0 afio de nacimiento.
En la figura 1, puede observarse la diferencia principal entre los objetos y una clase: la clase
define las variables miembro, mientras que cada objeto tiene un valor propio para las variables
que se definen en la clase
Figura 1: Objetos vs. clase
Fuerte: slaboraion propia
Variables finales
Las variables finales son un tipo especial de variable que, una vez que se le asigna un valor, no
puede cambiar. Son utiles para definir valores que sabemos que nunca van a ser modificados,
como constantes matematicas, distancias fijas, entre otros.
Métodos
Un método es una operacién 0 accién definida en la clase que podra ser ejecutada por los objetos
creados a partir de esta clase. Los métodos, generalmente, utilizan las variables miembro juntocon otros datos, que llamaremos parametros, para obtener un resultado determinado. Por
ejemplo, en la clase Persona —definida en la figura 1—, podria tenerse un método llamado
imprimirNombre que muestre el nombre en el navegador web.
En PHP, los métodos tienen una estructura similar a lo siguiente:
Yee eae ea Te tte
por ejemplo:
public function ImprimirNombre() {
Cre ue
El modificador establece que otras clases u objetos pueden ejecutar el método; las opciones son
propiedades del método. Luego, el nombre permite identificar el método y es eleccién del
programador. Por ultimo, los parametros son valores que el método necesita para realizar una
operacién y siempre se incluyen entre paréntesis. Si necesitamos mas de un pardmetro, los
separamos mediante comas.
Métodos get y set
Los métodos get y set (también conocidos como getters y setters) permiten, respectivamente,
obtener y cambiar los valores de las variables miembro, En cada clase que se defina, hay que
tener un get y un set por cada atributo o variable miembro.
EI método set se utiliza para cambiar el valor de una variable y se codifica con el prefijo «set»
seguido por el nombre de dicha variable. A continuacién, se muestra un ejemplo de cémo crear un
método set para la variable nombre y un método get.
Figura
Cédigo
class persona(
public function setNombre (SRORBES) (
Schis->nombre
)
public function getNombre() (
return Sthis->nombre;
Fuente: elaboracion propia,jad de repaso
Los métodos set retornan algun valor?
Verdadero
Falso
Ju
acién
Tema 2. Herencia y polimorfismo
Una de las mejores practicas para codificar es hacerlo de forma tal que se pueda reutilizar lo mas
posible un mismo bloque de cédigo. De esta forma, se ahorra tiempo y es mas facil hacer cambios
cuando sea necesario. El paradigma orientado a objetos permite hacer uso de una técnica
llamada herencia para lograr esto.
La herencia establece qué clases pueden crearse utilizando otra clase ya definida, con la cual
comparten un determinado atributo. Por ejemplo, si estamos creando un sistema para una
escuela, tendremos diferentes clases que representaran profesores, alumnos y directores, y que
podrian definirse como en el ejemplo de la siguiente figura
Figura 3: Herencia y polimorfismo
Fuente: elaboracion propa
Como puede observarse, cada clase tiene variables en comun (nombre y fechaNacimiento),
mientras que otras variables son Unicas: fechalnscripcion esté presente solo en la clase
Estudiante, fechaContratacion esta presente solo en la clase Profesor y cargoActual solo en la
clase Director, Dado que comparten variables, puede crearse una clase llamada Persona y luego
cheredar» los atributos. De esta forma, solo habria que definir las variables nombre y
fechaNacimiento una vez y no tres veces (una para cada clase).
Figura 4: Clase padre o superclase y clase hija o subclase4 t 5
=e as
Asi, cada clase posee los mismos atributos, con la diferencia de que ahora hereda dos de ellos de
Fuente: elaboracién propia,
la clase Persona, en vez de tener que definir cada atributo para cada una de las clases. Cuando
una clase hereda de otra, la que proporciona la «herenciay se llama clase padre o superciase,
mientras que la que hereda de otra se denomina clase hija o subclase.
Por otro lado, los métodos también se heredan. Si hubiese un método definido para la clase
Persona, estaria también disponible en las clases Estudiante, Profesor y Director. Los métodos
heredados pueden redefinirse en la clase hija, con la excepcién de los métodos finales. Un
método redefinido es uno que ha sido heredado, pero modificado, en la clase hija, para que
cumpla determinado comportamiento.
Figura 5: Cédigo
Fuente: elaboracién propia,
Para la clase Profesor, podemos tener el método siguiente (recordar que Profesor hereda de
Persona).
Figura 6: Cédigo
Fuente: elaboracién propia,
Primeramente, llamamos a su super class (parent:imprimirDatos()), y luego completamos los
datos.
Polimorfismo
Este concepto establece que dos objetos de distinto tipo pueden aceptar el mismo mensaje, pero
comportarse de manera diferente. Siguiendo con el ejemplo del sistema escolar, si se envia un
mensaje ImprimirDatos() a un objeto de la clase Estudiante (que lo hereda de Persona), esteUltimo ejecutara el método e imprimir el nombre y la fecha de nacimiento. Sin embargo, si se
envia el mismo mensaje a un objeto de la clase Director, se imprimira también el cargo (como
hemos visto en la figura anterior).
Aci
jad de repaso
La herencia entre clases es lo siguiente:
Proceso por el cual cambiamos los métodos de una clase.
Clase que parte desde otra clase ya creada sin métodos ni variables miembro.
El proceso por el cual una clase se construye usando otra clase.
El conjunto de métodos existentes en una clase.
Tema 3. Clases y métodos finales. Interfaces
Las clases finales se caracterizan por no permitir que otras clases hereden sus variables y
métodos. Los métodos finales pueden ser heredados, pero no modificados (0 redefinidos) por las
clases hijas.
Para especificar una clase final, se utiliza la palabra clave final.
Figura 7: Cédigo
tinal class Bstudiantes
Fuente: elaboracién propia,
Para especificar un método final, se utiliza la misma palabra clave.
Figura 8: Cédigo
final uncticn edad) (
Fuente: elaboracion propia.Interfaces
Las interfaces son elementos que definen Unicamente el comportamiento que una clase debe
implementar.
Figura 9: Cédigo
pubtée tinction gute):
Fuent
elaboracién propia
Para aplicar una interfaz en una clase, se utiliza la palabra clave implements. Cuando aplicamos
una interfaz, se deben redefinir los métodos que se declaran en ella dentro de la clase.
Figura 10: Cédigo
class test snplenents pruebal
public function getNombre() {
ns setNombre (ShoHbEE) (
Snonbre;
‘Senie->nombse
Fuente: elaboracién propa,
Actividad de repaso
Si queremos crear una clase que contenga un método que no pueda ser
modificado por otra clase que la herede, debemos declararla de la
siguiente manera:
Final
Abstract
PublicInterface
Tema 4. Permisos de acceso
En PHP, existen diferentes tipos de acceso (también conocidos como modificadores) para
variables, métodos y clases:
* Publico. Se utiliza la palabra public al inicio de la declaracién. Es accesible por otras clases
en cualquier paquete. Es el tipo de acceso (visibilidad) por defecto.
+ Privado: se utiliza la palabra private al inicio de la declaracién. Es accesible solo dentro de la
clase en la que se creé el elemento.
* Protegido: se utiliza la palabra protected al inicio de la declaracién. Es accesible para clases
definidas para sus subclases.
* Sin especificar: si no se especifica ningun tipo de acceso, por defecto, es publico.
En programacién orientada a objetos, todas las variables miembro de una clase deberian ser
privadas y solamente accesibles por los métodos get y set.
jad de repaso
Si una clase contiene un método al cual no le definimos el tipo de acceso,
gcual de las siguientes afirmaciones es correcta?
EI método no sera visible para otras clases,
Solo se puede utilizar esta practica en métodos set y get.
EI método no podré ser modificado por ninguna de sus subclases.
El método serd visible por otras clases que la hereden.
ErUnidad 2. Introduccion a PHP y bases de datos
Tema 1. Funciones de PHP: estructuras de control y toma de definiciones
Una funcién es un fragmento del programa que se dedica a realizar una accién especifica, como,
por ejemplo, un calculo matematico, el guardado de datos en una base de datos, el envio de
correos electrénicos y demas.
El concepto de funciones se basa en la reutilizacién de cédigo, puesto que podemos llamar a las
funciones desde cualquier parte del sistema y, al enviarles diferentes parametros, obtendremos
valores diferentes.
Por ejemplo, supongamos que tenemos la funcién suma.
Figura 11: Cédigo
Srenultado? = runa(27, 45)
Fuente: elaboracion propa
La salida en pantalla seria la siguiente:
CC ee ORC
ICSC a ee
Veremos que una de las virtudes esenciales de PHP es que podemos intercambiar cédigo HTML,
CSS, JavaScript y el propio Lenguaje PHP.
Veamoslo con un ejemplo: creemos un proyecto en el IDE Netbeans llamado pruebas y, dentro de
41, un archivo test.php. Y escribimos la siguiente linea:
Ser cone MU (ol id
La funcionalidad echo produce la salida en pantalla de lo que hemos tipeado entre comillas.
‘Supongamos la préxima linea en el mismo archivo:
PT ee RC mee Oe me nen!
eldLa salida en el navegador entonces seria la siguiente
Figura 12: Cédigo
HOLA MUNDO!!!
Fuente: elaboracién propia
En detalle, dentro de la etiqueta style, tenemos los siguientes conjuntos de propiedades/valores:
font-size: 20px. Nos indica que el tamajio de la fuente (texto) sera de 20 pixeles (px)
Cat Me AEC cr)
font-style: italic, El estilo de la fuente sera cursiva.
Hemos visto que, dentro de una sentencia echo, agregamos cédigo HTML, junto a CSS. Y lo mas
formidable es que lo realizamos desde PHP.
Estructuras de repeticion PHP.
Como la gran mayoria de los lenguajes vistos (C, C++, Java), PHP cuenta con diferentes
estructuras. Notemos que, como PHP es descendiente directo de C, las estructuras son idénticas
(por mas que sabemos que PHP es un lenguaje no tipado). Veamos algunas de ellas
Estructura for
Al igual que en C++, pero sin definir la variable ($i en este ejemplo) como valor entero:
Bro
for ($i = 0; $i < 7; $i ++){
echo ‘fetchAll(PDO::FETCH_ASSOC);er
Pe Oe CCC Ren eo oct
Ce CCR eat Ua Cee
ono a a
CT CR Co eer
eae Ce esc
en CC RS oe Um iy
Tena ae nso
En esta clase, hemos creado un constructor que nos permite conectarnos a cualquier base de
datos que tengamos disponible, solamente enviando los parametros necesarios.
A modo de ejemplo, creamos el método de seleccién (select) para el recupero de registros en
nuestra base de datos.
Para utilizar dicha clase, solo hace falta instanciar un objeto de la clase base_datos y luego llamar
a sus funcionalidades
Sdb = new base_datos("mysql", "test", "127.0.0.1", “aquiles248", "aquiles248");
Sempleados = $db->select("empleados", "id
", array(1), "nombre ASC", 2);
Cabe destacar que, una vez instanciada la clase (cuyo objeto en este ejemplo se llama $db),
podemos acceder tantas veces sea necesario a sus métodos, sin necesidad de una nueva
instantTambién, podemos generar paralelamente otra instancia para conectamos al mismo tiempo a otro
motor de base de datos.
Actividad de repaso
£Qué establece el paradigma orientado a objetos?
Que la cadificacion debe realizarse mediante rutinas.
Que la codificacion de un sistema debe realizarse abstrayendo los objetos con los
que interactuamos en la vida real.
Que la cosificacion debe realizarse utllizando bash scripts,
Que Ia codifcacion debe realizarse mediante subrutinas.
3. Cierre
PHP ofrece un sin numero de funcionalidades que nos ahorran tiempo en el desarrollo de
sistemas. A su vez, como es descendiente del lenguaje C++, sus estructuras son muy similares.
Esto sirve a programadores de este lenguaje a tener una curva de aprendizaje mas rapida.
También nos ofrece varias librerias para acceso a base de datos. A medida que van apareciendo
nuevas versiones de este lenguaje, siempre debemos estar atentos a encontrar la libreria que se
reconoce como mejor practica 0 bien la mas actualizada, ya que siempre tendra optimizacién en
su funcionamiento y mejoras en seguridad.
Crear una clase de acceso a base de datos no solo nos permitiré ahorramos lineas de cédigo,
sino también tener el cédigo mas ordenado y con mayor facilidad de mantenimiento, pues
imaginemos que en el futuro dejamos de utilizar PDO: solo necesitaremos reformar la clase de
acceso a base de datos y nuestro sistema seguird con el mismo funcionamiento.
Video de habilidades
Preguntas de habilidades+ Desde phpMyAdmin creemos una base de datos llamada Escuela.
+ En esta base de datos creemos tres tablas: alumnos (con los atributos ID, nombre, apellido y
email), profesores (con los atributos ID, nombre, apellido y email) y cursos (con los atributos
ID, nombre y ciclo_lectivo)
* Afiadamos al menos cinco registros en cada tabla.
+ Mostremos una captura de pantalla por cada tabla creada, donde puedan verse los datos
cargados.
+ Eliminemos la tabla cursos y mostremos una captura de pantalla en donde se pueda ver la
base de datos,
Glosario