Sei sulla pagina 1di 31

Ingeniera de Sistemas e Informtica

Tema

Curso

Ciclo

Tutor

Alumnos :

LA PROGRAMACIN ORIENTADA A OBJETOS

VI

JOS LUIS DE LA PUENTE ROS

2015

DEDICATORIA

A todos aquellos que no se dan


por vencidos y luchan da a da
por lograr sus objetivos.

AGRADECIMIENTOS.

A Dios por darme la vida, a mis


padres por ensearme que el existo
es la suma de todos las derrotas y
los triunfos.

NDICE

DEDICATORIA...................................................................................................... 3
AGRADECIMIENTOS............................................................................................. 4
INTRODUCCIN................................................................................................... 6
Programacin Orientada a Objeto (POO)...................................................................8
Una Forma Nueva De Pensar.................................................................................. 8
Un Primer Ejemplo............................................................................................... 10
Qu es un objeto?.............................................................................................. 12
Qu es un mensaje?........................................................................................... 14
Qu es una clase?............................................................................................. 16
Relacin entre Clase y Objeto................................................................................ 17
La declaracin de una variable de una clase NO crea el objeto...................................18
Atributo............................................................................................................... 18
Mtodo............................................................................................................... 19
Caractersticas Generales..................................................................................... 19
Creacin de Objetos y Mtodos Constructores:........................................................20
Mtodo de Destructores de objetos:........................................................................20
Instancia:............................................................................................................ 20
Herencia............................................................................................................. 21
La herencia proporciona las siguientes ventajas:......................................................23
Fundamentos del Enfoque Orientado a Objeto.........................................................24
CONCLUSIONES................................................................................................ 28
FUENTES DE INFORMACIN............................................................................... 29

Jos Luis de la Puente Ros

INTRODUCCIN

Es importante aclarar desde un principio la diferencia que existe entre programacin


orientada a objetos y un lenguaje orientado a objetos.
La programacin orientada a objetos es una filosofa, un modelo de programacin, con
su teora y su metodologa, que conviene conocer y estudiar antes de nada. Un lenguaje
orientado a objetos es un lenguaje de programacin que permite el diseo de aplicaciones
orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar
aplicaciones orientadas a objetos aprenda primero la filosofa (o adquiera la forma de
pensar) y despus el lenguaje, porque filosofa slo hay una y lenguajes muchos. En
este documento veremos brevemente los conceptos bsicos de la programacin orientada
a objetos desde un punto de vista global, sin particularizar para ningn lenguaje de
programacin especfico.
Cuando se escribe un programa en un lenguaje orientado a objetos, definimos una
plantilla o clase que describe las caractersticas y el comportamiento de un conjunto de
objetos similares. La clase automvil describe las caractersticas comunes de todos los
automviles: sus atributos y su comportamiento. Los atributos o propiedades se refieren a
la marca o fabricante, el color, las dimensiones, si tienen dos, tres, cuatro o ms puertas,
la potencia, si utiliza como combustible la gasolina o gasoil, etc. El comportamiento se
refiere a la posibilidad de desplazarse por una carretera, frenar, acelerar, cambiar de
marcha, girar, etc.

Jos Luis de la Puente Ros

Luego, tenemos automviles concretos, por ejemplo el automvil propio de una


determinada marca, color, potencia, etc., el automvil del vecino de otra marca, de otro
color, etc., el automvil de un amigo, etc.
Una clase es por tanto una plantilla implementada en software que describe un conjunto
de objetos con atributos y comportamiento similares.
Una instancia u objeto de una clase es una representacin concreta y especfica de una
clase y que reside en la memoria del ordenador

Jos Luis de la Puente Ros

Programacin Orientada a Objeto (POO)


La programacin Orientada a Objetos es una metodologa que basa la estructura de los
programas en torno a los objetos.
Los lenguajes de POO ofrecen medios y herramientas para describir los objetos
manipulados por un programa. Ms que describir cada objeto individualmente, estos
lenguajes proveen una construccin (Clase) que describe a un conjunto de objetos que
poseen las mismas propiedades.

Una Forma Nueva De Pensar


