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.

domingo, 21 de mayo de 2017

Alan Turing

Alan Turing nació 23 de junio de 1912 y falleció el 7 de junio de 1954 a los  41 años de edad debido a una intoxicación cianhídrica.

Fue un matemático, lógico, científico de la computación, criptógrafo, filósofo, maratoniano y corredor de ultra distancia británico. 

Es considerado uno de los padres de la ciencia de la computación y precursor de la informática moderna. Proporcionó una influyente formalización de los conceptos de algoritmo y computación: la máquina de Turing. Formuló su propia versión que hoy es ampliamente aceptada como la tesis de Church-Turing (1936).

Durante la segunda guerra muncial trabajo decifrando codigos nazis en donde por un tiempo se combirtio en el lider de la organizacion. tras le guerra diseño uno de los primeros computadores electronicos programables digitales  y poco tiempo después construyó otra de las primeras máquinas.

BIOGRAFÍA.

Turing fue concebido en Chatrapur (India británica). Su padre Julius Mathison Turing era miembro del cuerpo de funcionarios británicos en la India. Julius y su esposa Ethel querían que su hijo Alan naciera en el Reino Unido y regresaron a Paddington, donde finalmente nació.

Su infancia 

El matemático británico pasó gran parte de su infancia en la India dado que su padre trabajaba en la Administración Colonial del país. Desde muy pequeño, Turing mostró un gran interés por la lectura, se cuenta que aprendió a leer por sí solo en tres semanas, por los números y los rompecabezas. Sus padres lo inscribieron en el colegio St. Michael cuando tenía seis años; su profesora se percató enseguida de la genialidad de Turing. Sus ansias de conocimiento y experimentación llegaban hasta tal punto que a los ocho años, atraído por la química, diseñó un pequeño laboratorio en su casa. Su carrera escolar estuvo marcada, por un lado, por sus aptitudes y su facilidad por las matemáticas y, por el otro, por su carácter inconformista que le llevaba a seguir sus propias ideas y apartarse del rígido (e ilógico, según su parecer) sistema educativo.

Como curiosidad, cabe decir que Turing recorría alrededor de 90 kilómetros para poder ir a la escuela, dato que nos hace entender cómo, más adelante, además de científico, fue un atleta notable de rango casi olímpico. Con poco más de quince años, entró en contacto con el trabajo de Albert Einstein y, además de entender sus bases, comprendió sus críticas a las Leyes de Newton a partir de un texto en el que no se explicitaba tal cometido.

Estudios.

En 1926, con catorce años, ingresó en el internado de Sherborne en Dorset. Su primer día de clase coincidió con una huelga general en Inglaterra,8 pero su determinación por asistir a clase era tan grande que recorrió en solitario, con su bicicleta, los más de 96 kilómetros que separaban Southampton de su escuela, pasando la noche en una posada. Tal hazaña fue recogida en la prensa local.

Las esperanzas y las ambiciones de Turing en la escuela fueron moldeadas por la estrecha amistad que desarrolló con un compañero un poco mayor, Christopher Morcom,9 quien fue el primer amor de Turing. Morcom murió repentinamente, el 13 de febrero de 1930,10 solo unas pocas semanas después de su última temporada en Sherborne, debido a complicaciones de la tuberculosis bovina, contraída tras beber leche de alguna vaca infectada. La fe religiosa de Turing se hizo pedazos, y se volvió ateo. Adoptó la convicción de que todos los fenómenos, incluyendo el funcionamiento del cerebro humano, deben ser materialistas.11 Sin embargo siguió creyendo en la supervivencia del espíritu después de la muerte.12

La inclinación natural de Turing hacia la matemática y la ciencia no le atrajo el respeto de sus profesores de Sherborne, cuyo concepto de educación hacía mayor énfasis en los clásicos. En la escuela de Sherbone, ganó la mayor parte de los premios matemáticos que se otorgaban y, además, realizaba experimentos químicos por su cuenta aunque la opinión del profesorado respecto a la independencia y ambición de Turing no era demasiado favorable. A pesar de ello, Turing continuó mostrando una singular habilidad para los estudios que realmente le gustaban, y llegó a resolver problemas muy avanzados para su edad (15 años) sin ni siquiera haber estudiado cálculo elemental.

Biografia tomada de: https://es.wikipedia.org/wiki/Alan_Turing


