EL PARADIGMA ORIENTADO A OBJETOS
Metodología de desarrollo de aplicaciones en la cual éstas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son miembros de jerarquías de clases unidas mediante relaciones de herencia. (Grady Booch)Cambia…
- El modo de organización del programa:
En clases (datos+operaciones sobre datos).
- El concepto de ejecución de programa
Paso de mensajes
No basta con utilizar un lenguaje OO para programar orientado a objetos.
Para eso hay que seguir un paradigma de programación OO.
¿POR QUE LA POO ES TAN POPULAR?
POO se ha convertido durante las pasadas dos décadas en el
paradigma de programación dominante, y en una herramienta
para resolver la llamada crisis del software
Motivos
- POO escala muy bien.
- POO proporciona un modelo de abstracción que razona con
- técnicas que la gente usa para resolver problemas (metáforas)
- “Es más fácil enseñar Smalltalk a niños que a programadores” (Kay 77)
- Gran desarrollo de herramientas OO (IDEs, librerías,…) en todos los
- dominios.
UN NUEVO MODO DE VER EL MUNDO
Ejemplo:
Supongamos que Luis quiere enviar flores a Alba, que vive en otra ciudad.
- Luis va a la floristería más cercana, regentada por un florista llamado Pedro.
- Luis le dice a Pedro qué tipo de flores enviar a Alba y la dirección de recepción
El mecanismo utilizado para resolver el problema es
- Encontrar un agente apropiado (Pedro)
- Enviarle un mensaje conteniendo la petición (envía flores a Alba).
- Es la responsabilidad de Pedro satisfacer esa petición.
- Para ello, es posible que Pedro disponga de algún método (algoritmo o conjunto deoperaciones) para realizar la tarea.
Luis no necesita (ni le interesa) conocer el método particular que Pedro utilizará para satisfacer
la petición: esa información está OCULTA.
Así, la solución del problema requiere de la cooperación de varios individuos
para su solución.
La definición de problemas en términos de responsabilidades incrementa el
nivel de abstracción y permite una mayor independencia entre objetos.
Mundo estructurado en:
- Agentes y comunidades
- Mensajes y métodos
- Responsabilidades
- Objetos y clases
- Jerarquías de clases
- Enlace de métodos
Agentes y comunidades
Un programa OO se estructura como una comunidad de agentes que
interaccionan (OBJETOS). Cada objeto juega un rol en la solución del
problema. Cada objeto proporciona un servicio o realiza una acción que
es posteriormente utilizada por otros miembros de la comunidad.
Mensajes y métodos
- A un objeto se le envían mensajes para que realice una determinadaacción.
- El objeto selecciona un método apropiado para realizar dicha acción.
- A este proceso se le denomina Paso de mensajes
- Sintaxis de un mensaje:
receptor.selector(argumentos)
unJuego.mostrarCarta(laCarta,42,47)
Mensajes y métodos
- Un mensaje se diferencia de un procedimiento/llamada a función en dosaspectos:
- En un mensaje siempre hay un receptor, lo cual no ocurre en una llamada aprocedimiento.
- La interpretación de un mismo mensaje puede variar en función delreceptor del mismo.
- Por tanto un nombre de procedimiento/función se identifica 1:1 con elcódigo a ejecutar, mientras que un mensaje no.
Un ejemplo:
JuegoDeCartas juego = new Poker … ó … new Mus … ó …
juego.repartirCartas(numeroDeJugadores)20
Responsabilidades
- El comportamiento de cada objeto se describe en términos de responsabilidades
- Mayor independencia entre los objetos
- Protocolo: Conjunto de responsabilidades de un objeto
- POO vs. programación imperativa
Objetos y clases
Un objeto es una encapsulación de un estado (valores de los datos)
y comportamiento (operaciones).
Los objetos se agrupan en categorías (clases).
- Un objeto es una instancia de una clase.
- El método invocado por un objeto en respuesta a unmensaje viene determinado por la clase del objetoreceptor.
Jerarquías de clases
- En la vida real, mucho conocimiento se organiza en términos dejerarquías. Este principio por el cual el conocimiento de una categoríamás general es aplicable a una categoría más específica se denominageneralización, y su implementación en POO se llama herencia.
- Pedro, por ser florista, es un dependiente (sabe vender y cobrar)
- Los dependientes normalmente son humanos (pueden hablar)
- Los humanos son mamíferos (Pedro respira oxígeno…)
- Las clases de objetos pueden ser organizadas en una estructurajerárquica de herencia. Una clase ‘hijo’ hereda propiedades de unaclase ‘padre’ más alta en la jerarquía (más general):
Enlace de métodos
Instante en el cual una llamada a un método es asociada al código que se
debe ejecutar
- Enlace estático: en tiempo de compilación
- Enlace dinámico: en tiempo de ejecución
Supongamos que en este ejemplo:
JuegoDeCartas juego = new Poker … ó … new Mus … ó …
juego.repartirCartas(numeroDeJugadores)
La asignación a la variable ‘juego’ depende de la interacción con el usuario
(tiempo de ejecución). El mensaje ‘repartirCartas’ deberá tener enlace
dinámico.
No hay comentarios:
Publicar un comentario