Es muy importante destacar que cuando hacemos referencia a la programacin orientada a
objetos no estamos hablando de unas cuantas caractersticas nuevas aadidas a un
lenguaje de programacin. Estamos hablando de una nueva forma de pensar acerca del
proceso de descomposicin de problemas y de desarrollo de soluciones de
programacin.
La programacin orientada a objetos surge en la historia como un intento para dominar la
complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de
enfrentarse a esta complejidad ha sido empleando lo que llamamos programacin
estructurada, que consiste en descomponer el problema objeto de resolucin en sub
-problemas y ms sub-problemas hasta llegar a acciones muy simples y fciles de codificar.
Se trata de descomponer el problema en acciones, en verbos. En el ejemplo de un
programa que resuelva ecuaciones de segundo grado, descomponamos el problema en las
siguientes acciones: primero, pedir el valor de los coeficientes a, b y c; despus, calcular

Jos Luis de la Puente Ros

el valor del discriminante; y por ltimo, en funcin del signo del discriminante, calcular
ninguna, una o dos races.
Como podemos ver, descomponamos el problema en acciones, en verbos; por ejemplo el
verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular.
La programacin orientada a objetos es otra forma de descomponer problemas. Este
nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no en
lo que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos
a intentar simular ese escenario en nuestro programa.
Los lenguajes de programacin tradicionales no orientados a objetos, como C, Pascal,
BASIC, o Modula-2, basan su funcionamiento en el concepto de procedimiento o
funcin. Una funcin es simplemente un conjunto de instrucciones que operan sobre
unos argumentos y producen un resultado. De este modo, un programa no es ms que
una sucesin de llamadas a funciones, ya sean stas del sistema operativo,
proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario.
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el
elemento bsico no es la funcin, sino un ente denominado precisamente objeto. Un
objeto es la representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y operaciones que
pueden realizarse sobre los mismos.
La programacin orientada a objetos es una nueva forma de pensar, una manera distinta de
enfocar los problemas. Ah radica la dificultad de aprender un lenguaje totalmente
orientado a objetos, como es Java, sin conocer previamente los pilares de la
programacin orientada a objetos. Hecha esta importante aclaracin, conviene destacar
que Java, ms que un lenguaje orientado a objetos, es un lenguaje de objetos. Java
incorpora el uso de la orientacin a objetos como uno de los pilares bsicos y
fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a C+
+. C++ est pensado para su utilizacin como lenguaje orientado a objetos, pero tambin

Jos Luis de la Puente Ros

es cierto que con C++ se puede escribir cdigo sin haber odo nada de la programacin
orientada a objetos. Esta situacin no se da en Java, dotado desde las primeras etapas de
su diseo de esta filosofa, y donde no cabe obviar la orientacin a objetos para el
desarrollo de programas, por sencillos que stos sean. Al contrario que en C++, en Java
nada se puede hacer sin usar al menos un objeto.

Un Primer Ejemplo
Si nos detenemos a pensar sobre cmo se nos plantea un problema cualquiera en la
realidad podremos ver que lo que hay en la realidad son entidades (otros nombres que
podramos usar para describir lo que aqu llamo entidades son agentes u objetos).
Estas entidades poseen un conjunto de propiedades o atributos, y un conjunto de
mtodos mediante los cuales muestran su comportamiento. Y no slo eso, tambin
podremos descubrir, a poco que nos fijemos, todo un conjunto de interrelaciones entre las
entidades, guiadas por el intercambio de mensajes; las entidades del problema responden
a estos mensajes mediante la ejecucin de ciertas acciones. El siguiente ejemplo, aunque
pueda parecer un poco extrao, creo que aclarar algunos conceptos y nos servir como
introduccin para desarrollarlos con profundidad.
Imaginemos la siguiente situacin: un domingo por la tarde estoy en casa viendo la
televisin, y de repente mi madre siente un fuerte dolor de cabeza; como es natural, lo
primero que hago es tratar de encontrar una caja de aspirinas.
Lo que acabo de describir es una situacin que probablemente no resulte muy extraa a
muchos de nosotros. Vamos a verla en clave de objetos: el objeto hijo ha recibido un
mensaje procedente del objeto madre. El objeto hijo responde al mensaje o evento
ocurrido mediante una accin: buscar aspirinas. La madre no tiene que decirle al hijo
dnde debe buscar, es responsabilidad del hijo resolver el problema como considere ms
oportuno. Al objeto madre le basta con haber emitido un mensaje. Continuemos con la
historia.

Jos Luis de la Puente Ros

10

El hijo no encuentra aspirinas en el botiqun y decide acudir a la farmacia de guardia


