Está en la página 1de 8

Introducción a la POO

" 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

© 2003 Juan J. Martínez <jjm@usebox.net>


Se permite la copia textual y distribución de este documento en su totalidad, por cualquier medio, siempre y cuando se mantenga
esta nota de copyright..
1

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.

Programación Imperativa Programación Orientada a Objetos


OBJETO: Coche OBJETO: Coche
ACCIÓN: Reparar ACCIÓN: Reparar

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.

Los principales beneficios de la POO son:

• 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.

Los servicios que proporcionan se conocen como métodos.

Dependiendo de los mecanismos que proporcione el lenguaje Orientado a Objetos, tenemos:

Por objeto:

• Una parte privada:


−variables de instancia

• Una parte pública:


−métodos

Por clase:

• Solo parte privada: variables de clase


3

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

El mensaje es la acción que realiza un objeto sobre otro, la petición de servicio.


El método es la respuesta al mensaje, la forma proporcionar el servicio.

Método

Objeto Mensaje Objeto

Existe una clasificación de los métodos según su objetivo:

" Constructores " Selectores


" Destructores " Modificadores
" Iteradores " Consultivos
4

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

Es un mecanismo para relacionar clases en base a su similitud.

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.

La herencia aporta una serie de beneficios: Y unos inconvenientes:

" Reusabilidad " Mayor tamaño de los programas


" Compartir Código " Sobrecarga debido al paso de mensajes
" Polimorfismo " Menor velocidad de ejecución (cada vez menos)
" Prototipado rápido " Aumento de la complejidad de los programas
" Gestión de la información
5

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

Se puede emplear la capacidad de herencia de un Lenguaje OO para:


" Especialización: uso directo de la relación Es Un. " Especificación: interfaz común, abstracción incompleta.
" Generalización: amplia el comportamiento. " Limitación: especialización de la especificación.
" Variación: implementaciones similares. " Extensión: añade capacidades nuevas.
" Construcción: cambios en el interfaz. " Combinación: herencia múltiple.

Cuando se hereda una clase de otra se puede:

" Añadir nuevos métodos.


" Modificar métodos heredados.
6

Paso de mensajes
Los servicios que proporcionan los objetos son accesibles mediante el paso de mensajes empleando métodos de los
objetos.

Un método NO es una función.

Algunas diferencias generales:

" 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

También podría gustarte