TIC-92

39
GUÍA DE PHP OOP INTEGRANTES: RIVEROLL VARGAS RICARDO HERNANDEZ VILLA AXEL AARON GRUPO: TIC-92 9° CUATRIMESTRE

description

Integrantes: - Hernandez Villa Axel Aaron - Riveroll Vargas Ricardo

Transcript of TIC-92

Page 1: TIC-92

GUÍA DE PHP OOPINTEGRANTES:

• RIVEROLL VARGAS RICARDO• HERNANDEZ VILLA AXEL AARON

GRUPO: TIC-929° CUATRIMESTRE

Page 2: TIC-92

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.

Page 3: TIC-92

• 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(); ?>

Page 4: TIC-92

VISTA PREVIA DEL EJEMPLO

Page 5: TIC-92

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.

Page 6: TIC-92

EJEMPLO

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

Page 7: TIC-92

VISTA PREVIA DEL EJEMPLO

Page 8: TIC-92

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:

Page 9: TIC-92

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

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

Page 10: TIC-92

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.

Page 11: TIC-92

EJEMPLO

Page 12: TIC-92

VISTA PREVIA DEL EJEMPLO

Page 13: TIC-92

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.

Page 14: TIC-92

EJEMPLO

Page 15: TIC-92

VISTA PREVIA DEL EJEMPLO

Page 16: TIC-92

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.

Page 17: TIC-92

• <?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'

?>

Page 18: TIC-92

EJEMPLO

Page 19: TIC-92

VISTA PREVIA

Page 20: TIC-92

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.

Page 21: TIC-92

• <?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);• ?>

Page 22: TIC-92

EJEMPLO

Page 23: TIC-92

VISTA PREVIA

Page 24: TIC-92

DIFERENCIA ENTRE PUBLIC, PRIVATE, PROTECTED

• Public

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

Page 25: TIC-92

EJEMPLO

Page 26: TIC-92

VISTA PREVIA

Page 27: TIC-92

• Private

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

Page 28: TIC-92

<?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ó.

Page 29: TIC-92

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ó.

Page 30: TIC-92

VISTA PREVIA

Page 31: TIC-92

• Protected

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

Page 32: TIC-92

EJEPLO

Page 33: TIC-92

• 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;

Page 34: TIC-92

VISTA PREVIA

Page 35: TIC-92

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.

Page 36: TIC-92

• 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();

}

Page 37: TIC-92

EJEMPLO

Page 38: TIC-92

VISTA PREVIA

Page 39: TIC-92

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.