ms cercana para comprar aspirinas. En la farmacia es atendido por una seorita que le
pregunta qu desea, a lo que el hijo responde: "una caja de aspirinas, por favor". La
farmacutica desaparece para regresar al poco tiempo con una caja de aspirinas en la
mano. El hijo paga el importe, se despide y vuelve a su casa. All le da un comprimido a su
madre, la cual al cabo de un rato comienza a experimentar una notable mejora hasta la
completa desaparicin del dolor de cabeza.
El hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta
conseguir una aspirina. Para ello entra en relacin con un nuevo objeto, la farmacutica,
quien responde al mensaje o evento de peticin del objeto hijo con la bsqueda de la
aspirina. El objeto farmacutica es ahora el responsable de la bsqueda de la aspirina. El
objeto farmacutica lanza un mensaje al objeto hijo solicitando el pago del importe, y el
objeto hijo responde a tal evento con la accin de pagar.
Como hemos podido ver, en esta situacin nos hemos encontrado con objetos que se
diferenciaban de los dems por un conjunto de caractersticas o propiedades, y por un
conjunto de acciones que realizaban en respuesta a unos eventos que se originaban en
otros objetos o en el entorno.
Tambin podemos darnos cuenta de que, aunque todos los objetos tienen propiedades
distintas, como el color del cabello, el grado de simpata o el peso, todos tienen un
conjunto de atributos en comn por ser ejemplos de una entidad superior llamada ser
humano. A este patrn de objetos (en nuestro caso ser humano) lo llamaremos clase.
Con este ejemplo espero que se entienda que los objetos son instancias o casos
concretos de las clases, que no son ms que plantillas que definen las variables y los
mtodos comunes a todos los objetos de un cierto tipo. La clase ser humano tendr,
entre sus muchas variables miembro o variables que la componen: color del cabello, color
de los ojos, estatura, peso, fecha de nacimiento, etc. A partir de una clase se podrn
generar todos los objetos que se deseen especificando valores particulares para cada una
de las variables definida por la clase. As, encontraremos el objeto farmacutica, cuyo

Jos Luis de la Puente Ros

11

color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y as
sucesivamente.
A continuacin veremos con ms detalle qu son los objetos, las clases, los mensajes y
otros conceptos bsicos de la programacin orientada a objetos.

Qu es un objeto?
Un objeto no es ms que un conjunto de variables (o datos) y mtodos (o funciones)
relacionados entre s. Los objetos en programacin se usan para modelar objetos o
entidades del mundo real (el objeto hijo, madre, o farmacutica, por ejemplo). Un objeto es,
por tanto, la representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y operaciones que
pueden realizarse sobre los mismos. La siguiente figura muestra una representacin visual
de un objeto.

Representacin visual de un objeto

Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) estn
expresados por las variables y los mtodos que componen el objeto respectivamente. Por
ejemplo, un objeto que modelase una bicicleta en el mundo real tendra variables que
indicaran el estado actual de la bicicleta: su velocidad es de 20 km/h, su cadencia de
pedaleo 90 r.p.m. y su marcha actual es la 5. Estas variables se conocen

Jos Luis de la Puente Ros

12

formalmente como variables instancia o variable miembro porque contienen el estado de


un objeto bicicleta particular y, en programacin orientada a objetos, un objeto
particular se denomina una instancia.
Adems de estas variables, el objeto bicicleta podra tener mtodos para frenar, cambiar la
cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendra que tener un mtodo
para cambiar su velocidad pues sta es funcin de la cadencia de pedaleo, la marcha en la
que est y de si los frenos estn siendo utilizados o no, entre otros muchos factores). Estos
mtodos se denominan formalmente mtodos instancia o mtodos miembro, ya que
cambian el estado de una instancia u objeto bicicleta particular. La siguiente figura
muestra una bicicleta modelada como un objeto:

El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro
del objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del
programa. Este hecho de empaquetar o proteger las variables miembro con los
mtodos miembro se denomina encapsulacin. Este dibujo conceptual que
muestra el ncleo de variables miembro del objeto protegido por una membrana
protectora de mtodos o funciones miembro es la representacin ideal de un
objeto y es el ideal que los programadores de objetos suelen buscar. Sin embargo,
debemos matizarlo. A menudo, por razones prcticas, es posible que un objeto
desee exponer alguna de sus variables miembro, o proteger otras de sus propios
mtodos o funciones miembro. Por ejemplo, Java permite establecer 4 niveles de

Jos Luis de la Puente Ros

13

