Entender la programación en orden cronológico no plantea ninguna dificultad. Esto significa codificar para que se ejecuten sus sentencias o funciones unas después de otras. Sin embargo en la Programación Orientada a Objeto (POO), casi todo son objetos y todos los objetos interactúan entre sí.
Un objeto es tipo de elemento que encaja dentro de una clase que tiene unas características o cualidades (atributos) y a unas acciones (métodos). Un ejemplo de la vida real podría ser:
- Clase: Animal
- Objetos: tipo de animales, por ejemplo un perro y, otro, un gato
- Atributos: el color de pelo, el peso
- Acciones: comer, moverse, subir de peso
La POO con PHP
Para llevar estos conceptos a PHP hay que tener claro dos bloques o fases: 1) Crear o declarar la clase , con o sin atributos iniciales o por defecto 2) Utilizar la clase llamándola desde la página de uso.
Veamos estas fases sobre un ejemplo sencillo:
Se desea crear una clase Animal que tenga como propiedades el color y el peso y como métodos modificar su color, leer su color, modificar su peso, leer su peso, comer y moverse.
1.- Crear o declarar la clase en un fichero independiente que llamaremos por conveniencia: Animal.class.php
<?php // inicio de nuestro programa class Animal //inicio declaración de la clase { // Declaración de atributos private $color = "gris"; private $peso = 10; // definición de los métodos public function getColor () { return $this->color; } public function setColor ($color) { $this->color = $color; } public function getPeso () { return $this->peso; } public function setPeso ($peso) { $this->peso = $peso; } public function anadir_un_kilo() { $this->peso = $this->peso + 1; } public function comer() { // } public function moverse () { // } }?> //fin declaración de la clase
2.- Utilización de la clase en una página de producción que llamaremos por conveniencia: uso.Animal.php :
<?php include ('Animal.class.php'); // carga de la clase $perro = new Animal; // instanciar la clase Animal $perro->set_Peso(18); // actualizar el peso del perro a 18 kilos echo "El peso del perro es: ".$perro->getPeso()." kg<br />"; // leer el peso $perro->setColor("negro"); // actualizar el color del perro echo "El color del perro es: ".$perro->getColor()."<br /n>"; $gato = new Animal; // instanciar la clase Animal; $gato->set_Peso(5); // actualizar el peso del gato echo "El peso del gato es: ".$gato->getPeso()." kg<br />"; // leer el peso del gato $gato->setColor("blanco"); // actualizar el color del perro echo "El color del gato es: ".$gato->getColor()."<br /n>"; ?>
Es muy importante entender que una clase es un tipo compuesto que reagrupa variables (son los atributos de la clase) y funciones (son los métodos de la clase). Por sí misma, una clase no almacena información o dato; es solo un modelo, una definición.
A partir de la clase, es posible instanciarla con objetos para que estos se adapten a su estructura, con la diferencia de que sí almacenan información y que en función de como estén programados, estos podrán ser públicos, privados o protegidos.
A continuación mostramos una imagen que define a la perfección todos los elementos esenciales que intervienen en este modelo de programación.
