TIC-92

Post on 08-Mar-2016

226 views 3 download

description

Integrantes: - Hernandez Villa Axel Aaron - Riveroll Vargas Ricardo

Transcript of TIC-92

GUÍA DE PHP OOPINTEGRANTES:

• RIVEROLL VARGAS RICARDO• HERNANDEZ VILLA AXEL AARON

GRUPO: TIC-929° CUATRIMESTRE

ELEMENTOS QUE CONFORMAN UNA CLASE

Una clase es un conjunto de variables, llamados atributos, y funciones, llamadas métodos, que trabajan sobre esas variables. Las clases son, al fin y al cabo, una definición: una especificación de propiedades y funcionalidades de elementos que van a participar en nuestros programas.

• Por ejemplo, la clase "Caja" tendría como atributos características como las dimensiones, color, contenido y cosas semejantes. Las funciones o métodos que podríamos incorporar a la clase "caja" son las funcionalidades que deseamos que realice la caja, como introduce(), muestra_contenido(), comprueba_si_cabe(), vaciate()...

• Las clases en PHP se definen de la siguiente manera:

<?php class Caja{ var $contenido; function introduce($cosa){ $this->contenido = $cosa; } function muestra_contenido(){ return $this->contenido; } }

$micaja = new Caja; $micaja->introduce("algo"); echo $micaja->muestra_contenido(); ?>

VISTA PREVIA DEL EJEMPLO

REFERENCIA THIS

• La palabra clave "this" hace referencia a la instancia actual de la clase, califica cuales variables son parámetros en un método y cuales son los campos de al clase.

EJEMPLO

