1. Programación Orientada a Objetos
Yan David Burbano Amariles
PROGRAMACIÓN ORIENTADA A OBJETO I
La programación Orientada a objetos (POO) es una forma especial de
programar, más cercana a como expresaríamos las cosas en la vida real que
otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en términos de objetos, propiedades,
métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar
una pequeña base que permita soltarnos un poco con este tipo de
programación.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva
de quien la programa, de manera que la forma de hacer las cosas puede ser
diferente según el programador. Aunque podamos hacer los programas de
formas distintas, no todas ellas son correctas, lo difícil no es programar
orientado a objetos sino programar bien. Programar bien es importante porque
así nos podemos aprovechar de todas las ventajas de la POO.
Cómo se piensa en objetos
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida
real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un
esquema de POO. Diríamos que el coche es el elemento principal que tiene
una serie de características, como podrían ser el color, el modelo o la marca.
Además tiene una serie de funcionalidades asociadas, como pueden ser
ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las
funcionalidades asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema
POO una fracción, es decir, esa estructura matemática que tiene un numerador
y un denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el
denominador. Luego podría tener varios métodos como simplificarse, sumarse
con otra fracción o número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa
de matemáticas harás uso de objetos fracción y en un programa que gestione
un taller de coches utilizarás objetos coche. Los programas Orientados a
objetos utilizan muchos objetos para realizar las acciones que se desean
realizar y ellos mismos también son objetos. Es decir, el taller de coches será
un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.
2. Programación Orientada a Objetos
Yan David Burbano Amariles
PROGRAMACIÓN ORIENTADA A OBJETOS EN PHP
Utilizamos una palabra reservada para crear la clase en mi código PHP.
Los nombres de las clases deben ser creados respetando las mismas
condiciones que la sintaxis de PHP exige.
No se debe iniciar el nombre con números, o contener caracteres extraños.
Si yo ejecuto mi archivo desde el Localhost, pues no mostrará nada aún.
Lo primero que haremos dentro mi clase es declarar una propiedad, ojo no es
una variable, es una propiedad. Recordemos que dentro de mi clase existirán
propiedades y métodos.
3. Programación Orientada a Objetos
Yan David Burbano Amariles
Las propiedades son las características o atributos que conforman un objeto
que está siendo definido dentro mi clase en PHP.
En las propiedades tenemos la posibilidad de definirlas Privadas o Públicas.
Más adelante hablaremos de qué ventajas tiene que sea definida o pública o
privada, por ahora para comenzar en este ejemplo la definiremos pública.
Recordemos que no es una variable aunque en la sintaxis se vea igual, deja de
ser una variable al ser definida dentro de mi clase.
Si ejecutamos nuestro archivo PHP no pasa nada aún.
A continuación definiremos un método.
4. Programación Orientada a Objetos
Yan David Burbano Amariles
Hasta ahora resumiendo, definimos una clase, la cual tiene un atributo y un
método pero aún mi archivo php no funciona porque no lo estamos utilizando,
solo lo declaramos.
Los métodos son para declarar acciones.
Vamos a declarar una acción dentro de mi método llamado acción() y lo único
que hará será imprimir una cadena “Hola Mundo”
Si nuevamente trato de ejecutar mi código php en Localhost pues no pasará
nada por una razón, a pesar de haber definido el método, las propiedades y la
acción en concreto no me muestra nada porque no lo he invocado, es decir, no
he llamado al método para que se ejecute por ninguna parte del código.
Para poder utilizar mi método y mi propiedad debo declarar ya por fin el objeto.
5. Programación Orientada a Objetos
Yan David Burbano Amariles
Para definir mi objeto lo hacemos por fuera de las llaves que conforman la
clase. Coloco en mi ejemplo un objeto llamado $a. y luego, respetando la
sintaxis de PHP, defino new y seguido a esto el nombre de mi Clase definida
previamente, esto se hace para que mi objeto pueda utilizar los métodos y
propiedades de dicha clase.
Si ejecuto mi código en el navegador aún no sucede nada.
Vamos a llamar el método ahora sí.
6. Programación Orientada a Objetos
Yan David Burbano Amariles
Si vamos a nuestro navegador ahora sí nos muestra un mensaje porque
evidentemente ya utilizamos el método en mi objeto llamado $a.
Podemos crear los objetos que consideremos necesarios y que utilicen mi
clase creada previamente.
Crearemos una variable llamada $b.
7. Programación Orientada a Objetos
Yan David Burbano Amariles
Podemos tener cuantos objetos necesitemos en nuestro archivo PHP. Como no
tengo más métodos entonces utilizaremos el mismo que está creado, en mi
archivo PHP del navegador deben aparecer dos “Hola Mundo!!”.
Ahora vamos a utilizar o manipular la propiedad de mi clase.
Para utilizar mi propiedad primero llamo el objeto y luego lo conecto por medio
del -> a mi propiedad.
8. Programación Orientada a Objetos
Yan David Burbano Amariles
Como le di echo, el imprimirá mi propiedad en pantalla.
Ahora si hablemos de las palabras reservadas public, private o protected que
se utilizan a la hora de definir propiedades.
Public, private o protected son el alcance que tendrán nuestras propiedades
dentro de mi aplicación.
Es importante conocer las ventajas o desventajas que tendrán nuestras
propiedades dependiendo del alcance que yo defina.
Si la defino public estoy básicamente diciendo que cualquier parte de mi
programación puede acceder a esta propiedad y manipularla y cambiarla si así
lo quisiera.
Si la defino protected estoy diciendo que mi propiedad solo puede ser
manipulada o accedida desde MI PROPIA CLASE, nadie más la podrá
acceder. Bueno solo la propia clase o las clases hijas de esta clase, este es un
concepto que en programación se llama Herencia que veremos posteriormente.
Si la defino private estoy diciendo que esta propiedad solo la puede utilizar Mi
CLASE.
Hagamos un ejemplo.
Si el objeto $a en la propiedad nombre1 le doy un echo:
9. Programación Orientada a Objetos
Yan David Burbano Amariles
Me imprime.
Si intento cambiar o reasignar un valor a la propiedad $nombre1 al ser público
sucederá esto.
10. Programación Orientada a Objetos
Yan David Burbano Amariles
Y en mi navegador
En mi código reasigne el valor de mi propiedad $nombre1, cuando se había
definido tenia el valor de “David” pero luego le reasigne un valor.
Al ser $nombre1 una propiedad pública mi clase puede manipularla o desde
afuera mi objeto la puede manipular como se mostró en el ejemplo.
Ahora haremos el ejemplo con la propiedad $nombre2 que es una propiedad
protegida. Primero la imprimiremos.
11. Programación Orientada a Objetos
Yan David Burbano Amariles
Al ejecutar este código me muestra lo siguiente en mi navegador.
El error nos dice que esta propiedad es inaccesible porque es protegida. Lo
mismo sucedería si definimos una propiedad privada, ya que protegida o
privada no se pueden manipular desde afuera como ocurre con public.
Un ejemplo real puede ser que definamos el atributo para el nombre del usuario
dentro de mi aplicación, no se podría por seguridad definirlo public, porque en
teoría no podemos dejar que cualquiera o desde cualquier parte nos modifique
el nombre de usuario.