Maquina de turing


La llamada “Máquina de Turing” es en realidad un modelo matemático consistente en un autómata que es capaz de “implementar cualquier problema matemático expresado a través de un algoritmo”. A pesar de esta definición tan complicada, en realidad la máquina de Turing destaca por su simplicidad pues manipula símbolos sobre una tira de cinta siguiendo una serie de reglas. A pesar de esta simplicidad, una máquina de Turing puede adaptarse para que simule la lógica de cualquier algoritmo de computador, de ahí su enorme potencial y valor.

¿ Como funciona la maquina de turing ?

Una Máquina de Turing consta de una cinta infinita dividida en espacios de trabajo o celdas yuxtapuestas que actúa como memoria, un cabezal capaz de leer y escribir símbolos en la cinta y moverla de celda en celda a derecha e izquierda, un registro de estado, y una tabla finita de instrucciones o tabla de acción.

La máquina de Turing es considerada un autómata con la capacidad de reconocer lenguajes formales de acuerdo a la jerarquía de Chomsky, razón por la cual es muy superior a otros autómatas como el autómata con pila o el autómata finito.


Como el invento de Alan Turing nos ayuda en nuestra carrera

, como ya se explico anterior mente La maquina de Turing fue diseñada a base de un algoritmo y la inspiracion para las computadoras en un futuro y diseño de software seguidos de algoritmos. 

En las guerras en donde se descubren nuevas cosas con tal de no perder.

jueves, 18 de mayo de 2017

Clase numero 10

Ruta relativa y ruta absoluta 

¿ Que es una ruta ?

En informática, una ruta (path, en inglés) es la forma de referencia de un archivo informático o directorio en un sistema de archivos de un sistema operativo determinado.

Ruta absoluta o completa.

Una ruta absoluta o completa comienza con la letra de unidad seguida de dos puntos, por ejemplo D:

Ruta relativa

Una ruta relativa hace referencia a una ubicación que es relativa a un directorio actual. Las rutas relativas utilizan dos símbolos especiales, un punto (.) y dos puntos seguidos (..), lo que significa el directorio actual y el directorio padre. Los dos puntos seguidos se utilizan para subir en la jerarquía. Un único punto representa el directorio actual.

En la estructura de directorios de ejemplo siguiente, se asume que se ha utilizado el Explorador de Windows para navegar a D:\Data\Shapefiles\Soils. Después de navegar a este directorio, una ruta relativa utilizará D:\Data\Shapefiles\Soils como directorio actual (hasta que se navegue a un nuevo directorio, en cuyo momento el nuevo directorio se convierte en el directorio actual). A veces, se hace referencia al directorio actual como el directorio raíz.



lunes, 15 de mayo de 2017

CLASE NUMERO 9

Buenas practicas array PHP

Arrays comunes, índices numéricos En capítulos anteriores poníamos el ejemplo de un array 
llamado sentido que contenía los distintos sentidos del 
ser humano:

$sentido[1]="ver";
$sentido[2]="tocar";
$sentido[3]="oir";
$sentido[4]="gustar";
$sentido[5]="oler";

En este caso este array cataloga sus elementos, comúnmente llamados valores, por números. Los números del 1 al 5 son por lo tanto las claves y los sentidos ("tocar", "oir"...) 
son los valores asociados.

Arrays asociativos

Si lo deseamos, es posible emplear nombres (cadenas) para clasificar los elementos del array. Lo único que deberemos hacer es entrecomillar las llaves alfanuméricas y entonces 
tendremos un array asociativo:

$moneda["espana"]="Peseta";
$moneda["francia"]="Franco";
$moneda["usa"]="Dolar";
Otra forma de definir idénticamente este mismo array y que 
nos puede ayudar para la creación de arrays más complejos 
es la siguiente sintaxis:

<?
$moneda=array("espana"=> "Peseta","francia" => "Franco","usa" => "Dolar");
?>


Arrays multidimensionales

Una forma muy practica de almacenar datos es mediante la creación de arrays multidimensionales (tablas o matrices con más de una dimensión).

 Pongamos el ejemplo siguiente: 

