You are on page 1of 32

DESARROLLO DE APLICACIONES EN AQUITECTURAS ABIERTAS

TERCERA CLASE Rafael Reyna Camones Profesor del Curso

Introduccin a OO
Class nada extends vacio { abstract function blablabla(); }

Para que sirve?


Promueve la reutilizacin del cdigo. Promueve la extensibilidad, flexibilidad y la adaptabilidad. Beneficia el desarrollo en equipo. Hay disponibles muchos patrones para el diseo de objetos. Algunos patrones presentan mejoras o son mas ptimos para ciertos problemas.

La OOP es necesario para todo lo anterior?


Pero lo facilita, eso es cierto.

Caractersticas de la OOP
Encapsulacin. Herencia. Polimorfismo.

Caractersticas de la OOP
Encapsulacin. Agrupar funcionalidad (operaciones) y datos relacionados (atributos) juntos en una estructura coherente (clases) Las clases representan tipos de datos complejos y las operaciones que sobre estos actan. Un objeto es una particular instancia de una clase.

Caractersticas de la OOP
Encapsulacin. Agrupar funcionalidad (operaciones) y datos relacionados (atributos) juntos en una estructura coherente (clases) La idea es abstraer la realidad. Por ejemplo si presionas una tecla en tu laptop, realmente no sabes que esta sucediendo en el interior. Para ti es lo mismo cuando vas al cajero y presionas los dgitos de tu clave. Entonces se dice que la interface es la misma.

Objetos PHP: Versin 5


En php5 a nivel de programacin se tiene mas control sobre la visibilidad, interfaces , interceptores de los objetos. Por ejemplo si presionas una tecla en tu laptop, realmente no sabes que esta sucediendo en el interior. Para ti es lo mismo cuando vas al cajero y presionas los dgitos de tu clave. Entonces se dice que la interface es la misma.

Objetos PHP: Ocultacin de Datos


Una diferencia entre los objetos y los arreglos, es que los objetos permiten restringir la visibilidad de los datos que almacenan. Esto permite controlar que partes de la informacin pueden ser accedidas por otras clases.

Objetos PHP: Ocultacin de Datos


public : cualquier clase puede acceder protected: solo clases derivadas. private : solo la clase contenedora. final : no es posible de redefinirla en una clase derivada. abstract: debe ser implementada en las clases derivadas.

Objetos PHP: Herencia


Permite a una clase especializar(o extender) una clase padre al heredar todos los mtodos, propiedades y comportamiento. Esto promueve : Extensibilidad. Reusabilidad. Cdigo Robusto. Abstraccin.

El problema de la duplicacin
La duplicacin mantenibilidad. de cdigo contradice a la

El problema de la duplicacin
Se puede mejorar teniendo como resultado el siguiente cdigo:

El problema de la duplicacin
En un enfoque podras crear clases Animal Persona extiendan de clase base. OO las y que una

Herencia Encadenada
Algunos lenguajes de programacin permiten heredar de varias clases a la vez; esto es conocido como herencia mltiple. PHP5 no permite herencia mltiple, pero s herencia encadenada, es decir, permite heredar de varias clases padres correlativamente. Un ejemplo es:
Clase A Clase B Extiende A Clase C Extiende B

Herencia Encadenada

Polimorfismo
Es la capacidad que poseen diferentes objetos de responder a un mtodo o funcin del mismo nombre.

Polimorfismo
Tenemos un calendario(una coleccin) con entradas de dos tipos normal y feriado.

Polimorfismo
Con un enfoque orientado a objetos podra lucir as:

Beneficios: No se tiene que modificar el bucle para que pueda funcionar con nuevos tipos de das. Es mas rpido porque no se realiza el chequeo del tipo .

Mtodos Mgicos
En php tal vez en algn momento desees esto:

El metodo __toString() permite a una clase definir como se comportara cuando se le trata como una cadena.

Constructores
PHP5 permite a los desarrolladores declarar constructores para sus clases. Cada clase que posee un constructor llama a este mtodo al crearse cada nuevo objeto. El constructor de la clase padre no es llamado de forma implcita si las clases hijo definen su propio constructor. Para llamar al constructor de la clase padre :
parent::__construct()

Constructores
Por compatibilidad tambin se puede llamar al constructor con el estilo anterior(nombre de clase)

Destructores
PHP5 introduce el concepto de destructor que es similar a otros lenguajes orientados a objetos como C++, Java, etc. Este mtodo es llamada cuando no queda referencia alguna del objeto. En el mismo caso que los constructores, un mtodo destructor de una clase padre no puede ser llamado de forma implcita desde una clase hijo:
parent::__destruct()

Destructores

Visibilidad
La visibilidad de las propiedades o mtodos se define mediante las palabras reservadas:
public private protected

Los mtodos pblicos pueden ser accedidos desde cualquier otra clase. Los mtodos protegidos solo dentro de la clase y sus clases derivadas. Los mtodos privados solo dentro de la clase.

Visibilidad
La visibilidad de las propiedades o mtodos se define mediante las palabras reservadas:
public private protected

Los mtodos pblicos pueden ser accedidos desde cualquier otra clase. Los mtodos protegidos solo dentro de la clase y sus clases derivadas. Los mtodos privados solo dentro de la clase.

Visibilidad

Visibilidad

Visibilidad: Palabra clave Final


Php desde la versin 5.o introduce la palabra clave final, la que previene a las clases hijo de sobre escribir un mtodo. Si la clase se define como final no es posible extenderla.

Visibilidad: Palabra clave Final

Operador de Resolucin de mbito


El Operador de Resolucin de mbito (tambin denominado Paamayim Nekudotayim) o en trminos simples, el doble dos-puntos, es un token que permite acceder a elementos estticos, constantes, y sobrescribir propiedades o mtodos de una clase. Cuando se hace referencia a estos tems desde el exterior de la definicin de la clase, se utiliza el nombre de la clase.

Operador de Resolucin de mbito

You might also like