proteccin de las variables y de la funcin miembro para casos como ste. Los
niveles de proteccin determinan qu objetos y clases pueden acceder a qu
variables o a qu mtodos.
De cualquier forma, el hecho de encapsular las variables y las funciones miembro
relacionadas proporciona dos importantes beneficios a los programadores de
aplicaciones:
Capacidad de crear mdulos: El cdigo fuente de un objeto puede
escribirse y mantenerse independiente del cdigo fuente del resto de los
objetos. De esta forma, un objeto puede pasarse fcilmente de una parte a
otra del programa. Podemos dejar nuestra bicicleta a un amigo, y sta
seguir funcionando.
Proteccin de informacin: Un objeto tendr una interfaz pblica
perfectamente definida que otros objetos podrn usar para comunicarse
con l. De esta forma, los objetos pueden mantener informacin privada y
pueden cambiar el modo de operar de sus funciones miembros sin que esto
afecte a otros objetos que usen estas funciones miembro. Es decir, no
necesitamos entender cmo funciona el mecanismo de cambio de marcha
para hacer uso de l.

Qu es un mensaje?
Normalmente un nico objeto por s solo no es muy til. En general, un objeto
aparece como un componente ms de un programa o una aplicacin que contiene
otros muchos objetos. Es precisamente haciendo uso de esta interaccin como los
programadores consiguen una funcionalidad de mayor orden y modelar
comportamientos mucho ms complejos. Una bicicleta (a partir de ahora
particularizaremos) colgada de un gancho en el garaje no es ms que una
estructura de aleacin de titanio y un poco de goma. Por s sola, tu bicicleta (por
poner una bicicleta en concreto) es incapaz de desarrollar ninguna actividad. Tu

Jos Luis de la Puente Ros

14

bicicleta es realmente til en tanto que otro objeto (t) interacta con ella
(pedalea).
Los objetos de un programa interactan y se comunican entre ellos por medio de
mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones
miembro (mtodos de B), el objeto A manda un mensaje al objeto

En ocasiones, el objeto que recibe el mensaje necesita ms informacin para saber


exactamente lo que tiene que hacer; por ejemplo, cuando se desea cambiar la marcha de
una bicicleta, se debe indicar la marcha a la que se quiere cambiar. Esta informacin se
pasa junto con el mensaje en forma de parmetro.
La siguiente figura muestra las tres partes que componen un mensaje:
1. El objeto al cual se manda el mensaje (TuBicicleta).
2. El mtodo o funcin miembro que debe ejecutar (CambiarDeMarcha).
3. Los parmetros que necesita ese mtodo (Marcha)

Jos Luis de la Puente Ros

15

Estas tres partes del mensaje (objeto destinatario, mtodo y parmetros) son suficiente
informacin para que el objeto que recibe el mensaje ejecute el mtodo o la funcin
miembro solicitada. Los mensajes proporcionan dos ventajas importantes:
El comportamiento de un objeto est completamente determinado (a
excepcin del acceso directo a variables miembro pblicas) por sus
mtodos, as que los mensajes representan todas las posibles interacciones
que pueden realizarse entre objetos.
Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir
en un mismo ordenador para mandarse mensajes entre ellos (y de esta
forma interactuar).

Qu es una clase?
Normalmente en el mundo real existen varios objetos de un mismo tipo, o como
diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las
muchas bicicletas que existen en el mundo. Usando la terminologa de la
programacin orientada a objetos, diremos que mi bicicleta es una instancia de la
clase de objetos conocida como bicicletas. Todas las bicicletas tienen algunos
estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos
mtodos (cambiar de marcha, frenar) en comn. Sin embargo, el estado particular
de cada bicicleta es independiente del estado de las dems bicicletas. La
particularizacin de estos atributos puede ser diferente. Es decir, una bicicleta
podr ser azul, y otra roja, pero ambas tienen en comn el hecho de tener una
variable color. De este modo podemos definir una plantilla de variables y
mtodos para todas las bicicletas. Las plantillas para crear objetos son
denominadas clases.
Una clase es una plantilla que define las variables y los mtodos que son
comunes para todos los objetos de un cierto tipo.

Jos Luis de la Puente Ros

16

En nuestro ejemplo, la clase bicicleta definira variables miembros comunes a


todas las bicicletas, como la marcha actual, la cadencia actual, etc. Esta clase
tambin debe declarar e implementar los mtodos o funciones miembro que
permiten al ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo,
como se muestra en la siguiente figura:

Definicin de la clase bicicleta