Queremos almacenar dentro de una misma tabla el nombre, moneda y lengua hablada en cada país. Para hacerlo podemos emplear un array llamado país que vendrá definido por estas tres características (claves). Para crearlo, deberíamos escribir una expresión del mismo
 tipo que la vista anteriormente en la que meteremos una array dentro del otro. Este proceso de incluir una instruccion dentro de otra se llama anidar y es muy corriente en programación:

<?
$pais=array
(
"espana" =>array
   (
   "nombre"=>"España",
   "lengua"=>"Castellano",
   "moneda"=>"Peseta"
   ),
"francia" =>array
   (
   "nombre"=>"Francia",
   "lengua"=>"Francés",
   "moneda"=>"Franco"
   )
);
echo $pais["espana"]["moneda"] //Saca en pantalla: "Peseta"
?>






BUENAS PRACTICAS DE CONSTANTES PHP

Las constantes son elementos de PHP que guardan un valor fijo que no se puede modificar a lo largo del programa. Las constantes pueden ser definidas por el programa o estar predefinidas por el propio PHP o por algún módulo. Los nombres de las constantes siguen las mismas reglas que los nombres de las variables, pero sin el dólar ($) inicial. La costumbre es escribir los nombres de las constantes en mayúsculas.

En principio, se puede no utilizar constantes nunca, puesto que las constantes definidas por el programa podrían reemplazarse por variables. La ventaja de usar constantes y variables es que se puede distinguir a simple vista si a lo largo de un programa algo va a permanecer constante (si es una constante) o puede cambiar (si es una variable). 

El inconveniente de usar constantes es que las constantes no se sustituyen dentro de las cadenas y es necesario sacarlas fuera de las cadenas, haciendo el código un poco más incómodo de escribir y leer. Desde el punto de vista del rendimiento, la diferencia es inapreciable.


<?php
define("PI", 3.14);
define("pi", 3.141592);
print "<p>El valor de pi es " . PI . "</p>";
print "<p>El valor de pi es " . pi . "</p>";
?>
Las constantes deben ser declaradas en mayúsculas, y si son palabras compuestas llevarán linea baja, esto debe ser estándar para constantes generales y las de clase, por ejemplo “NOMBRE_EMPRESA”, “NUMERO_TELEFONICO”


<?php
define('COLOR', '#FFFFFF'); // Constantes generales
define('NOMBRE_COMPLETO', 'Jhon Doe');

class Pruebas
{
    const NUMERO = 10; // Constantes de clase
}
INF

La constante INF representa el infinito, es decir, cualquier 
número demasiado grande (positivo o negativo) para poderse 
guardar en una variable decimal.

PHP_INT_MAX

PHP_INT_MAX es el valor del mayor entero que se puede guardar 
en una variable de tipo entero.

<?php
$maximo = PHP_INT_MAX;
print "<p>El mayor entero que se puede guardar \n";
print "en una variable entera es $maximo</p>\n";
?>

PHP DOC

Es un estándar informal que sirve para comentar código PHP , pero está en proceso de ser formalizado.  Se permite que los generadores de documentos externos como phpDocumentor puedan crear la documentación  en buen formato y fácil de entender.

¿Cual es la diferencia entre i++ y ++i en PHP?

La diferencia es sencilla y se encuentra en la PRECEDENCIA DEL OPERADOR (lo cual es muy importante si estas haciendo asignaciones). 

Un ejemplo práctico: 

Supongamos que tenemos lo siguiente: 

i=5; // i vale 5 
j=5 // j vale 5 
a = i++ // a vale 5, i vale 6 
b = ++j // b vale 6, j vale 6 

¿Por qué a vale 5 y b vale 6? 

a = i++ , esto significa que PRIMERO ASIGNAMOS el valor de i a la variable a (por eso a=5) y LUEGO INCREMENTAMOS el valor de i (i=6) 

a=i++; 
significa: 
a=i; 
i++; 

b= ++j, esto significa que PRIMERO INCREMENTAMOS el valor de j (j=6) y LUEGO ASIGNAMOS EL VALOR INCREMENTADO de j a la variable b (por eso b=6) 

b=++j; 
significa; 
j++; 
b=j; 


En resumen: 

i++: primero asigno, luego incremento 
++i: primero incremento, luego asigno el valor incrementado 

Una nota importante es que si no haces asignación, es lo mismo i++ que ++i, por ejemplo. 

i=5; 
j=5; 

i++; // i vale 6 
++j; // j vale 6