<?php class MyClass{ public $prop1 = “Yo soy una clase mucho gusto conocerte!";} $obj = new MyClass; echo $obj->prop1; // Output the property ?>

VISTA PREVIA DEL EJEMPLO

DIFERENTES FORMAS PARA EL PASO DE ARGUMENTOS A UN MÉTODO

• El paso de parámetros en PHP se realiza por valor. "Por valor" es una manera típica de pasar parámetros en funciones, quiere decir que el cambio de un dato de un parámetro no actualiza el dato de la variable que se pasó a la función. Por ejemplo, cuando invocamos una función pasando una variable como parámetro, a pesar de que cambiemos el valor del parámetro dentro de la función, la variable original no se ve afectada por ese cambio. Puede que se vea mejor con un ejemplo:

• function porvalor ($parametro1){ $parametro1="hola"; echo "<br>" . $parametro1; //imprime "hola" }

$mivariable = "esto no cambia"; porvalor ($mivariable); echo "<br>" . $mivariable; //imprime "esto no cambia"

DEVOLVER UN VALOR DESDE UN MÉTODO

• Los valores son devueltos usando la sentencia opcional return. Se puede devolver cualquier tipo, incluidos arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la línea desde la que fue llamada. Véase return para más información.

EJEMPLO

VISTA PREVIA DEL EJEMPLO

EL CONSTRUCTOR

• Los constructores son funciones en una clase que son invocadas automáticamente cuando se crea una nueva instancia de una clase con new. Una función se vuelve un constructor, cuando tiene el mismo nombre que la clase. Si una clase no tiene constructor, el constructor de la clase base será invocado, si es que existe.

EJEMPLO

VISTA PREVIA DEL EJEMPLO

LA HERENCIA• La herencia es un principio de programación bien establecido y PHP hace uso de él

en su modelado de objetos. Este principio afectará la manera en que muchas clases y objetos se relacionan unas con otras.

• Por ejemplo, cuando se extiende una clase, la subclase hereda todos los métodos públicos y protegidos de la clase padre. A menos que una clase sobrescriba esos métodos, mantendrán su funcionalidad original.

• Esto es útil para la definición y abstracción de la funcionalidad y permite la implementación de funcionalidad adicional en objetos similares sin la necesidad de reimplementar toda la funcionalidad compartida.

• <?php

class foo{    public function printItem($string)    {        echo 'Foo: ' . $string . PHP_EOL;    }        public function printPHP()    {        echo 'PHP is great.' . PHP_EOL;    }}

class bar extends foo{    public function printItem($string)    {        echo 'Bar: ' . $string . PHP_EOL;    }}

$foo = new foo();$bar = new bar();$foo->printItem('baz'); // Salida: 'Foo: baz'$foo->printPHP();       // Salida: 'PHP is great' $bar->printItem('baz'); // Salida: 'Bar: baz'$bar->printPHP();       // Salida: 'PHP is great'

?>

EJEMPLO

VISTA PREVIA

EL POLIMORFISMO• El polimorfismo, junto con la encapsulacion y la herencia, forman parte de los

pilares basicos de la programacion orientada a objetos.

• El polimorfismo, como su nombre indica, sugiere multiples formas. En programacion cuando hablamos de polimorfismo nos referimos a la capacidad de acceder a multiples funciones a traves del mismo interfaz. Es decir que un mismo identificador, o funcion puede tener diferentes comportamientos en funcion del contexto en el que sea ejecutado.

• <?php• /*

• Empezaremos definiendo la jerarquia de clases

• */

• class classPoligono• {•   function calculo()•   {•   echo 'El area depende del tipo de poligono';

•   }

• }

• class classCuadrado extends classPoligono• {•   function calculo()•   {•   echo 'area de un cuadrado : a=l*l<br>';

•   }

• }

• class classRectangulo extends classPoligono• {•   function calculo()•   {

•   echo 'area de un rectangulo : a=b*h<br>';

•   }

• }

• class classTriangulo extends classPoligono• {•   function calculo()•   {•   echo 'area de un triangulo : a=(b*h)/2<br>';

•   }

• }• /* fin definicion de la jerarquia de clases */

• /*

• definicion de la funcion encargada de realizar las llamada

• polimorfica al metodo "calculo"

• A destacar que en la definicion de la funcion definimos el tipo

• parametro que pasamos por referencia, esto no es obligatorio

• en PHP, pero nos ayuda a entender el concepto y asi poder aplicarlo

• en otros lenguajes mas estrictos.

•  */

• function area(classPoligono $obj)• {•   $obj->calculo();

• }

• /*

• Creamos los objetos necesarios

• */

• $cuadrado = new Cuadrado;• $rectangulo = new Rectangulo;• $triangulo = new Triangulo;

• /*

• Ejecutamos la funcion encargada

• de realizar la llamada polimorfica

• */

• area($cuadrado);• area($rectangulo);• area($triangulo);• ?>

EJEMPLO

VISTA PREVIA

DIFERENCIA ENTRE PUBLIC, PRIVATE, PROTECTED

• Public

• Los elementos declarados como Public son accesibles tanto desde fuera como desde dentro de la clase.

EJEMPLO

VISTA PREVIA

• Private

• Los elementos declarados como Private son accesibles sólo desde la misma clase donde fueron definidos.

<?php class Vehiculo { private $marca; function __construct($marca) { $this->marca=$marca; } } $micoche = new Vehiculo("Toyota"); echo $micoche->marca; ?>Si ejecutamos el código obtendremos el siguiente error:Fatal error: Cannot access private property Vehiculo::$marcaEl atributo marca no es visible fuera de la clase en la que se definió.

EJEMPLOSi ejecutamos el código obtendremos el siguiente error:Fatal error: Cannot access private property Vehiculo::$marcaEl atributo marca no es visible fuera de la clase en la que se definió.

VISTA PREVIA

• Protected

• Los elementos declarados como Protected son accesibles desde la misma clase donde fueron definidos y en sus subclases.

EJEPLO

• Si ejecutamos el código obtendremos el siguiente error

• Fatal error: Cannot access protected property Coche

• Producido por la línea que contiene este código:

• echo $micoche->marca;

VISTA PREVIA

CLASE ABSTRACTA• Una clase abstracta es la que tiene métodos abstractos. Los métodos

abstractos son los que están declarados en una clase, pero no se ha definido en la clase el código de esos métodos.

• En ocasiones, en un sistema de herencia como el de la programación orientada a objetos (POO), tenemos entidades que declarar aunque no se puede dar su definición todavía, simplemente las deseamos definir por encima para empezar una jerarquía de clases.

• Para declarar clases y métodos abstractos se utiliza la siguiente sintaxis.

abstract class nombre_clase{

  //propiedades public x;   private y;

  //métodos

  public function __construct(){     �  }

  public abstract function nombre_metodo();

}

EJEMPLO

VISTA PREVIA

DEFINICIÓN DE INTERFAZ• Las interfaces de objetos permiten crear código con el cual especificamos qué

métodos deben ser implementados por una clase, sin tener que definir cómo estos métodos son manipulados.

• Las interfaces son definidas utilizando la palabra clave interface, de la misma forma que con clases estándar, pero sin métodos que tengan su contenido definido.

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