Despus de haber creado la clase bicicleta,
podemos crear cualquier nmero de objetos
bicicleta a partir de la clase. Cuando creamos
una instancia de una clase, el sistema reserva suficiente memoria para el objeto con
todas sus variables miembro. Cada instancia tiene su propia copia de las variables
miembro definidas en la clase.

Relacin entre Clase y Objeto


Algortmicamente, las clases son descripciones netamente estticas o plantillas que
describen objetos. Su rol es definir nuevos tipos conformados por atributos y operaciones.

Jos Luis de la Puente Ros

17

Por el contrario, los objetos son instancias particulares de una clase. Las clases son una
especie de molde de fbrica, en base al cual son construidos los objetos. Durante la
ejecucin de un programa slo existen los objetos, no las clases.

La declaracin de una variable de una clase NO crea el objeto.


La asociacin siguiente: <Nombre_Clase> <Nombre_Variable>; (por ejemplo, Rectngulo
R), no genera o no crea automticamente un objeto Rectngulo. Slo indica que R ser
una referencia o una variable de objeto de la clase Rectngulo.
La creacin de un objeto, debe ser indicada explcitamente por el programador, de forma
anloga a como inicializamos las variables con un valor dado, slo que para los objetos se
hace a travs de un mtodo Constructor (ver punto Mtodos).

Atributo
Son los datos o variables que caracterizan al objeto y cuyos valores en un momento dado
indican su estado.
Un atributo es una caracterstica de un objeto. Mediante los atributos se define
informacin oculta dentro de un objeto, la cual es manipulada solamente por los mtodos
definidos sobre dicho objeto Un atributo consta de un nombre y un valor. Cada atributo
est asociado a un tipo de dato, que puede ser simple (entero, real, lgico, carcter, string)
o estructurado (arreglo, registro, archivo, lista, etc.)
Su sintaxis algortmica es: <Modo de Acceso> <Tipo de dato> <Nombre del Atributo>;
Los modos de acceso son:
Pblico: Atributos (o Mtodos) que son accesibles fuera de la clase. Pueden ser
llamados por cualquier clase, aun si no est relacionada con ella. Este modo de
acceso tambin se puede representar con el smbolo +

Jos Luis de la Puente Ros

18

Privado: Atributos (o Mtodos) que slo son accesibles dentro de la


implementacin de la clase. Tambin se puede representar con el smbolo
Protegido: Atributos (o Mtodos) que son accesibles para la propia clase y sus
clases hijas (subclases). Tambin se puede representar con el smbolo #

Mtodo
Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los mtodos constituyen la secuencia de acciones que implementan las operaciones
sobre los objetos. La implementacin de los mtodos no es visible fuera de objeto.
La sintaxis algortmica de los mtodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de estas dos sintaxis:
<Modo de Acceso> Funcin <Nombre> [(Lista Parmetros)]: <Descripcin del Tipo de
datos>
Para acciones:
<Modo de Acceso> Accin <Nombre> [(Lista Parmetros)] donde los parmetros son
opcionales
Ejemplo: Un rectngulo es un objeto caracterizado por los atributos Largo y Ancho, y por
varios mtodos, entre otros Calcular su rea y Calcular su permetro.

Caractersticas Generales
Cada mtodo tiene un nombre, cero o ms parmetros (por valor o por referencia) que
recibe o devuelve y un algoritmo con el desarrollo del mismo.

Jos Luis de la Puente Ros

19

En particular se destaca el mtodo constructor, que no es ms que el mtodo que se


ejecuta cuando el objeto es creado.
Este constructor suele tener el mismo nombre de la clase/ objeto, pero aunque es una
prctica comn, el mtodo constructor no necesariamente tiene que llamarse igual a la
clase (al menos, no en pseudos-cdigo). Es un mtodo que recibe cero o ms
parmetros y lo usual es que inicialicen los valores de los atributos del objeto.
En lenguajes como Java y C++ se puede definir ms de un mtodo constructor, que
normalmente se diferencian entre s por la cantidad de parmetros que reciben.
Los mtodos se ejecutan o activan cuando el objeto recibe un mensaje, enviado por un
objeto o clase externo al que lo contiene, o por el mismo objeto de manera local.

Creacin de Objetos y Mtodos Constructores:


Cada objeto o instancia de una clase debe ser creada explcitamente a travs de un
mtodo u operacin especial denominado Constructor. Los atributos de un objeto toman
valores iniciales dados por el constructor. Por convencin el mtodo constructor tiene el
mismo nombre de la clase y no se le asocia un modo de acceso (es pblico).
Algunos lenguajes proveen un mtodo constructor por defecto para cada clase y/o
permiten la definicin de ms de un mtodo constructor.

