viernes, 23 de junio de 2017

INTERFACES DE CODIGOS

Las interfaces de objetos permiten crear código con el cual especificar qué métodos deben ser implementados por una clase, sin tener que definir cómo estos métodos son manipulados.

Las interfaces se definen de la misma manera que una clase, aunque reemplazando la palabra reservada class por la palabra reservada interface y sin que ninguno de sus métodos tenga su contenido definido.

Todos los métodos declarados en una interfaz deben ser públicos, ya que ésta es la naturaleza de una interfaz.

Para implementar una interfaz, se utiliza el operador implements. Todos los métodos en una interfaz deben ser implementados dentro de la clase; el no cumplir con esta regla resultará en un error fatal. Las clases pueden implementar más de una interfaz si se deseara, separados cada una por una coma.

Ejemplo

<?php

// Declarar la interfaz 'iTemplate'
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}

// Implementar la interfaz
// Ésto funcionará 
class Template implements iTemplate
{
    private $vars = array();
 
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
  
    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }

        return $template;
    }
}
// Ésto no funcionará
// Error fatal: La Clase BadTemplate contiene un método abstracto
// y por lo tanto debe declararse como abstracta (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
    private $vars = array();
 
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
}
?>

jueves, 22 de junio de 2017

VARIABLES ESTATICAS


Declarar propiedades o métodos de clases como estáticos los hacen accesibles sin la necesidad de instanciar la clase. Una propiedad declarada como static no puede ser accedida con un objeto de clase instanciado (aunque un método estático sí lo puede hacer).

las clases estáticas siempre serán las mismas, no podrán ser cambiadas

<?phpfunction foo(){
    static $int = 0;          // correcto
    static $int = 1+2;        // correcto (a partir de PHP 5.6)
    static $int = sqrt(121);  // incorrecto (ya que es una función)

    $int++;
    echo $int;
}?>




class Foo{
    public static $mi_static = 'foo';

    public function valorStatic() {
        return self::$mi_static;
    }
}

class Bar extends Foo{
    public function fooStatic() {
        return parent::$mi_static;
    }
}


print Foo::$mi_static . "\n";$foo = new Foo();
print $foo->valorStatic() . "\n";
print $foo->mi_static . "\n";      // "Propiedad" mi_static no definidaprint $foo::$mi_static . "\n";$nombreClase = 'Foo';
print $nombreClase::$mi_static . "\n"; // A partir de PHP 5.3.0print Bar::$mi_static . "\n";$bar = new Bar();
print $bar->fooStatic() . "\n";?>

martes, 20 de junio de 2017

POLIFORMISMO

El polimorfismo, junto con la encapsulación y la herencia, forman parte de los pilares básicos de la programación orientada a objetos.

El polimorfismo, como su nombre indica, sugiere múltiples formas. En programación cuando hablamos de polimorfismo nos referimos a la capacidad de acceder a multiples funciones a través del mismo interfaz. Es decir que un mismo identificador, o función puede tener diferentes comportamientos en función del contexto en el que sea ejecutado.
EJEMPLO
Pongamos un ejemplo, tenemos diferentes tipos de pelotas, de fútbol, baloncesto y tenis. Todas comparten su forma redonda, tu capacidad de rodar y rebotar, pero ninguna es igual a a anterior, tienen un peso diferente, una textura diferente, color, etcétera. No es necesario crear las funcionalidad de rodar y rebotar en cada una de las pelotas, podemos crear una clase padre que tenga esa capacidad y luego solo debemos heredar:

viernes, 16 de junio de 2017

ABSTRACCION

A grandes rasgos, estas son sus diferencias:
public hace que la variable/función se pueda acceder desde cualquier lugar, como por ejemplo otras clases y otras instancias de esa misma clase.
private hace que la variable/función solamente se pueda utilizar desde la misma clase que las define.
protected hace que la variable/función se puede acceder desde la clase que las define y también desde cualquier otra clase que herede de ella.

QUE ES ABSTRACCIÓN

La programación orientada a objetos o POO es la tendencia actual de todos los lenguajes de alto nivel, dadas las posibilidades que ofrece. Pero, ¿Cuáles son las características de la POO? ... Una es la abstracción.
La abstracción expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás, dejando en segundo término los detalles. Para ser más claro, la abstracción es un término propio.
 Entonces, ¿Qué es la abstracción? Básicamente es la capacidad de separar los elementos por lo menos mentalmente para poder analizarlos de forma singular.