Programacion orientada a objeto php

Solo disponible en BuenasTareas
  • Páginas : 10 (2444 palabras )
  • Descarga(s) : 0
  • Publicado : 12 de octubre de 2010
Leer documento completo
Vista previa del texto
Programación Orientada a Objetos en PHP
Algunos "puristas" afirmarán que PHP no es un verdadero lenguaje orientado a objetos, lo que es cierto. PHP es un lenguaje híbrido dónde se pueden utilizar POO y programación estructurada tradicional. Pero para ciertos proyectos grandes, quizás deseemos/necesitemos usar POO "puro" en PHP, declarando Clases y solo utilizando Objetos y Clases para elproyecto. Mientras emergen día a día proyectos más y más grandes, el uso de POO puede ayudar, el código POO es fácil de mantener, fácil de comprender y fácil de rehusar. Y estos son los principios de la Ingeniería de Software. Aplicar estos conceptos en proyectos basados en la Web, es la clave para el éxito de futuros sitios Web.
Este artículo es una introducción a la Programación Orientada a Objetos enPHP. Intentaremos mostrarles como se puede programar menos y mejor utilizando algunos conceptos de POO y trucos de PHP. ¡Buena Suerte!
Conceptos de programación orientada a objetos: aunque existen diferencias entre distintos autores, puedo decirles que un lenguaje de POO debe poseer:
• Tipos Abstractos de Datos y ocultamiento de la Información
• Herencia
• Polimorfismo
Elencapsulamiento en PHP se logra utilizando clases:
CODIGO
PHP:
1.
Por supuesto, cada uno puede utilizar la nomenclatura que desee, pero utilizar una estandarizada es útil.
Los atributos de los objetos se definen en PHP utilizando la declaración "var" dentro de la clase, estos atributos no tienen tipo hasta que se les asigna un valor. Un atributo puede ser un entero, un arreglo, un arregloasociativo o incluso otro objeto. Los métodos se definen como funciones dentro de la clase, para acceder a los atributos dentro de los métodos se debe utilizar $this->nombre, de otra manera, se utilizaria una variable local al método.
Para crear (instanciar) un nuevo objeto se utiliza el operador new:
$obj = new Algo;
Luego, se pueden acceder a sus métodos asi:
CODIGO
PHP:
1. $obj->setX(5);2. $valor=$obj->getX();
El método setx le asigna el valor 5 al atributo x en el objeto obj (no a la clase), entonces getx devuelve ese valor: 5 en este caso.
En realidad también se puede acceder a los atributos del objeto de esta manera: $obj->x = 6; sin embargo esta no es una buena práctica de POO. Yo recomiendo acceder a los atributos definiendo métodos para asignarlos y devolverlos. Serás unbuen programador orientado a objetos si considerás los atributos como innacesibles y solo utilizando métodos para acceder a ellos. Lamentablemente, PHP aún no ofrece una manera de definir un atributo como privado asi que una mala programación es posible.
Podemos definir la visibilidad de un miembro de una clase usando las palabras clave:
• public: miembro visible
• protected: visiblesolo en la clase actual y derivadas
• private: visible solo en la clase actual

La Herencia es sencilla de utilizar en PHP con la palabra reservada extend.
CODIGO
PHP:
1.
Objetos de la clase "Otra" ahora poseen todos los atributos y métodos de la clase padre (Algo) más sus propios métodos y atributos. Se puede hacer:
CODIGO
PHP:
1. $obj2=new Otra;
2. $obj2->setX(6);
3.$obj2->setY(7);
La Herencia múltiple no está soportada por PHP así que no se puede hacer que una clase extienda dos o más clases diferentes.
Se puede sobrescribir un método en la clase derivada tan solo redefiniéndolo, si redefiniéramos getx en "Otra" ya no podríamos acceder al método getx en "Algo". Si se declara un atributo en una clase derivada con el mismo nombre de un atributo de la clasebase, el atributo derivado "esconde" al atributo de la clase base cuando se intenta acceder al mismo.
Se pueden definir Constructores en las clases. Los Constructores son métodos con el mismo nombre de la clase y que son llamados en el momento en que se instancia un objeto, por ejemplo:
CODIGO
PHP:
1.
Así que ahora se puede crear al objeto asi:
$obj=new Algo(6);
Y el Constructor...
tracking img