Siglas de Programacion Orientada a Objetos (OOP en ingles – Object Oriented Programming – ) es una variante de programacion que permite reutilizar gran parte del codigo, lo hace mas estetico y legible ya que esta mas orientado a la logica humana, ademas de ser muy util en proyectos grandes.En proyectos con varios programadores, es posible asignar clases especificas que hagan un trabajo especifico a cada programador, y este desarrollarla independientemente de los avances de los demas ya que los objetos son independientes unos de otros, esto hara mas rapido y practico el desarrollo del proyecto.
OOP en PHP
PHP desde su version 3.0 soportaba la sintaxis de la OOP sin embargo en ese tiempo (y un poco ahora) carecia de todas sus caracteristicas.
A este tiempo PHP soporta todo lo que un lenguaje orientado a objetos en teoria deberia soportar:
* Encapsulamiento
* Tipos Abstractos de Datos y ocultamiento de la Información
* Herencia
* Polimorfismo
PHP no es un lenguaje 100% orientado a objetos sin embargo los soporta, por que no sacar provecho de eso. Para comprender la POO, debemos comprender las partes que la conforman:
Qué son las clases?
La clase es una plantilla que usamos para crear objetos, al crear un objeto de una clase se dice que es una instancia de esa clase.Los objetos en php se crean con la palabra reservada new.
Código:
<?php
class Ejemplo
{
//Constructor
function Ejemplo()
{$ob = new Ejemplo();
?>
}
}
Aqui la variable $ob seria una instancia de la clase Ejemplo.
Constructor
El constructor es el metodo que es llamdo automaticamente al crear una instancia de la clase, el constructor lleva el mismo nombre de la clase, (aunque en la version de 5 de PHP sera especificado como _constructor ), el constructor no debe retornar ningun valor y es unico (distintamente a C plus).Pero bien, para que una clase sea util necesita metodos y atributos:
Metodos
los metodos (tambien operaciones) no son mas que un tipo de funciones propias de la clase, se manejan igual, reciben parametros, desarrollan un proceso y devuelven ( o no ) un valor, los metodos se definen con la palabra reservada:
Código:
<?phpclass Ejemplo {
function Ejemplo()
{
//Do nothing…
}MuestraNombre($nombre)
{
echo “El nombre es ” . $nombre;
}
}$obj = new Ejemplo();$obj->MuestraNombre(‘Ing_Amc’);?>
function
Esto es una clase con un simple metodo que muestra el valor de su unico parametro programado, el ejemplo daria como resultado:
Citar
El nombre es Ing_Amc
Atributos
Los atributos son variables que contienen informaciÃÆ ³n del estado de un objeto.Estos se definen usando la palabra reservada var.
Código:
<?php
class Ejemplo()
{
var $atributo;Ejemplo()
{
//Do nothing…
}DaValor($valor)
{
$this->atributo = $valor;
}$obj = new Ejemplo();$obj->DaValor(4);
?>
function
function
}
Ahora el atributo valdra 4, $this usada en el ejemplo, es una variable especial referenciada al objeto y atributos de la clase o de la clases heredadas, esto nos lleva al siguiente punto.
Herencia
La herencia permite a una clase, “heredar” (ya lo imaginaban no?) , los metodos y atributos de otra clase, para este proceso es usada la palabra reservada extends seguida de la que sera su clase “padre”, Ejemplo:
Código:
<?php
class Ejemplo {
var $atributo;Ejemplo()
{
// Do nothing
}
function setAtributo($value)
{
$atributo = $value;
}
}Ejemplo2 extends Ejemplo
{
function Ejemplo2()
{getAtributo()
{
return $atributo;
}$obj = new Ejemplo2();$obj->setAtributo(7);$obj->getAtributo();
?>
function
class
}
function
}
echo
Como vez pueden usarse los metodos de las dos clases ya que al instanciar un objeto de la clase Ejemplo2 al ser heredada de Ejemplo adquiere sus elementos.
Herencia Multiple en PHP
La herencia multiple no es soportada por PHP sin embargo en su version 5 implementan el uso de interfaces, que me supongo (como en el caso de Java) lo prefirieron por practisidad y simplicidad de codigo, ya que al programar con herencia multiple se puede llegar a formar una jerarquia de clases realmente desordenada, ademas de que en muchos casos es desechada por los desarrolladores por la complicacion de uso.
Sistemas de Proteccion
Nuevamente, esto en PHP no existe hasta su version 5.Esto permite hacer a los metodos y atributos de una clase accesibles desde cierto punto.
Acceso Public (Publico)
Al ser declarado un metodo o atributo public sera accesible desde cualquier punto, este es el punto mas bajo del sistema de proteccion. Para declarar publico, se usa la palabra reservada public.
Código:
<?php
class Ejemplo ()
{
public $atributo;Ejemplo() {
$this->atributo = ‘Hey!’;
}
}$obj = new Ejemplo();$obj->atributo;
?>
function
echo
Acceso Private (Privado)
Este es el más restrictivo, los elementos declarados bajo private solo seran accesibles desde metodos de su clase original.
Código:
<?php
class Ejemplo ()
{
private $atributo;Ejemplo() {
$this->atributo = ‘Hey!’;
}daAtributo()
{
return $this->atributo;
}
}$obj = new Ejemplo();$obj->daAtributo;
?>
function
function
echo
Como vez, hemos tenido que instanciar un metodo para devolver el valor de atributo.
Acceso Protected (Protegido)
Con este los elementos seran accesibles desde su clase original o desde clases heredadas.
Ejemplo Completo de Clase Simple:
Código:
<?phpclass Clase {$numeros = array();
function Clase()
{
//Do nothing…
}
function setNumero($numero)
{
$this->numeros[] = $numero;
}
function muestraNumeros()
{
return implode(‘,’, $this->numeros);
}$obj = new Clase();$obj->setNumero(2);$obj->setNumero(4);$obj->setNumero(6);$obj->muestraNumeros();?>
var
}
echo
Una clase con dos metodos, uno para agregar numeros, donde podemos agregar los numeros que queramos y otra para mostrar los numeros separados por una coma, observa que para guardar los numeros es usado un atributo en modalidad de array, el valor de los atributos dentro de la clase es estatico asi que sirve a la perfeccion para nuestro proposito.
Esto mostraria:
Citar
2,4,6
La programación orientada a objetos no es mas dificil que la programacion estructurada y es bastante util, aunque tiene tambien sus desventajas como el tiempo de procesamiento…, pero!, quieres saber mas?:
http://www.desarrolloweb.com/articulos/1697.php?manual=58
http://www.zonaphp.com/programacion-orientada-a-objetos-en-php/
http://www.webestilo.com/php/articulo.phtml?art=28
http://www.google.com.mx/search?hl=es&q=poo+php&btnG=B%C3%BAsqueda+en+Google&meta=