php orientado a objetos, ronald nina
DESCRIPTION
PHP orientado a objetos IntroducciónTRANSCRIPT
![Page 1: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/1.jpg)
PHP orientado
a objetos
Ronald Nina Layme
Capacitador
![Page 2: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/2.jpg)
La cosa mas difícil para aprender (y
enseñar dicho sea de paso) en PHP
orientado a objetos es... lo básico. Pero
una vez que obtengas el conocimiento,
el resto vendrá mucho, mucho mas fácil.
![Page 3: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/3.jpg)
La Programación Orientada a Objetos
(POO) es un tipo de programación
agregada a PHP 5 que hace de la
construcción compleja, modular y
reusable de aplicaciones web mucho
mas fácil
![Page 4: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/4.jpg)
Con el lanzamiento de PHP 5, los
programadores en PHP finalmente tienen
el poder de programar.
Finalmente tiene una completa
infraestructura POO
![Page 5: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/5.jpg)
La diferencia entre construir una aplicación
al estilo antiguo (por procedimiento) versus
la manera POO.
Cuales son los principios básicos de la POO y
como se usan en PHP.
Cuando debes usar POO en tus scripts PHP.
![Page 6: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/6.jpg)
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 7: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/7.jpg)
La programación orientada a objetos se
basa en la programación de clases; a
diferencia de la programación
estructurada, que está centrada en las
funciones.
![Page 8: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/8.jpg)
Una clase es un molde del que luego se
pueden crear múltiples objetos, con
similares características.
Un poco más abajo se define una clase
Persona y luego se crean dos objetos de
dicha clase.
![Page 9: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/9.jpg)
Una clase es una plantilla (molde), que
define atributos (lo que conocemos
como variables) y métodos (lo que
conocemos como funciones).
![Page 10: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/10.jpg)
La clase define los atributos y métodos
comunes a los objetos de ese tipo, pero
luego, cada objeto tendrá sus propios
valores y compartirán las mismas
funciones.
![Page 11: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/11.jpg)
Debemos crear una clase antes de poder
crear objetos (instancias) de esa clase.
Al crear un objeto de una clase, se dice
que se crea una instancia de la clase o
un objeto propiamente dicho.
![Page 12: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/12.jpg)
La sintaxis básica para declarar una clase
es:
![Page 13: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/13.jpg)
![Page 14: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/14.jpg)
Los atributos normalmente son privados
(private)
![Page 15: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/15.jpg)
![Page 16: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/16.jpg)
Esto es una de las ventajas
fundamentales de la Programación
Orientada a Objetos (POO), es decir
reutilización de código (gracias a que
está encapsulada en clases) es muy
sencilla.
![Page 17: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/17.jpg)
![Page 18: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/18.jpg)
Los atributos son las características, cualidades,
propiedades distintivas de cada clase.
eterminan la apariencia, estado y demás
particularidades de la clase.
Varios objetos de una misma clase tendrán los
mismos atributos pero con valores diferentes.
![Page 19: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/19.jpg)
Cuando creamos un objeto de una clase
determinada, los atributos declarados por
la clase son localizadas en memoria y
pueden ser modificados mediante los
métodos.
![Page 20: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/20.jpg)
Lo más conveniente es que los atributos
sean privados para que solo los métodos
de la clase puedan modificarlos.
![Page 21: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/21.jpg)
Implementar una clase que muestre una lista de
hipervínculos en forma horizontal (básicamente
un menú de opciones)
Podemos definir dos vectores paralelos que
almacenen las direcciones y los títulos
respectivamente.
Definiremos dos métodos: cargarOpcion y
mostrar.
![Page 22: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/22.jpg)
![Page 23: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/23.jpg)
![Page 24: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/24.jpg)
Los métodos son como las funciones en
los lenguajes estructurados, pero están
definidos dentro de una clase y operan
sobre los atributos de dicha clase.
![Page 25: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/25.jpg)
El objetivo de un método es ejecutar las
actividades que tiene encomendada la
clase a la cual pertenece.
Los atributos de un objeto se modifican
mediante llamadas a sus métodos.
![Page 26: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/26.jpg)
![Page 27: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/27.jpg)
![Page 28: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/28.jpg)
El constructor es un método especial de
una clase. El objetivo fundamental del
constructor es inicializar los atributos del
objeto que creamos.
![Page 29: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/29.jpg)
Básicamente el constructor remplaza al
método inicializar que habíamos hecho
en el concepto anterior.
![Page 30: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/30.jpg)
El constructor se ejecuta inmediatamente luego
de crear un objeto y no puede ser llamado
nuevamente.
Un constructor no puede retornar dato.
Un constructor puede recibir parámetros que se
utilizan normalmente para inicializar atributos.
El constructor es un método opcional, de todos
modos es muy común definirlo.
![Page 31: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/31.jpg)
![Page 32: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/32.jpg)
![Page 33: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/33.jpg)
![Page 34: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/34.jpg)
![Page 35: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/35.jpg)
![Page 36: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/36.jpg)
Un método privado (private) solo puede
ser llamado desde otro método de la
clase. No podemos llamar a un método
privados desde donde definimos un
objeto.
![Page 37: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/37.jpg)
![Page 38: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/38.jpg)
![Page 39: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/39.jpg)
![Page 40: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/40.jpg)
![Page 41: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/41.jpg)
![Page 42: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/42.jpg)
![Page 43: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/43.jpg)
![Page 44: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/44.jpg)
![Page 45: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/45.jpg)
La herencia significa que se pueden
crear nuevas clases partiendo de clases
existentes, que tendrá todas los atributos
y los métodos de su 'superclase' o 'clase
padre' y además se le podrán añadir
otros atributos y métodos propios.
![Page 46: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/46.jpg)
Clase de la que desciende o deriva una
clase. Las clases hijas (descendientes)
heredan (incorporan) automáticamente
los atributos y métodos de la la clase
padre.
![Page 47: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/47.jpg)
Clase desciendiente de otra. Hereda
automáticamente los atributos y métodos
de su superclase. Es una especialización
de otra clase. Admiten la definición de
nuevos atributos y métodos para
aumentar la especialización de la clase.
![Page 48: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/48.jpg)
Imaginemos la clase Vehículo. Qué clases
podrían derivar de ella?
![Page 49: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/49.jpg)
![Page 50: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/50.jpg)
![Page 51: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/51.jpg)
![Page 52: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/52.jpg)
![Page 53: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/53.jpg)
Habíamos dicho que otro objetivo de la POO
es el encapsulamiento (es decir ocultar todo
aquello que no le interese a otros objetos),
para lograr esto debemos definir los atributos
y métodos como privados. El inconveniente
es cuando debemos utilizar herencia.
![Page 54: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/54.jpg)
Una subclase no puede acceder a los
atributos y métodos privados de la clase
padre. Para poder accederlos deberíamos
definirlos como públicos (pero esto trae como
contrapartida que perdemos el
encapsulamiento de la clase)
![Page 55: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/55.jpg)
Aquí es donde entra en juego el
modificador protected. Un atributo o
método protected puede ser accedido
por la clase, por todas sus subclases pero
no por los objetos que difinimos de dichas
clases.
![Page 56: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/56.jpg)
Lo más conveniente es sobreescribir
métodos para completar el algoritmo del
método de la clase padre. No es bueno
sobreescribir un método y cambiar
completamente su comportamiento.
![Page 57: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/57.jpg)
El objetivo principal es liberar recursos que solicitó
el objeto (conexión a la base de datos, creación
de imágenes dinámicas etc.)
Es el último método que se ejecuta de la clase.
Se ejecuta en forma automática, es decir no
tenemos que llamarlo.
Debe llamarse __destruct.
No retorna datos.
![Page 58: Php orientado a objetos, Ronald Nina](https://reader035.vdocuments.net/reader035/viewer/2022062706/557ad72bd8b42a8f648b46b2/html5/thumbnails/58.jpg)