Bienvenidos

Bienvenidos

sábado, 30 de abril de 2016

jueves, 9 de octubre de 2014

Conceptos de Programación Orientada a Objetos

       La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Ejercicios con orientación a objetos PHP, AÑADIENDO PROPIEDADES

Añadiendo propiedades

Una propiedad no es más que una variable, y la usaremos para guardar información sobre el objeto en sí. Veamos cómo añadir nuestras propiedades.
1
2
3
4
class Usuario {
    public $usuario;
    public $password;
}
En seguida veremos qué es public. Por ahora quédate con que la propiedad es pública lo cual quiere decir que cualquiera puede acceder a ella. Después de public, tenemos el nombre de la propiedad.
Veamos cómo escribir y leer estas propiedades.
1
2
3
4
5
6
7
8
9
10
class Usuario {    
    public $usuario;   
    public $password;
}
$juan = new Usuario;
$juan->usuario = 'juan';
$juan->password = '01juan01';
echo $juan->usuario; // juan
Si te fijas, estamos usando $juan->[nombre_propiedad]. Quizá te estés preguntando… ¿por qué no puedo hacer algo así? Usuario->usuario. La respuesta es, que puede haber un número indeterminado de usuarios y, el valor 01juan01 está dentro del objeto, no de la clase.

Ejercicios con orientación a objetos PHP, AÑADIENDO METODOS

Añadiendo métodos

Añadir métodos es tan sencillo como añadir propiedades. Vamos a añadir un método para saludar.

1
2
3
4
5
6
7
8
class Usuario {
    public $usuario;
    public $password;
    public function saludar() {
        echo '¡Hola '.$this->usuario.'!';
    }
}
Lo primero que te estarás preguntando es… ¿qué es $this? $this es la forma que tienen los objetos de referirse a sí mismos. Por ende, para poder acceder al valor de $usuario desde el propio objeto, tendremos que valernos de $this.
Llamar al método no tiene mucho misterio:

1
2
3
$juan = new Usuario;
$juan->usuario= 'juan';
$juan->saludar(); // ¡Hola juan!
Ahora, si usamos varios objetos, podemos almacenar valores distintos en ellos y llamar a sus métodos:
1
2
3
4
5
6
7
8
9
10
11
12
$usuarios = null;
$usuarios[] = new Usuario;
$usuarios[] = new Usuario;
$usuarios[0]->usuario = 'juan';
$usuarios[1]->usuario = 'manolo';
foreach ($usuarios as $usuario) {
    $usuario->saludar();
}
// '¡Hola juan!'
// '¡Hola manolo!'

Ejercicios con orientación a objetos PHP, de CONSTRUCTORES Y DESTRUCTORES

Constructores y destructores

Cuando una clase se crea o se destruye, se llama a unos métodos mágicos como ya hemos adelantado. Si queremos realizar alguna acción en cualquiera de los dos eventos, tendremos que definir esos métodos e implementar su funcionalidad.
El método __construct() se llama cuando creamos una clase y suele ser un buen punto para rellenar información por defecto, o formar un objeto con algo que venga de la base de datos, etc.
1
2
3
4
5
6
7
8
9
10
11
class Usuario {
    public $usuario;
    public $password;
    public function __construct() {
        $this->password = '1234'; //Seguridad al poder!
    }
}
$usuario = new Usuario;
echo $usuario->password; // 1234
Cabe destacar que podemos pasar datos al constructor:
1
2
3
4
5
6
7
8
9
10
11
12
class Usuario {
    public $usuario;
    public $password;
    public function __construct($usuario) {
        $this->password = '1234';
        $this->usuario = $usuario;
    }
}
$usuario = new Usuario('juan');
echo $usuario->usuario; // juan
Por otro lado, el destructor se llama cuando la clase es destruida. Esto ocurre automáticamente cuando PHP termina de ejecutarse, libera todos los recursos que tenga asociados y va llamando al método __destruct() de todas las clases en caso de que lo tengan. También podemos forzarlo usando la función unset sobre el objeto. En el destructor se suelen implementar cierres de conexiones a bases de datos, liberación de memoria, etc.
Veámoslo en un breve ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Usuario {
    public $usuario;
    public $password;  
    public function __construct($usuario) {
        $this->password = '1234';
        $this->usuario = $usuario;
    }
    public function __destruct() {
        echo 'Muero...';
    }
}
$usuario = new Usuario('juan');
unset($usuario); // 'Muero...';