Mtodo de Destructores de objetos:


Los objetos que ya no son utilizados en un programa, ocupan intilmente espacio de
memoria, que es conveniente recuperar en un momento dado. Segn el lenguaje de
programacin utilizado esta tarea es dada al programador o es tratada automticamente
por el procesador o soporte de ejecucin del lenguaje.

Jos Luis de la Puente Ros

20

En la notacin algortmica NO tomaremos en cuenta ese problema de administracin de


memoria, por lo tanto no definiremos formas para destruir objetos. En cambio al utilizar
lenguajes de programacin si debemos conocer los mtodos destructores
suministrados por el lenguaje y utilizarlos a fin de eliminar objetos una vez no sean tiles.

Instancia:
Se llama instancia a todo objeto que derive de algn otro. De esta forma, todos los
objetos son instancias de algn otro, menos la clase Object que es la madre de todas.
Clases: Descripcin de objeto. Consta de una serie de mtodos y datos que resumen
las caractersticas de este objeto. Definir clases permite trabajar con cdigo reutilizable.
Puesto que desde una clase se puede crear una instancia y as reutilizar el cdigo
escrito para este si tener que volver a escribir el cdigo para la instancia. La instancia
toma el patrn de la clase padre. Sin embargo, las variables son independientes.

Herencia
Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones
de introducir otra de las caractersticas bsicas de la programacin orientada a
objetos: el uso de la herencia.
El mecanismo de herencia permite definir nuevas clases partiendo de otras ya
existentes. Las clases que derivan de otras heredan automticamente todo su
comportamiento, pero adems pueden introducir caractersticas particulares propias que
las diferencian.
Como hemos visto, los objetos se definen a partir de clases. Con el mero hecho de
conocer a qu clase pertenece un objeto, ya se sabe bastante sobre l. Puede que no

Jos Luis de la Puente Ros

21

sepamos lo que es la Espada, pero si nos dicen que es una bicicleta, ya sabremos que
tiene dos ruedas, manillar, pedales.
La programacin orientada a objetos va ms all, permitindonos definir clases a partir de
otras clases ya construidas. Por ejemplo, las bicicletas de montaa, las de carretera y los
tndems son todos, en definitiva, bicicletas. En trminos de programacin orientada a
objetos, son subclases o clases derivadas de la clase bicicleta. Anlogamente, la clase
bicicleta es la clase base o superclase de las bicicletas de montaa, las de carretera y los
tndems. Esta relacin se muestra en la siguiente figura.

LA HERENCIA EN LA PROG. ORIENTADA A OBJETOS

Cada subclase hereda los estados (en forma de declaracin de variables) de la superclase de
la cual deriva. Las bicicletas de montaa, las de carretera y los tndems comparten

Jos Luis de la Puente Ros

22

algunos estados: cadencia, velocidad... Adems, cada subclase hereda los mtodos de su
superclase.
Las bicicletas de montaa, las de carretera y los tndems comparten algunos
comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo.
Sin embargo, las clases derivadas no se encuentran limitadas por los estados y
comportamientos que heredan de su superclase. Muy al contrario, estas
subclases pueden aadir variables y mtodos a aquellas que han heredado. Los
tndems tienen dos asientos y dos manillares; algunas bicicletas de montaa
tienen una catalina adicional con un conjunto de marchas con relaciones de
transmisin mucho ms cortas. Las clases derivadas pueden incluso sobrescribir
los mtodos heredados y proporcionar implementaciones ms especializadas para
esos mtodos. Por ejemplo, si nuestra bicicleta de montaa tuviera una catalina
extra, podramos sobrescribir el mtodo CambiarDeMarcha para poder usar esas
nuevas marchas.
Adems, no estamos limitados a un nico nivel de herencia. El rbol de herencias
o jerarqua de clases puede ser tan extenso como necesitemos. Los mtodos y las
variables miembro se heredarn hacia abajo a travs de todos los niveles de la
jerarqua. Normalmente, cuanto ms abajo est una clase en la jerarqua de
clases, ms especializado es su comportamiento. En nuestro ejemplo, podramos
hacer que la clase bicicleta derivase de una superclase de vehculos.
La herencia es una herramienta clave para abordar la resolucin de un problema
de forma organizada, pues permite definir una relacin jerrquica entre todos los
conceptos que se estn manejando. Es posible emplear esta tcnica para
descomponer un problema de cierta magnitud en un conjunto de problemas
subordinados a l. La resolucin del problema original se consigue cuando se han
resuelto cada uno de los problemas subordinados, que a su vez pueden contener
otros. Por consiguiente, la capacidad de descomponer un problema o concepto en

