miércoles, 11 de junio de 2008

Fundamentos de la Programación Orientada a Objetos

Hola, en este articulo explicare los fundamentos de la programación orientada a objetos. mas adelante seguire profundizando este tema.

Comenzamos,

Agenda

Introducción a la Programación Orientada por Objetos
Conceptos básicos
Abstracción
Herencia
Relaciones entre clases
Polimorfismo

Introducción a la Programación Orientada por Objetos

En la siguiente imagen vemos la evolución de los lenguajes de programación orientados a objetos, esto no es nuevo, sin embargop es hoy en día que este concepto o tecnología esta acaparando los desarrollos de software debido a la gran aceptacion, implementacion y popularidad que ha tenido Java en este ambito.


Conceptos básicos
  • OO provee objetos como el principal medio para abstraer y estructurar un sistema.
  • Un objeto puede modelar entidades del mundo real,puede capturar abstracciones de fenómenos complejos, puede representar artefactos de software (pilas, gráficos,...).

El contexto del problema se ve como
objetos que interactúan entre ellos


Ejemplo: Enviar Flores
  • Suponga que Juan desea llevarle flores a una amiga en otra ciudad, María.
  • Como Juan no puede llevarlas personalmente, le encarga a su florista preferida (Rosa) el envío.
  • María recibe sus flores

A continuación descomponemos el problema en la secuencia de los pasos para cumplir con el requerimiento.
  • Juan le solicita a Rosa un servicio
  • Rosa sabe cómo prestarle el servicio a Juan
  • Juan sabe que Rosa presta el servicio que el necesita
  • Rosa es responsable de prestarle el servicio adecuadamente a Juan
  • Juan desconoce qué le implica a Rosa prestarle el servicio

La imagen siguiente seria un diagrama conceptual, solamente para no entrar en mas detalle con los casos de uso, ya que ese tema lo hemos visto en otros articulos, y este trata de fundamentos de OO.


  • En programación orientada a objetos un programa es una comunidad de agentes (objetos) que interactuan entre ellos.
  • Cada objeto tiene un rol en la solución del problema
  • Cada objeto provee un conjunto de servicios (o métodos)
  • Los servicios de un objeto son usados por otros objetos.

La forma en que los objetos se comunican entre ellos es a través de mensajes:

  • Un mensaje encapsula la petición de un servicio
  • El receptor del mensaje presta el servicio y
  • Devuelve una respuesta al que solicitó el servicio

Donde: cambiarTamaño es un mensaje.

Modelar consiste en identificar (abstraer) qué objetos hay en el mundo del problema, cómo son, cómo se comportan y cómo se relacionan.


Objeto

Es una abstracción de un elemento del Contexto del Problema, tambien es una instancia de una clase.

Ejemplos:
  • Estudiante
  • Fecha
  • Automóvil
  • Libro
  • Vuelo
El comportamiento de los objetos puede ser descrito por una caracterización abstracta de su interfaz.

Por ejemplo:


  • La caracterización del comportamiento es suficiente para diseñar el sistema.
  • El comportamiento real del objeto puede ser implementado y refinado más tarde de acuerdo con las necesidades.
  • Un objeto empaqueta datos (una representación concreta) y procedimientos que operan sobre los datos.

La imagen anterior representa una clase, en ella podemos identificar: nombre de la clase (Libro), Datos/Atributos/Campos, y Métodos/Servicios/Interfaz

  • El envío de mensajes es la única forma para que un objeto realice una operación.
  • Las operaciones son la única forma para cambiar el estado de los datos.
  • Cuando esto se cumple, se dice que el estado interno del objeto (el valor de sus datos) está encapsulado; éste no puede ser manipulado directamente desde el exterior y su representación concreta es invisible.

Abstracción:

Mecanismo de la mente humana fundamental para la comprensión de fenómenos o situaciones que involucren una gran cantidad de detalles.
  • En biología los seres vivos se clasifican en especies, géneros, clases, etc...

Abstracción y encapsulamiento:

La abstracción se centra en el comportamiento observable de un objeto, el encapsulamiento se centra en la implementación que da lugar a ese comportamiento.


Clase

Describe un conjunto de objetos del Contexto del problema, que tienen las mismas características y el mismo comportamiento



La noción de Clase viene de clasificación: agrupar (en un conjunto) objetos (elementos) que se comportan de la misma manera (con respecto a la interfaz que describe el comportamiento).


Agregación/Composición

  • Permite abstraer relaciones de tipo ...tiene... y ... está compuesto de...



Asociaciones
  • Permite abstraer relaciones entre objetos diferentes a la composición



Herencia
  • Los objetos se organizan en jerarquías

La herencia permite modelar relaciones del tipo ...es... y clasificaciones:
  • Un mamífero es un vertebrado



Polimorfismo

Es la posibilidad de definir de forma distinta un método,dependiendo del objeto.







  • El polimorfismo es posible gracias a la herencia:



Resumen Principios
  • Todo es un objeto
  • Los objetos realizan operaciones (computan) solicitando serviciosentre ellos a través del paso de mensajes
  • Todo objeto tiene su propia memoria, la cual consiste de otros objetos
  • Todo objeto es una instancia de una clase. Una clase agrupa objetos similares.
  • En la clase se describe el comportamiento de los objetos.
  • Las clases están organizadas en una jerarquía con una única raíz, llamada la jerarquía de herencia.


Bueno, hemos aprendido un poco más de los fundamentos de la orientación a objetos, agradecere comentarios constructivos.

Saludos y Suerte !!

2 comentarios:

Anónimo dijo...

that doesn't happen everyday. wish you all the best.

Anónimo dijo...

i'm also into those things. care to give some advice?