Guía de poo en php maria lorena tic91

22
GUÍA DE POO EN PHP María Guadalupe García Muñoz Lorena Zúñiga Reyes TIC-91

description

GUÍA DE PHP ORIENTADA A OBJETOS POR ALUMNAS DEL NOVENO CUATRIMESTRE GRUPO 91 DE LA CARRERA DE TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN DE LA UTVT.

Transcript of Guía de poo en php maria lorena tic91

Page 1: Guía de poo en php maria lorena tic91

GUÍA DE POO EN PHP

María Guadalupe García MuñozLorena Zúñiga Reyes

TIC-91

Page 2: Guía de poo en php maria lorena tic91

CLASES

o Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos)

de los futuros objetos.

oCada objeto es una representación abstracta de una entidad del mundo real o virtual

en términos de:

o Un conjunto de características esenciales (atributos).

o Un conjunto de operaciones o comportamientos que permiten la manipulación de

estos atributos (métodos).

Page 3: Guía de poo en php maria lorena tic91

EJEMPLO ATRIBUTOS DE UNA CLASE

CÓDIGO EJEMPLO

EJECUCIÓN DEL EJEMPLO

Page 4: Guía de poo en php maria lorena tic91

EJEMPLO METODOS DE UNA CLASE

CÓDIGO EJEMPLO

EJECUCIÓN DEL EJEMPLO

Page 5: Guía de poo en php maria lorena tic91

REFERENCIA THIS

◦ $this es la variable que hace referencia a la instancia actual del objeto. En todos los

lenguajes con orientación a objetos existe una variable, que hace referencia al objeto

con el que se está trabajando, en php esta es su variable.

Page 6: Guía de poo en php maria lorena tic91

EJEMPLO

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 7: Guía de poo en php maria lorena tic91

DIFERENTES FORMAS PARA EL PASO DE ARGUMENTOS A UN METODO◦ FORMA #1 this:

◦ los argumentos se pueden asignar directo desde el método principal,

◦ Primero se instancia el objeto por ejemplo

◦ Automovil new=obj marca();

◦ Después se le asigna el valor por medio del this

◦ Obj $this->marca=bmw;

◦ FORMA #2 usando los métodos de la clase:

◦ Los argumentos se pueden asignar a los atributos de la clase por medio de un método.

◦ Primero se instancia el objeto por ejemplo

◦ Persona new=obj Persona();

◦ Después se le asigna el valor por medio del this

◦ Obj $this->asignanombre(Emanuel);

Page 8: Guía de poo en php maria lorena tic91

DEVOLER UN VALOR DESDE UN MÉTODO◦ <?php

