En twitter...

  • 077-20120208 | Flickr - Photo Sharing! http://t.co/gtSwabwW #366PhotoChallengeCR #365 #photo
    3 horas 36 mins ago
Pinterest Partner: Yes, They’re Making Money from Pins http://t.co/9B95vKkO3 horas 43 mins ago
Cloud Technology Lets Doctors View Internal Organs on an iPad [VIDEO] http://t.co/VyzkvHDI5 horas 47 mins ago
Amasia: el supercontinente que fusionará América y Asia http://t.co/SZj0oZmC8 horas 45 mins ago
@alonsohidalgo75 ok, nos vemos a las 3 1/2 — 9 horas 7 mins ago
Responsive Design Tricks: Fluid Typography With CSS 3 http://t.co/76kYioma9 horas 44 mins ago
Is Pinterest Pocketing Revenue by Tracking User-Generated Pins? http://t.co/YwKkyB7s9 horas 46 mins ago
077-20120208 - posterous http://t.co/x8e0sg3z #366PhotoChallengeCR #365 #photo — 10 horas 10 mins ago
Happy Cog redesigns site 'live' http://t.co/q2T168U210 horas 40 mins ago
Google+ cambia la forma de buscar http://t.co/YARuXlbh10 horas 42 mins ago
Rusia confirma que ha alcanzado el agua más pura y antigua del mundo http://t.co/xd5GXqaL10 horas 43 mins ago

¿Es php un lenguaje orientado a objetos? (Parte 2) - ¿Qué es la OOP?

¿Qué es la OOP (Programación Orientada a Objetos)?

En el artículo anterior, comentaba que la línea entre un lenguaje orientado a objetos y uno que tiene algún tipo de soporte para la programación a objetos puede ser confusa.
Para llegar al detalle de la pregunta que da pie a esta serie de publicaciones, tenemos que profundizar en el concepto de la Orientación a Objetos. 
La orientación a objetos (OOP), no es un tema nuevo, el lenguaje Simula67, así como Smalltalk (que influenció al lenguaje Java) se basan en este paradigma. 
 
De manera general, podemos decir que un lenguaje orientado a objetos, por lo menos, tiene soporte a objetos. El soporte de objetos implica que el lenguaje está basado en objetos, basado en clases y/o la herencia de clases. Por lo que el objeto, es el ente fundamental de este paradigma.

 

 
 

¿Qué es un objeto?

Un Objeto es algo con lo que se puede interactuar y se le pueden enviar mensajes, a los cuales el objeto reacciona. Esta reacción puede provocar cambios en su estado. Cada objeto tiene una identidad única que lo hace diferenciable de los demás objetos. A la vez, un objeto representa un concepto del sistema al que pertenece.
 
 
Según Grady Booch, en su libro “Object-Oriented Analysis and Design with Applications” los objetos poseen estado, identidad y comportamiento. Quiero tocar brevemente estos tres puntos.

Estado

Es como una fotografía de los datos (atributos) del objeto en un momento específico. 

Comportamiento

Es la forma en cómo reacciona o actúa el objeto ante los mensajes que recibe y ante los cambios en su estado.

Identidad

Lo que identifica a un objeto de forma única en el sistema (independiente de sus estados).
 
 
Por otra parte, no podríamos profundizar en el concepto de la orientación a objetos, sin tocar tres elementos vitales de un objeto: los mensajes, las interfaces y las clases.

Mensaje

Es la comunicación enviada a un objeto para ejecutar alguno de sus métodos. El mensaje incluye parámetros para que el método pueda ejecutarse.

Interface

Define qué mensajes son aceptados por el objeto. Hay interfaces públicas o privadas, e incluso intermedias. Por ejemplo, una interfaz pública indica que el objeto acepta mensajes sin importar de dónde vienen. 

Clase

Es la definición de las propiedades o atributos y el comportamiento de un tipo de objeto (esto permite la instanciación, que es el poder crear un objeto de esta clase). Cada objeto pertenece a una clase (o a varias), y dicha clase determina la interfaz.
 

 

Características más importantes de la OOP

Ya conociendo mejor el concepto de objeto, podríamos esbozar algunos de los conceptos más relevantes en la OOP:

Abstracción

Es la capacidad de que los objetos puedan efectuar su rol, informar, cambiar su estado, y "comunicarse" con otros objetos, sin necesidad de revelar detalles de su implementación.

Encapsulamiento

El encapsulamiento permite reunir los elementos pertenecientes a una misma entidad (mayor cohesión). 

Ocultación

Los objetos pueden interactuar entre ellos siguiendo las pautas definidas (expuestas) en sus interfaces. Pero, la información de cada objeto no es accesible directamente, si no que únicamente a través de sus propios métodos y únicamente si el objeto que solicita dicha información esté autorizado a obtenerla.

Polimorfismo

Es la posibilidad de crear métodos con el mismo nombre en clases diferentes y con comportamientos diferentes. Las referencias y colecciones de objetos pueden contener objetos de diferentes clases, pero la invocación de un método producirá el comportamiento correcto para la clase adecuada del objeto sobre el que se está actuando. Dicho de otra manera: es la posibilidad de enviar un mismo mensaje a objetos de clases distintas. Aunque los objetos reciban el mismo mensaje, van a responder de manera distinta.

Herencia

Los objetos pueden heredar sus propiedades y métodos a todas las clases que se desprendan de su clase. Esto facilita el polimorfismo y el encapsulamiento. Por lo que pueden compartir (y extender) sus métodos sin necesidad de volver a especificarlo y/o implementarlo. 

Garbage Collector

Es la destrucción automática (limpieza de memoria) de los objetos desreferenciados. 

 

Otro elementos de la OOP

Herencia

Capacidad de heredar atributos, y métodos, de una clase a otra. También existe el concepto de herencia múltiple.

Método

Funcionalmente hablando, son los procedimientos o algoritmos asociados a una clase y a sus instancias. Dicha funcionalidad es invocada para ser ejecutada cuando el objeto recibe un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto es capaz de hacer. Los métodos son "heredables" a sus descendientes.

Evento

Existen eventos de sistema, y de objetos. Los eventos son sucesos que se dan en cierto momento, desencadenando una reacción en otros objetos.

Propiedad (atributo)

Variables de un tipo de datos asociados a un objeto, visible desde fuera del objeto.

Atributo interno

Variable declarada como privada. No visible directamente desde fuera del objeto. Sólo puede ser modificada o leída mediante un método del objeto. 

Componentes de un objeto

Son los atributos, la identidad, las relaciones y los métodos de un objeto.

Representación de un objeto

Representación (tabla o entidad) de un objeto, donde se detallan sus atributos y funciones correspondientes.

 
Pues, bien, ya tenemos los elementos necesarios, aunque de forma muy general, para adentrarnos en el mundo de PHP6, e ir respondiendo la pregunta que da pie a esta serie de artículos: ¿Es php un lenguaje orientado a objetos? 
El en próximo artículo empezaré a analizar algunas características del lenguaje PHP, espero que continúen conmigo!
 

Individual Member Large

 

Suscripción

Ingresa tu dirección de correo:

Proporcionado por FeedBurner