Documentos de Académico
Documentos de Profesional
Documentos de Cultura
" Objetivos
" Definiciones
" Clase
" Objeto
" Mensajes y métodos
" Características
" Abstracción
" Herencia
" Paso de mensajes
" Otras características
Este documento ofrece una pequeña base teórica sobre la Programación Orientada a Objetos.
Se pueden encontrar más materiales en:
http://www.usebox.net/jjm/docencia
Última modificación: 21 Abril 2003
Objetivos
La Programación Orientada a Objetos (POO) propone un nuevo paradigma de programación diferente al más extendido
de la programación imperativa.
Se basa en objetos y en sus relaciones, aplicando el concepto de responsabilidad. Es el propio objeto el que es
responsable de su funcionamiento.
El programador debe saber como reparar el Es el propio coche que sabe como debe
coche. repararse, solo hemos de pasarle el mensaje.
El paradigma Orientado a Objetos no solo se aplica a la programación, sino también al diseño y al análisis.
Reusabilidad: Los sistemas Orientados a Objetos permiten la reutilización de los objetos que los componen, haciendo
posible crear nuevos sistemas basados en sistemas existentes.
Extensibilidad: Los sistemas Orientados a Objetos pueden extenderse con facilidad, sin tener que tocar los módulos
existentes. Esta extensibilidad complementa a la reusabilidad.
2
Definición: Clase
Se trata de una descripción de un tipo de objeto en base a unos atributos y unos servicios.
Los atributos compartidos por todos los objetos pertenecientes a una clase se conocen como variables de clase, mientras
que los atributos propios de cada instancia (es decir, de cada objeto independiente perteneciente a esa clase) se conocen
como variables de instancia.
Por objeto:
Por clase:
Definiciones
Objeto
Un objeto es una entidad real o abstracta con un papel bien definido en el dominio del problema.
El objeto siempre pertenece a una clase (o clases) que define sus estados y comportamientos para con otros objetos.
Mensajes y métodos
Método
Características
Abstracción
La abstracción que proporciona la POO se basa en la posibilidad de encapsulación, que consiste en agrupar bajo la misma
entidad los datos y las funciones o métodos que trabajan con esos datos.
La agrupación de las funciones que manejan una serie de datos con los propios datos favorece la independencia de la
implementación.
Herencia
Se utiliza para construir clases nuevas a partir de otras clases ya existentes, de forma que las nuevas clases incorporan la
estructura y la funcionalidad de las clases de las que heredan. Cuando una clase hereda de otra se dice que es una
subclase, clase derivada o clase hija. La clase original se llama entonces superclase, clase base o clase padre.
Herencia
Hay dos clases de herencia según la relación entre las clases: la relación Es Un y la relación Tiene Un. En el siguiente
ejemplo una clase coche puede heredar de una clase vehículo o de una clase motor.
Vehículo Motor
Coche Coche
Herencia Es Un Herencia Tiene Un
Paso de mensajes
Los servicios que proporcionan los objetos son accesibles mediante el paso de mensajes empleando métodos de los
objetos.
" Una función tiene 0 o más argumentos, el método tiene SIEMPRE 1 o más. Ese argumento obligatorio es el objeto que
debe procesar el mensaje.
" Con el nombre de una función disponemos de una implementación, con un método tenemos la posibilidad de una
implementación por objeto (empleando el mismo nombre).
En la POO se definen dos tipos de interacciones con las clases (de objetos):
" El consumidor de clases: solo entiende de las operaciones que puede realizar con los objetos, no cómo se realizan.
" El proveedor de clases: se encarga de la implementación interna de la clase y, en caso de usar herencia, puede ser a su
vez consumidor de clases.
La ejecución de una aplicación en un lenguaje OO suele comenzar con la creación de un objeto, seguida en algunos casos
de la ejecución de un método. En la POO no existen, por lo general, subprogramas libres no ligados a un objeto. Algunos
lenguajes OO no soportan la creación de subprogramas libres, e incluso obligan a heredar las nuevas clases de una clase
base.
7
Otras características
Enlace dinámico
Se entiende como los mecanismos que permiten que el tipo de una variable o el código a ejecutar como respuesta a la
llamada a una función no se conocen hasta el momento de su ejecución.
Polimorfismo
Se entiende como una clase o método que puede tener distintas formas con el mismo nombre:
" Polimorfismo puro: Una función con argumentos de distinto tipo. Existe una única función con diferentes
interpretaciones de la misma en función de los argumentos que reciba.
" Sobrecarga: Varias funciones con el mismo nombre. Existen diferentes funciones con distintos argumentos e
implementaciones, pero el mismo nombre.
" Sustitución: Caso especial de sobrecarga cuando una clase define un método y al menos una subclase define un método
con el mismo nombre que los sustituye.
Características avanzadas
Son características que no todos los LOO soportan: concurrencia (hilos de ejecución), persistencia, genericidad,
recolector de basura, etc.
FIN