2 - Declaración de una clase y creación de un objeto. |
La programación orientada a objetos se basa en la programación de clases; a diferencia de la programación estructurada, que está centrada en las funciones.
Una clase es un molde del que luego se pueden crear múltiples objetos, con similares características.
Un poco más abajo se define una clase Persona y luego se crean dos objetos de dicha clase.>
Una clase es una plantilla (molde), que define atributos (lo que conocemos como variables) y métodos (lo que conocemos como funciones).
La clase define los atributos y métodos comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.
Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear un objeto de una clase, se dice que se crea una instancia de la clase o un objeto propiamente dicho.
Confeccionaremos nuestra primer clase para conocer la sintaxis en el lenguaje PHP, luego definiremos dos objetos de dicha clase.
Implementaremos una clase llamada Persona que tendrá como atributo (variable) su nombre y dos métodos (funciones), uno de dichos métodos inicializará el atributo nombre y el siguiente método mostrará en la página el contenido del mismo.
pagina1.php
<html> <head> <title>Pruebas</title> </head> <body> <?php class Persona { private $nombre; public function inicializar($nom) { $this->nombre=$nom; } public function imprimir() { echo $this->nombre; echo '<br>'; } } $per1=new Persona(); $per1->inicializar('Juan'); $per1->imprimir(); $per2=new Persona(); $per2->inicializar('Ana'); $per2->imprimir(); ?> </body> </html>
La sintaxis básica para declarar una clase es:
class [Nombre de la Clase] { [atributos] [métodos] }
Siempre conviene buscar un nombre de clase lo más próximo a lo que representa. La palabra clave para declarar la clase es class, seguidamente el nombre de la clase y luego encerramos entre llaves de apertura y cerrado todos sus atributos(variable) y métodos(funciones).
Nuestra clase Persona queda definida entonces:
class Persona { private $nombre; public function inicializar($nom) { $this->nombre=$nom; } public function imprimir() { echo $this->nombre; echo '<br>'; } }
Los atributos normalmente son privados (private), ya veremos que esto significa que no podemos acceder al mismo desde fuera de la clase. Luego para definir los métodos se utiliza la misma sintaxis que las funciones del lenguaje PHP.
Decíamos que una clase es un molde que nos permite definir objetos. Ahora veamos cual es la sintaxis para la definición de objetos de la clase Persona:
$per1=new Persona(); $per1->inicializar('Juan'); $per1->imprimir();
Definimos un objeto llamado $per1 y lo creamos asignándole lo que devuelve el operador new. Siempre que queremos crear un objeto de una clase utilizamos la sintaxis new [Nombre de la Clase].
Luego para llamar a los métodos debemos anteceder el nombre del objeto el operador -> y por último el nombre del método. Para poder llamar al método,éste debe ser definido público (con la palabra clave public). En el caso que tenga parámetros se los enviamos:
$per1->inicializar('Juan');
También podemos ver que podemos definir tantos objetos de la clase Persona como sean necesarios para nuestro algoritmo:
$per2=new Persona(); $per2->inicializar('Ana'); $per2->imprimir();
Esto nos da una idea que si en una página WEB tenemos 2 menúes, seguramente definiremos una clase Menu y luego crearemos dos objetos de dicha clase.
Esto es una de las ventajas fundamentales de la Programación Orientada a Objetos (POO), es decir reutilización de código (gracias a que está encapsulada en clases) es muy sencilla.
Lo último a tener en cuenta en cuanto a la sintaxis de este primer problema es que cuando accedemos a los atributos dentro de los métodos debemos utilizar los operadores $this-> (this y ->):
public function inicializar($nom) { $this->nombre=$nom; }
El atributo $nombre solo puede ser accedido por los métodos de la clase Persona.