Está en la página 1de 25
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 un restaurante, 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 junto con 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 subclase 4 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), este Ultimo 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 Public Interface 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. Er Unidad 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! eld La 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 instant Tambié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

También podría gustarte