◦ class person {

◦ var $name;

◦ //esta function regresa el valor de

◦ function muestra_name() {

◦ echo “$this->name”;

◦ }

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 9: Guía de poo en php maria lorena tic91

CONSTRUCTOR

◦ En programación orientada a objetos (POO), un constructor es una subrutina cuya

misión es inicializar un objeto de una clase. En el constructor se asignan los valores

iniciales del nuevo objeto.

◦ Se utiliza para crear tablas de clases virtuales y poder así desarrollar el polimorfismo,

una de las herramientas de la programación orientada a objetos. Al utilizar un

constructor, el compilador determina cual de los objetos va a responder al mensaje

(virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.

Page 10: Guía de poo en php maria lorena tic91

EJEMPLO

CÓDIGO EJEMPLO EJECUCIÓN DE EJEMPLO

Page 11: Guía de poo en php maria lorena tic91

HERENCIA

◦ La herencia es un mecanismo que permite la definición de una clase a partir de la

definición de otra ya existente. La herencia permite compartir automáticamente

métodos y datos entre clases, subclases y objetos.

◦ La herencia está fuertemente ligada a la reutilización del código en la OOP. Esto es, el

código de cualquiera de las clases puede ser utilizado sin más que crear una clase

derivada de ella, o bien una subclase.

◦ Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple. La primera indica que

se pueden definir nuevas clases solamente a partir de una clase inicial mientras que la

segunda indica que se pueden definir nuevas clases a partir de dos o más clases

iniciales.

Page 12: Guía de poo en php maria lorena tic91

EJEMPLO

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 13: Guía de poo en php maria lorena tic91

POLIMORFISMO

◦ Permite referirme a objetos de clases diferentes mediante el mismo elemento

◦ de programa y realizar la misma operación de diferentes formas, según sea el objeto

al que se hace referencia en ese momento.

Page 14: Guía de poo en php maria lorena tic91

MODIFICADORES DE ACCESO

◦ Private: Cuando un método o atributo (variable) es declarada como private, su usoqueda restringido al interior de la misma clase, no siendo visible para el resto. Unaclase no puede ser Private, sólo atributos y métodos.

◦ (default): Si no se le asigna ningún modificador al elemento (variable, método y clase)Java asigna uno denominado "por defecto" el cual permite la visibilidad de loselementos(variables, métodos y clases) en clases que se encuentren en el mismopaquete(posteriormente explicaremos los paquetes).

◦ Protected: Un método o atributo definido como protected es visible para las clasesque se encuentren en el mismo paquete y para cualquier subclase de esta aunqueeste en otro paquete. Este modificador es utilizado normalmente para Herencias, asíque lo estudiaremos más a fondo cuando lleguemos a las Herencias.

◦ Public: El modificador public ofrece la máxima visibilidad, una variable, método oclase con modificador public será visible desde cualquier clase, aunque estén enpaquetes distintos.

Page 15: Guía de poo en php maria lorena tic91

Public

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

◦ Ejemplo

◦ <?php

◦ class Vehiculo

◦ {

◦ public $marca;

◦ function __construct($marca)

◦ {

◦ $this->marca=$marca;

◦ }

◦ }

◦ $micoche = new Vehiculo("Toyota");

◦ echo $micoche->marca;

◦ ?>

◦ El atributo marca es público y por lo tanto es visible desde fuera de la clase.

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 16: Guía de poo en php maria lorena tic91

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;

◦ ?>

◦ Nota:El atributo marca no es visible fuera de la clase en la que se definió.

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 17: Guía de poo en php maria lorena tic91

PROTECTED

◦ Indica que los elementos sólo pueden ser accedidos desde su mismo paquete y desde cualquier clase que extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no.

◦ <html>

◦ <head>

◦ <title>Pruebas</title>

◦ </head>

◦ <body>

◦ <?php

◦ class Operacion {

◦ protected $valor1;

◦ protected $valor2;

◦ protected $resultado;

◦ public function cargar1($v)

◦ {

◦ $this->valor1=$v;

◦ }

◦ public function cargar2($v)

◦ {

◦ $this->valor2=$v;

◦ }

◦ public function imprimirResultado()

◦ {

◦ echo $this->resultado.'<br>';

◦ }

◦ }

◦ class Suma extends Operacion{

◦ public function operar()

◦ {

◦ $this->resultado=$this->valor1+$this->valor2;

◦ }

◦ }

◦ $suma=new Suma();

◦ $suma->valor1=10;

◦ $suma->cargar2(10);

◦ $suma->operar();

◦ echo 'El resultado de la suma de 10+10 es:';

◦ $suma->imprimirResultado();

◦ ?>

◦ </body>

◦ </html>

CÓDIGO EJEMPLO

Page 18: Guía de poo en php maria lorena tic91

CLASES ABSTRACTAS

◦ Este Tipo de Clases nos permiten crear “método generales”, que recrean un

comportamiento común, pero sin especificar cómo lo hacen. A nivel de código

tienen por particularidad que algunos de sus métodos no tienen “cuerpo de

declaración”, ¿qué quiere decir esto? no tienen las llaves { } ni código dentro de ellos

y deben estar precedidos por la palabra clave abstract. Si una clases contiene uno o

más métodos abstractos está clase debe ser abstracta. Estas clases como son

generalidades no pueden ser instanciadas por ningún objeto (se dice que su nivel de

abstracción es demasiado alto), entonces su único fin es ser heredado/extendido por

otras clases.

Page 19: Guía de poo en php maria lorena tic91

EJEMPLO◦ <html>

◦ <head>

◦ <title>Pruebas</title>

◦ </head>

◦ <body>

◦ <?php

◦ abstract class Operacion {

◦ protected $valor1;

◦ protected $valor2;

◦ protected $resultado;

◦ public function cargar1($v)

◦ {

◦ $this->valor1=$v;

◦ }

◦ public function cargar2($v)

◦ {

◦ $this->valor2=$v;

◦ }

◦ public function imprimirResultado()

◦ {

◦ echo $this->resultado.'<br>';

◦ }

◦ }

◦ class Suma extends Operacion{

◦ public function operar()

◦ {

◦ $this->resultado=$this->valor1+$this->valor2;

◦ }

◦ }

◦ class Resta extends Operacion{

◦ public function operar()

◦ {

◦ $this->resultado=$this->valor1-$this->valor2;

◦ }

◦ }

◦ $suma=new Suma();

◦ $suma->cargar1(10);

◦ $suma->cargar2(10);

◦ $suma->operar();

◦ echo 'El resultado de la suma de 10+10 es:';

◦ $suma->imprimirResultado();

◦ $resta=new Resta();

◦ $resta->cargar1(10);

◦ $resta->cargar2(5);

◦ $resta->operar();

◦ echo 'El resultado de la diferencia de 10-5 es:';

◦ $resta->imprimirResultado();

◦ ?>

◦ </body>

◦ </html>

CÓDIGO EJEMPLO

Page 20: Guía de poo en php maria lorena tic91

EJEMPLO

EJECUCIÓN DE EJEMPLO

Page 21: Guía de poo en php maria lorena tic91

INTERFACE

◦ Las interfaces, tal como las clases abstractas. no se pueden instanciar. Sus métodos deben ser re-escritos por la clase que implemente.

◦ Todos los metodos definidos en una interfaz, deben ser codificados en la clase que implementa dicha interfaz.

◦ La clase que implemente la interfaz debe utilizar exactamente las mismas estructuras de metodos que fueron definidos en la interfaz.

◦ Las interfaces se pueden extender al igual que las clases mediante el operador extends.

◦ Una clase puede implementar diferente interfaces.

◦ Una interfaz no se puede instanciar y todos sus metodos son publicos dada la propia naturaleza de la interfaz.

◦ Una interfaz no puede contener ni atributos, ni metodos implementados, solo declaraciones de metodos y constantes.

Page 22: Guía de poo en php maria lorena tic91

EJEMPLO◦ <?php

◦ interface Poligono

◦ {

◦ function calculo();

◦ }

◦ class classCuadrado implements Poligono

◦ {

◦ function calculo()

◦ {

◦ echo 'area de un cuadrado : a=l*l<br>';

◦ }

◦ }

◦ class classRectangulo implements Poligono

◦ {

◦ function calculo()

◦ {

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

◦ }

◦ }

◦ class classTriangulo implements Poligono

◦ {

◦ function calculo()

◦ {

◦ echo 'area de un triangulo : a=(b*h)/2<br>';

◦ }

◦ }function area(Poligono $obj)

◦ {obj->calculo();

◦ }

◦ $cuadrado = new Cuadrado;

◦ $rectangulo = new Rectangulo;

◦ $triangulo = new Triangulo;

◦ area($cuadrado);

◦ area($rectangulo);

◦ area($triangulo);

CÓDIGO EJEMPLO