PHP orientado a objetos:

Documentos relacionados
POO. Por tanto, una clase nos permite crear varios objetos que pueden realizar la misma función o funciones diferentes.

Clase 3: Repaso POO. DSIW1:Ing. Tomás Eduardo Urbina 1

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

PROGRAMACION ORIENTADA A OBJETOS EN C++

Programación orientada a objetos I

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Sobre Carga de Operadores

Clases y Objetos en C++

PHP5 Orientado a Objetos

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Programación Orientada a Objetos en C++

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación.

INSERCIÓN DE UN REGISTRO CON PHP Y MYSQL

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Programación orientada a objetos en PHP. Lic. Nancy Michelle Torres Villanueva

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Tema 6: Clases. Índice

Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos

Conceptos Básicos. Programación Orientada a Objetos 2

INTERACCION ENTRE OBJETOS

Programación Orientada a Objetos (POO)

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

12. Tipos de atributos

Tema: Herencia en C#.

Curso de PHP. Pascual Gómez del Pino Página 1

Tema: Funciones Virtuales y Polimorfismo.

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

El programa en JavaScript debe ir encerrado entre la marca script e inicializada la propiedad type con la cadena text/javascript:

Manejo de eventos en JavaScript WEB-TECHNOLOGIES

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Francisco Javier Peña Escobar Universidad del Valle

Programación Orientada a Objetos Clases, métodos, atributos. Concepto de herencia, clases derivadas, tipos de herencia.

Tema 7.- Fundamentos de la Programación Orientada a Objetos

PROGRAMACIÓN ORIENTADA A OBJETOS EN PHP

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Programación Orientada a Objetos

Programación Orientada a Objetos

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Guías técnicas Grupo Danysoft: Creación de Componentes en Delphi (parte I)

Guía práctica de estudio 04: Clases y objetos

Diseño Basado en Componentes. Curso 2008 / 09

Curso de Java orientado a Android Parte 2

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

07 Variables. 7.1 Variables globales Definición

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

EJEMPLO 1. CUADROS DE TEXTO

La sintaxis básica para definir una clase es la que a continuación se muestra:

Node.JS Raspberry Pi (RPi) 2015/05/08 Juan V. Capella

Curso de PHP Modulo 7 Creando Una Base de Datos y accediendo a ella R-Luis

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Herencia y polimorfismo

18. Interfaces Declaración de una interfaz

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Programación Orientada a Objetos con Java

Procesos e Hilos en C

Punteros y Memoria Dinámica II

A continuación el código del formulario Registro.html y del archivo validar.js de javascript:

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

1. Haz que se muestre una pantalla de alerta con tu nombre. 2. Repite el ejercicio anterior pero usando una variable para guardar tu nombre

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo

Manual de compras Gastos

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C)

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Tutorial de Python orientado a objetos

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Clases Abstractas e Interfaces

10 abreviaturas JavaScript para principiantes

ING1310 Introducción a la Computación. Python. Conceptos Básicos. Carlos Reveco

Transcripción:

PHP orientado a objetos: La mayoría de los lenguajes de programación modernos son orientados a objetos (abreviado OO) o en su defecto se aproximan mucho a éstos permitiendo algunas de sus características como es el caso de PHP. La programación OO principalmente hace uso de clases, objetos, relaciones, instancias, propiedades y métodos. Objetos y clases Cuando hablamos de software OO los objetos casi siempre son elementos físicos, como puede ser un cliente, proveedor, etc. o elementos conceptuales que existen en el entorno software, por ejemplo un objeto encargado del mantenimiento de archivos. El objetivo es representar a estos elementos de la vida real y a los conceptuales como unidades de software. La programación OO esta pensada para construir objetos que contienen atributos y operaciones de manera que cubran nuestras necesidades. Los atributos son variables que contienen información del estado de un objeto. Y las operaciones también conocidas como métodos, funciones y acciones realizan modificaciones del propio objeto o realizan alguna acción externa a éste. Una de las principales ventajas de la programación OO es el concepto de encapsulación, conocido también como protección de datos, mediante el cual solo se pueden modificar los datos de un objeto accediendo a través de sus métodos u operaciones (interfaz del objeto). Nunca se pueden modificar directamente desde la aplicación principal. La funcionalidad de un objeto esta sujeta a los datos que este maneja, una ventaja de usar objetos es que podemos modificar la funcionalidad de éste, añadir mejoras o corregir errores sin necesidad de cambiar su interfaz. Ya que en caso contrario un proyecto estaría sujeto a un mayor número de fallos y los cambios serían más costosos. En algunas áreas de la programación de aplicaciones Web el uso de la programación OO está desestimada, usándose una metodología estructurada basada en funciones, esto es debido a que determinados proyectos no son lo suficientemente extensos como para aplicarles una metodología OO. En la programación OO los objetos son únicos y son instancias a una clase determinada. En principio se define la clase con los atributos y métodos correspondientes y luego se crea el objeto que esta basado en una determinada clase (esto se conoce como instancia). Se puede comparar a un objeto con una variable y la clase sería un tipo de dato definido por nosotros.

