Bienvenidos

Bienvenidos

jueves, 9 de octubre de 2014

Ejercicios con orientación a objetos PHP , de HERENCIA DE CLASES

Herencia de clases

Aquí es donde veremos uno de los aspectos más potentes de la orientación a objetos. Una clase puede heredar propiedades y métodos de otra clase. Esto es útil cuando quieres añadir funcionalidad a una clase ya existente.
Siguiendo nuestro ejemplo, nuestra clase padre es Usuario y ahora, vamos a crear una clase hija que sea Administrador.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Usuario {
    public $usuario;
    public $password;  
    public function saludar() {
        echo 'Hola '.$this->usuario;
    }
}
class Administrador extends Usuario {
    public function banear($usuario) {
        echo $usuario->usuario." ha sido baneado";
    }
}
$usuario = new Usuario;
$usuario->usuario = 'juan';
$admin = new Administrador;
$admin->usuario = 'Súper López';
$admin->saludar(); // Hola Súper López
$admin->banear($usuario); // juan ha sido baneado
Usando la palabra clave extends, la clase Administrador ha heredado las propiedades usuario y password y el método saludar y hemos añadido un nuevo método banear a esta clase extendiendo las funcionalidades básicas de un usuario. Quizá el ejemplo sea muy absurdo pero tened en cuenta que podemos querer implementar funciones más complejas como login, logout, etc. y de esta forma nos acabamos ahorrando muchísimo código.

Ejercicios con orientación a objetos PHP, SOBREESCRIBIENDO METODOS

Sobreescribiendo métodos

Sobreescribir un método es tan sencillo como… ¡volverlo a definir! En la clase hija, volvemos a definir el método saludar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Usuario {
    public $usuario;
    public $password;  
    public function saludar() {
        echo 'Hola '.$this->usuario;
    }
}
class Administrador extends Usuario {
    public function saludar() {
        echo 'Hola admin>> '.$this->usuario;
    }
    public function banear($usuario) {
        echo $usuario->usuario." ha sido baneado";
    }
}
$admin = new Administrador;
$admin->usuario = 'Súper López';
$admin->saludar(); // Hola admin>> Súper López
Si además queremos mantener la funcionalidad original, podemos hacerlo llamando a la función del padre:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Usuario {
    public $usuario;
    public $password;  
    public function saludar() {
        echo 'Hola '.$this->usuario;
    }
}
class Administrador extends Usuario {
    public function saludar() {    
        echo '¡';
        parent::saludar();
        echo '!';
    }
    public function banear($usuario) {
        echo $usuario->usuario." ha sido baneado";
    }
}
$admin = new Administrador;
$admin->usuario = 'Súper López';
$admin->saludar(); // ¡Hola Súper López!
Como verás, hemos mezclado funcionalidades de ambos métodos.

Ejercicios con orientación a objetos PHP, de VISIBILIDAD DE METODOS Y PROPIEDADES

Visibilidad de métodos y propiedades

Hasta ahora tanto las propiedades como los métodos que hemos vistos, eran todos public. Ahora vamos a ver qué significa eso y el resto de tipos que tenemos.
public A los métodos y propiedades public, se puede acceder desde cualquier sitio. Tanto dentro de la clase como fuera.
protected Cuando declaramos una propiedad o método como protected, solo podremos accederlos desde la propia clase o sus descendientes (las clases hijas).
private Los métodos y propiedades private solo pueden ser leídos dentro de la propia clase que lo define. Este breve ejemplo nos muestra lo que pasaría:
1
2
3
4
5
6
7
class Usuario {
    public $usuario;
    private $password;
}
$usuario = new Usuario;
$usuario->password = 'Argofifa'; // <-- ERROR!

Ejercicios con orientación a objetos PHP, de CLASES y METODOS ESTATICOS

Clases y métodos estáticos

Las clases y métodos estáticos pueden ser de cualquiera de los tipos anteriores, public, protected o private pero tienen la peculiaridad de que no requieren que la clase sea instanciada. Además, las propiedades estáticas guardan el valor durante la ejecución del script. Veamos un breve ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Usuario {
    public $usuario;
    public $password;
    public static $contador = 0;   
    public function __construct() {
        self::$contador++;
    }
}
$usuario1 = new Usuario;
echo Usuario::$contador; // 1
$usuario1 = new Usuario;
echo Usuario::$contador; // 2
Ten en cuenta, que cuando nos referimos a una propiedad o método estático, no podremos hacer uso de $this, pero tendremos acceso a self, que viene a ser lo mismo solo que únicamente podremos usar métodos y propiedades estáticas. Puedes llamar a métodos y usar propiedades estáticas desde un método público pero no al contrario.

Operadores De Incremento y Decremento

<?php

echo "OPERADORES INCREMENTO";
$a = 3;


echo "</br>VARIABLE a = $a ";
$a++;
echo "</br>VARIABLE a = $a ";

echo "</br>OPERADORES DECREMENTO";

$b = 34;


echo "</br>VARIABLE a = $b ";
$b--;
echo "</br>VARIABLE a = $b ";



?>