Jos Luis de la Puente Ros

23

un conjunto de objetos relacionados entre s cuyo comportamiento es fcilmente


identificable puede ser extraordinariamente til para el desarrollo de programas
informticos.

La herencia proporciona las siguientes ventajas:


Las clases derivadas o subclases proporcionan comportamientos especializados
a partir de los elementos comunes que hereda de la clase base. A travs del
mecanismo de herencia los programadores pueden reutilizar el cdigo de la
superclase tantas veces como sea necesario.
Los programadores pueden implementar las llamadas superclases abstractas,
que definen comportamientos genricos. Las clases abstractas definen e
implementan parcialmente comportamientos, pero gran parte de estos
comportamientos no se definen ni se implementan totalmente. De esta forma,
otros programadores pueden hacer uso de estas superclases detallando esos
comportamientos con subclases especializadas. El propsito de una clase
abstracta es servir de modelo base para la creacin de otras clases derivadas,
pero cuya implantacin depende de las caractersticas particulares de cada una
de ellas. Un ejemplo de clase abstracta podra ser en nuestro caso la clase
vehculos. Esta clase sera una clase base genrica, a partir de la cual
podramos ir creando todo tipo de clases derivadas.

Fundamentos del Enfoque Orientado a Objeto


El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la
base de todo desarrollo orientado a objetos.
Estos principios son: la Abstraccin, el Encapsulamiento, la Modularidad y la
Herencia.

Jos Luis de la Puente Ros

24

Otros elementos a destacar (aunque no fundamentales) en el EOO son:


Polimorfismo, Enlace dinmico (o binding),
Concurrencia y Persistencia.

