La programación orientada a objetos es un concepto o técnica de programación que nos permite reutilizar código y mejora de forma notable el mantenimiento de las aplicaciones.
En este ambito todo gira en torno a objetos y clases al igual que otros lenguajes como C++ o Java
Hay muchas formas de definir POO por lo que lo voy a explicar a mi manera la cual espero que sea lo mas facil de entender
Objetos
Cuando pensamos en objetos debemos imaginar por ejemplo un catalogo de smartphones, hay muchos smartphones pero cada uno tiene diferentes atributos (tamaño, color …) y métodos ( Camara frontal, Camara trasera, 4G, 3G …)
Imaginemos que todos los smartphones son objetos, cada objeto tiene atributos y métodos igual que los smartphones. Los atributos son simplemente variables definidas en una clase y los metodos las funciones definidas en una clase
Las clases definen las propiedades y los métodos que luego podrán usar los objetos.
Sintaxis de una clase en PHP5
<?php
class SoyUnaClase {
private $soyUnAtributo;
public function soyUnMetodo() {
...
}
}
?>
Una clase se define con la palabra reservada “class”, como hemos visto, las clases son simplemente una definición o una especificación de atributos(variables) y metodos(funciones) que podemos usar en nuestras aplicaciones
Instanciar un objeto
Para utilizar una clase tenemos que instanciar un objeto, a continuacion definimos un objeto llamado $soyUnObjeto y lo creamos utilizando el operador “new” seguido de la clase.
$soyUnObjeto = new SoyUnaClase;
Llamar a los miembros de una clase
Para acceder a los métodos y atributos utilizamos el operador “->” seguido del nombre del método o atributo.
$soyUnObjeto -> soyUnAtributo;
$soyUnObjeto -> soyUnMetodo();
Para acceder a los métodos y atributos desde dentro de la clase utilizamos la pseudovariable “$this” y el operador “->” seguido del nombre del método o atributo.
$this -> soyUnMetodo();
$this -> soyUnAtributo();
Ejemplo en PHP5
<?php
class Smartphone {
private $marca;
public function imprimir($nom) {
$this->marca=$nom;
}
public function printMarca() {
echo '<h2>Modelo</h2>';
echo $this->marca;
}
}
$obj1=new Smartphone();
$obj1->imprimir('Samsung');
$obj1->printMarca();
$obj2=new Smartphone();
$obj2->imprimir('Nokia');
$obj2->printMarca();
$obj3=new Smartphone();
$obj3->imprimir('Apple');
$obj3->printMarca();
?>
Resumen
Primero hemos creado la clase “Smartphone”.
A continuación y dentro de la clase, hemos definido el atributo “marca”, en PHP4 definiamos los atributos explícitamente con la palabra reservada “var”, en PHP5 no es necesario, podemos definir los atributos como “public”, “private” y “protected”, si no lo hacemos, estos serán declarados como “public”.
Definimos tambien el método “imprimir()” que recibe un parametro y el método “printMarca()”, la función de estos métodos será imprimir en pantalla un encabezado común y un modelo para cada objeto.
Por último hemos instanciado tres objetos ($obj1,$obj2,$obj3) de la clase “Smartphone” y hemos llamado a sus metodos que se encargan de ejecutar las funciones, el método “imprimir()” recibe un parametro que definimos al llamar al método.
Diferencias en el modelo de objetos entre PHP4 y PHP5
PHP5 ofrece un mejor rendimiento y más caracteristicas en cuanto a modelo de objetos se refire, la mayor parte del código generado para PHP4 funciona sin problemas en PHP5, a continuación vamos a repasar algunas de las diferencias mas importantes.
Principio de ocultación
En PHP4 no existe el principio de ocultación, todos los miembros de una clase son publicos, por lo tanto no podemos definir la visibilidad de los atributos y métodos de una clase, los atributos deben declararse explícitamente con “var”.
En PHP5 si existe el principio de ocultación, podemos definir la visibilidad de los atributos y métodos de una clase con “public” (accesible desde cualquier ambito), “private” (accesible desde dentro de la clase y sus clases heredadas) o “protected” (accesible solo desde dentro de la clase).
Importante
En PHP5, entre los miembros de una misma clase no se aplica el principio de ocultación.
Al declarar los atributos en PHP5 podemos seguir usando la sintaxis de PHP4 (var $atributo;) que equivale a “public”.
Constructor
En PHP4 el constructor es un método con un nombre igual que el nombre de la clase.
En PHP5 el constructor es un método con el nombre “__construct()”.
Importante
En PHP5 podemos seguir usando la sintaxis de PHP4 y declarar el constructor con un nombre igual que el nombre de la clase
Destructor
En PHP4 no existe el destructor, el destructor se llama automaticamente cuando deja de ejecutarse el codigo
En PHP5 el destructor es un método con el nombre “__destruct()” que no puede recibir argumentos
Clases heredadas
Para indicar que una clase hereda de otra utlilizamos la palabra reservada “extends”, no existe la herencia multiple, por lo que solo se puede heredar de una clase, si la clase heredada tiene su propio constructor o destructor, al crear un objeto de la clase heredada tenemos que declarar explícitamente a su constructor o destructor con “parent::__construct()” o “parent::__destruct()” respectivamente, ya que estos no se invocan por defecto.
Ejemplo
class SoyUnaClaseNueva extends SoyUnaClaseHeredada {
public function soyUnMetodo() {
...
}
}
Valoraciones
Sé el primero en valorar