Cómo crear clases, atributos y operaciones en PHP Hasta ahora hemos hablado de las clases de una forma conceptual, a continuación veremos como se crean, para crear una clase en PHP usaremos la palabra reservada class. La estructura mínima de una clase es la siguiente: Para que una clase sea útil, necesita atributos y operaciones. Podemos crear atributos como si de variables se trataran, con la palabra reservada var var $atributo1; var $atributo2; Podemos crear métodos declarando funciones dentro de la definición de la clase, el siguiente código crea una clase llamada NombreClase con dos operaciones que no hacen nada. A metodo1 no le pasamos ningún parámetro y a metodo2 le pasamos dos parámetros. function metodo1() { function metodo2($param1, $param2) { Constructor de una clase Las clases soportan un tipo de función especial que se conoce como constructor. El constructor es llamado cuando se crea el objeto. Normalmente utiliza para inicializar tareas como: asignación de valores a determinados atributos, crear nuevos objetos necesarios para el correcto funcionamiento de el objeto, etc. El constructor se declara de la misma forma que los métodos, lo único que debemos tener en cuenta es que debe tener el mismo nombre que la clase. A pesar de que

nosotros podemos llamar el constructor, su principal propósito es ser llamado automáticamente cuando un objeto es creado. A continuación veremos como se declara el constructor de una clase: function NombreClase($param) { echo "Constructor llamado con el parámetro $param<br>"; Cómo usar objetos, instanciar una clase Después de haber declarado una clase, ya podemos usarla creando un objeto que es una instancia a esa clase como ya se ha mencionado anteriormente. Es muy importante que esto quede claro, los objetos son instancias a una clase, por lo tanto cada objeto es único. En php creamos un objeto usando la palabra reservada new. También debemos indicar a que clase va a instanciar el objeto que creemos y pasarle los parámetros (si los requiere) al constructor, en el siguiente código vamos a ver un ejemplo de esto, para ello tomamos como referencia la clase anterior NombreClase: $a = new NombreClase("Primero"); $b = new NombreClase("Segundo"); $c = new NombreClase(); El código completo de esta aplicación sería el siguiente: <?php function NombreClase($param) { echo "Constructor llamado con el parámetro $param<br>"; $a = new NombreClase("Primero"); $b = new NombreClase("Segundo"); $c = new NombreClase();?>

Como resultado de este código vemos que el constructor es llamado cada vez que se crea el objeto, y vemos que los objetos son únicos aunque sean instancias de la misma clase, el resultado es el siguiente: Constructor llamado con el parámetro Primero Constructor llamado con el parámetro Segundo Constructor llamado con el parámetro Cómo usar los atributos de una clase Una clase, tiene un puntero especial al que podemos referenciar como $this. Si nuestra clase tiene un atributo llamado $atributo, podemos hacer referencia a este desde nuestra clase (métodos) de la siguiente forma $this->atributo, a continuación podemos ver el código de ejemplo del acceso a un atributo de clase desde un método de la propia clase. var $atributo; function metodo($param) { $this->atributo = $param; echo $this->atributo; Algunos lenguajes permiten limitar el acceso desde fuera a los atributos de una clase declarándolos como privados o protegidos ("private", "protected"). PHP no soporta esta característica y todos atributos y métodos pueden ser vistos desde fuera de la clase, lo que quiere decir que siempre son públicos. Podemos realizar la misma acción que anteriormente desde fuera de la clase, usando esta sintaxis. NombreClase { var $atributo; $a = new NombreClase(); $a->atributo = "valor"; echo $a->atributo; Las sentencias anteriores están permitidas en PHP, pero no es una práctica recomendable acceder directamente a los atributos de una clase desde fuera de ésta. Como se ha comentado anteriormente una de las ventajas de la POO es que permite realizar encapsulación por esta razón aunque PHP no permita ocultar los atributos o métodos de una clase, nosotros deberíamos no acceder directamente a ellos, para diferenciarlos de los públicos es conveniente también poner "m_" (de

miembro lo cual significa que solo serán usados dentro de la clase) delante de los nombres de métodos y atributos a los cuales no se quiera acceder directamente desde fuera de la clase. Para los atributos que queramos acceder directamente desde fuera de la clase, deberíamos escribir funciones de acceso, tanto para establecer como para coger valores. Deberíamos tener un código como el siguiente: var $atributo; function get_atributo() { //devuelve el valor de atributo return $this->atributo; function set_atributo($valor_nuevo) { //establece el valor de atributo $this->atributo = $valor_nuevo; La finalidad de hacer esto, es clarificar el código y tener una sección de código encargada de acceder a los atributos para mantener la encapsulación, y que no sean accedidos directamente. Además si seguimos estas prácticas aumentará la calidad de nuestro software ya que podremos introducir comprobaciones de datos, como rangos, valores permitidos, etc. Veamos un ejemplo de validación de datos a la hora de asignar un valor a atributo mediante el método set_atributo: function set_atributo($valor_nuevo) { if ($valor_nuevo > 100) { $this->atributo = $valor_nuevo; En el código superior vemos que cuando queremos asignar a atributo valores inferiores a 100 no nos deja, y atributo seguirá manteniendo su valor. Cómo usar los métodos de una clase Los métodos de una clase se pueden llamar de la misma forma que se llaman a los atributos, supongamos que tenemos la siguiente clase: class nombreclase { function metodoa() { return "Has llamado al método A"; function metodob($parametro1) { return "Método B llamado con parámetro: ".$paramtro1;

Creamos un objeto de la case nombreclase con el nombre $obj de la siguiente forma: $obj = new nombreclase(); Los métodos de un objeto, son llamados de la misma forma que se llaman a funciones normales, pasándoles como es el caso de metodob el parámetro que necesiten. Como los métodos son funciones que pertenecen a un objeto, deberemos indicar en la llamada el objeto que los incluye, la forma de llamar a un método es idéntica a como llamamos a los atributos de un objeto. $obj->metodoa(); $obj->metodob("parámetro que pasamos"); Si nuestras operaciones, devuelven algún valor, lo capturamos asignándoselo a una variable, podemos ver el siguiente ejemplo $txt_retorno = $obj->metodob("hola"); $txt_retorno contendrá la cadena de texto: "Metodo B llamado con parámetro: Hola" Nota: El texto anterior fue tomado de www.webestilo.com. Ejemplo de implementación de clases en PHP Se pretende crear una pequeña aplicación que permita recibir dos números por pantalla, y de la misma forma elegir una de las operaciones básicas a realizar entre ellos. Tiendo en cuenta el modelo multicapa (presentación aplicación), tendríamos el siguiente resultado: Código para la interfaz (guardar como index.html):

<html> <head> <title>ejemplo POO</title> </head> <body> <form name="form1" method="post" action="operacion.php"> <table width="200" border="1"> <td colspan="2">ejemplo de clases en PHP </td> <td>número 1: </td> <td><input type="text" name="num1"></td> <td>número 2: </td> <td><input type="text" name="num2"></td> <td rowspan="3">operación a realizar: </td> <td>suma: <input name="op" type="radio" value="suma"></td> <td>resta: <input name="op" type="radio" value="resta"></td> <td>multiplicacion: <input name="op" type="radio" value="multiplicacion"></td> <td colspan="2"><center></center><input type="submit" name="submit" value="enviar"></center></td> </table> </form> </body> </html>

Ahora veamos la clase encargada de realizar las operaciones (guardar como ClassOperaciones.php): <?php class operaciones{?> var $num1; var $num2; function operaciones($n1, $n2) { $this->num1 = $n1; $this->num2 = $n2; function suma(){ echo "el resultado de la suma es: "+($this->num1+$this->num2); function resta(){ echo "el resultado de la resta es: "+($this->num1-$this->num2); function multiplicacion(){ echo "el resultado de la multiplicación es: "+($this->num1*$this->num2); Por ultimo programamos la capa de aplicación (guardar como operacion.php): <?php include ("ClassOperaciones.php"); $num1=$_post[num1]; $num2=$_post[num2]; $op=$_post[op]; $objeto=new operaciones($num1,$num2); if($op=="suma"){ $objeto->suma(); else if($op=="resta"){

$objeto->resta(); else if($op=="multiplicacion"){ $objeto->multiplicacion();?>