Fundamento 1: Abstraccin
Es el principio de ignorar aquellos aspectos de un fenmeno observado que no son
relevantes, con el objetivo de concentrarse en aquellos que s lo son. Una
abstraccin denota las caractersticas esenciales de un objeto (datos y
operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto
correcto de abstracciones de un determinado dominio, es el problema central del
diseo orientado a objetos.
Los mecanismos de abstraccin son usados en el EOO para extraer y definir del
medio a modelar, sus caractersticas y su comportamiento. Dentro del EOO son
muy usados mecanismos de abstraccin: la Generalizacin, la Agregacin y la
clasificacin.
La generalizacin es el mecanismo de abstraccin mediante el cual un conjunto de
clases de objetos son agrupadas en una clase de nivel superior (Superclase),
donde las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y
las diferencias entre ellas son ignoradas. En consecuencia, a travs de la
generalizacin, la superclase almacena datos generales de las subclases, y las
subclases almacenan slo datos particulares. La especializacin es lo contrario de
la generalizacin. La clase Mdico es una especializacin de la clase Persona, y a
su vez, la clase Pediatra es una especializacin de la superclase Mdico.
La agregacin es el mecanismo de abstraccin por el cual una clase de objeto es
definida a partir de sus partes (otras clases de objetos). Mediante agregacin se
puede definir por ejemplo un computador, por descomponerse en: la CPU, la ULA,
la memoria y los dispositivos perifricos. El contrario de agregacin es la
descomposicin.

Jos Luis de la Puente Ros

25

La clasificacin consiste en la definicin de una clase a partir de un conjunto de


objetos que tienen un comportamiento similar. La ejemplificacin es lo contrario a
la clasificacin, y corresponde a la instanciacin de una clase, usando el ejemplo
de un objeto en particular.

Fundamento 2: Encapsulamiento (Ocultamiento de Informacin)


Es la propiedad del EOO que permite ocultar al mundo exterior la representacin
interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero los
datos esenciales del mismo no son conocidos fuera de l.
La idea central del encapsulamiento es esconder los detalles y mostrar lo
relevante. Permite el ocultamiento de la informacin separando el aspecto
correspondiente a la especificacin de la implementacin; de esta forma, distingue
el "qu hacer" del "cmo hacer". La especificacin es visible al usuario, mientras
que la implementacin se le oculta.
El encapsulamiento en un sistema orientado a objeto se representa en cada clase
u objeto, definiendo sus atributos y mtodos con los siguientes modos de acceso:
Pblico (+) Atributos o Mtodos que son accesibles fuera de la clase. Pueden ser
llamados por cualquier clase, aun si no est relacionada con ella.
Privado (-) Atributos o Mtodos que solo son accesibles dentro de la
implementacin de la clase.
Protegido (#): Atributos o Mtodos que son accesibles para la propia clase y sus
clases hijas (subclases).
Los atributos y los mtodos que son pblicos constituyen la interfaz de la clase, es
decir, lo que el mundo exterior conoce de la misma.

Jos Luis de la Puente Ros

26

Normalmente lo usual es que se oculten los atributos de la clase y solo sean


visibles los mtodos, incluyendo entonces algunos de consulta para ver los valores
de los atributos. El mtodo constructor (Nuevo, New) siempre es Pblico.

Fundamento 3: Modularidad
Es la propiedad que permite tener independencia entre las diferentes partes de un
sistema. La modularidad consiste en dividir un programa en mdulos o partes, que
pueden ser compilados separadamente, pero que tienen conexiones con otros
mdulos. En un mismo mdulo se suele colocar clases y objetos que guarden una
estrecha relacin. El sentido de modularidad est muy relacionado con el
ocultamiento de informacin.

Fundamento 4: Herencia
Es el proceso mediante el cual un objeto de una clase adquiere propiedades
definidas en otra clase que lo preceda en una jerarqua de clasificaciones. Permite
la definicin de un nuevo objeto a partir de otros, agregando las diferencias entre
ellos (Programacin Diferencial), evitando repeticin de cdigo y permitiendo la
reusabilidad.
Las clases heredan los datos y mtodos de la superclase. Un mtodo heredado
puede ser sustituido por uno propio si ambos tienen el mismo nombre.
La herencia puede ser simple (cada clase tiene slo una superclase) o mltiple
(cada clase puede tener asociada varias superclases). La clase Docente y la clase
Estudiante heredan las propiedades de la clase Persona (superclase, herencia
simple). La clase Preparador (subclase) hereda propiedades de la clase Docente y
de la clase Estudiante (herencia mltiple).

Fundamento 5: Polimorfismo

Jos Luis de la Puente Ros

27

Es una propiedad del EOO que permite que un mtodo tenga mltiples
implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la
ejecucin del mtodo.
El polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones
con igual nombre a diferentes clases o estn relacionados en trminos de
inclusin. En este tipo de polimorfismo, los mtodos son interpretados en el
contexto del objeto particular, ya que los mtodos con nombres comunes son
implementados de diferente manera dependiendo de cada clase

Jos Luis de la Puente Ros

28

CONCLUSIONES

En la Programacin Orientada a Objetos los programas son representados por un


conjunto de objetos que interactan. Un objeto engloba datos y operaciones sobre
estos datos.
La Programacin Orientada a Objetos constituye una buena opcin a la hora de
resolver un problema, sobre todo cuando ste es muy extenso. En este enfoque
de programacin, se facilita evitar la repeticin de cdigo, no slo a travs de la
creacin de clases que hereden propiedades y mtodos de otras, sino adems
que el cdigo es reutilizable por sistemas posteriores que tengan alguna similitud
con los ya creados.

Jos Luis de la Puente Ros

29

FUENTES DE INFORMACIN

http://downloads.gvsig.org/download/documents/learning/collaborations/ce_
1104_01/Programacion_personalizacion_SIG_1.pdf

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht
m

http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/WS5b3ccc
516d4fbf351e63e3d118a9b90204-7f35.html

http://downloads.gvsig.org/download/documents/learning/collaborations/ce_
1104_01/Programacion_personalizacion_SIG_1.pdf

http://www.upv.es/amiga/43.htm

http://www.ciberaula.com/articulo/tecnologia_orientada_objetos/

http://www.desarrolloweb.com/articulos/499.php

http://www.nebrija.es/~abustind/Informatica/MetodologiaII/Introduccion.pdf

http://candyluna.galeon.com/aficiones836769.html

http://elvex.ugr.es/decsai/builder/intro/5.html

Jos Luis de la Puente Ros

30

http://www.cc.uah.es/jlcastillo/POO/POO_06.htm

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht
m
http://frameworkphp.wordpress.com/2007/09/19/definicion-deprogramacion-orientada-a-objetos/

Jos Luis de la Puente Ros

31

Potrebbero piacerti anche