Guía de poo en php maria lorena tic91

Page 1

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


CLASES o Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos) de los futuros objetos. o Cada 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).


EJEMPLO ATRIBUTOS DE UNA CLASE

EJECUCIÓN DEL EJEMPLO CÓDIGO EJEMPLO


EJEMPLO METODOS DE UNA CLASE

EJECUCIÓN DEL EJEMPLO CÓDIGO EJEMPLO


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.


EJEMPLO

EJECUCIÓN DE EJEMPLO CÓDIGO EJEMPLO


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


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


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.


EJEMPLO

CÓDIGO EJEMPLO

EJECUCIÓN DE EJEMPLO


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.


EJEMPLO

EJECUCIÓN DE EJEMPLO CÓDIGO EJEMPLO


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.


MODIFICADORES DE ACCESO ◦ Private: Cuando un método o atributo (variable) es declarada como private, su uso queda restringido al interior de la misma clase, no siendo visible para el resto. Una clase 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 los elementos(variables, métodos y clases) en clases que se encuentren en el mismo paquete(posteriormente explicaremos los paquetes). ◦ Protected: Un método o atributo definido como protected es visible para las clases que se encuentren en el mismo paquete y para cualquier subclase de esta aunque este 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 o clase con modificador public será visible desde cualquier clase, aunque estén en paquetes distintos.


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


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


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.

$this->valor1=$v; }

public function cargar2($v)

◦ }

◦ <html>

{

◦ <head>

◦ <title>Pruebas</title>

}

◦ $suma->valor1=10;

◦ </head>

public function imprimirResultado()

◦ $suma->cargar2(10);

◦ <body>

{

◦ $suma->operar();

◦ <?php

◦ class Operacion {

$this->valor2=$v;

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

}

◦ $suma=new Suma();

◦ echo 'El resultado de la suma de 10+10 es:'; ◦ $suma->imprimirResultado();

◦ }

protected $valor1;

protected $valor2;

protected $resultado;

◦ class Suma extends Operacion{

public function cargar1($v)

public function operar()

{

{

CÓDIGO EJEMPLO

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

◦ ?> ◦ </body> ◦ </html>


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.


EJEMPLO ◦

<html>

}

}

<head>

public function imprimirResultado()

$suma=new Suma();

<title>Pruebas</title>

{

$suma->cargar1(10);

</head>

$suma->cargar2(10);

<body>

$suma->operar();

<?php

}

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

abstract class Operacion {

class Suma extends Operacion{

$suma->imprimirResultado();

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

protected $valor1;

public function operar()

$resta=new Resta();

protected $valor2;

{

$resta->cargar1(10);

protected $resultado;

$resta->cargar2(5);

public function cargar1($v)

$resta->operar();

{

}

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

class Resta extends Operacion{

$resta->imprimirResultado();

$this->valor1=$v;

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

}

public function operar()

?>

public function cargar2($v)

{

</body>

{

</html>

$this->valor2=$v;

CÓDIGO EJEMPLO

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


EJEMPLO

EJECUCIÓN DE EJEMPLO


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.


EJEMPLO ◦ <?php

◦ interface Poligono

◦ }

◦ {

◦ class classTriangulo implements Poligono

function calculo();

}

◦ {

◦ }

function calculo()

◦ class classCuadrado implements Poligono

{

◦ {

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

function calculo()

{

◦ }function area(Poligono $obj)

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

◦ {obj->calculo();

}

◦ }

◦ }

◦ $cuadrado = new Cuadrado;

◦ class classRectangulo implements Poligono

◦ $rectangulo = new Rectangulo;

◦ {

◦ $triangulo = new Triangulo;

function calculo()

◦ area($cuadrado);

{

◦ area($rectangulo);

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

◦ area($triangulo);

CÓDIGO EJEMPLO


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.