Ingeniería de Sistemas e Informática
Tema
:
C$rso
%
Cic&o
%
T$tor
%
A&$m A&$mno noss %
“LA PROGRAMACIÓN ORIENTAA A O!"ETOS#
'I
"OS( L)IS E LA P)ENTE R*OS
Ingeniería de Sistemas e Informática
Tema
:
C$rso
%
Cic&o
%
T$tor
%
A&$m A&$mno noss %
“LA PROGRAMACIÓN ORIENTAA A O!"ETOS#
'I
"OS( L)IS E LA P)ENTE R*OS
EICATORIA
A todos aquellos que no se dan por vencidos y luchan día a día por lograr sus objetivos.
AGRAECIMIENTOS+
A Dios por darme la vida, a mis padres por enseñarme que el existo es la suma de todos las derrotas y los triunfos.
*NICE
DD!"A#$%!A...................................................................................................... 3 A&%AD"!'!(#$).............................................................................................4 !(#%$D*""!+(................................................................................................... 6 rogramaci-n $rientada a $bjeto $$/...................................................................8 *na 0orma (ueva De ensar ..................................................................................8 *n rimer jemplo...............................................................................................10 12u3 es un objeto4..............................................................................................12 12u3 es un mensaje4...........................................................................................14 12u3 es una clase4.............................................................................................16 %elaci-n entre "lase y $bjeto................................................................................17 5a declaraci-n de una variable de una clase ($ crea el objeto. ..................................18 Atributo............................................................................................................... 18 '3todo............................................................................................................... 19 "aracterísticas &enerales.....................................................................................19 "reaci-n de $bjetos y '3todos "onstructores: ........................................................20 '3todo de Destructores de objetos: ........................................................................20 !nstancia:............................................................................................................ 20 6erencia............................................................................................................. 21 5a herencia proporciona las siguientes ventajas: ......................................................23 0undamentos del nfoque $rientado a $bjeto .........................................................24 "$("5*)!$()................................................................................................28 0*(#) D !(0$%'A"!+( ...............................................................................29
José Luis de la Puente Ríos
5
INTRO)CCIÓN
s importante aclarar desde un principio la diferencia que existe entre programaci-n orientada a objetos y un lenguaje orientado a objetos. 5a programaci-n orientada a objetos es una 7filosofía8, un modelo de programaci-n, con su teoría y su metodología, que conviene conocer y estudiar antes de nada. *n lenguaje orientado a objetos es un lenguaje de programaci-n que permite el diseño de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la 7filosofía8 o adquiera la forma de pensar/ y despu3s el lenguaje, porque 7filosofía8 s-lo hay una y lenguajes muchos. n este documento veremos brevemente los conceptos b9sicos de la programaci-n orientada a objetos desde un punto de vista global, sin particulariar para ning;n lenguaje de programaci-n específico. "uando se escribe un programa en un lenguaje orientado a objetos, definimos una plantilla o clase que describe las características y el comportamiento de un conjunto de objetos similares. 5a clase autom-vil describe las características comunes de todos los autom-viles: sus atributos y su comportamiento. 5os atributos o propiedades se refieren a la marca o fabricante, el color, las dimensiones, si tienen dos, tres, cuatro o m9s puertas, la potencia, si utilia como combustible la gasolina o gasoil, etc. l comportamiento se refiere a la posibilidad de desplaarse por una carretera, frenar, acelerar, cambiar de marcha, girar, etc.
José Luis de la Puente Ríos
6
5uego, tenemos autom-viles concretos, por ejemplo el autom-vil propio de una determinada marca, color, potencia, etc., el autom-vil del vecino de otra marca, de otro color, etc., el autom-vil de un amigo, etc. *na clase es por tanto una plantilla implementada en soft
José Luis de la Puente Ríos
7
Programaci,n Orientada a O-.eto /POO0 5a programaci-n $rientada a $bjetos es una metodología que basa la estructura de los programas en torno a los objetos. 5os lenguajes de $$ ofrecen medios y herramientas para describir los objetos manipulados por un programa. '9s que describir cada objeto individualmente, estos lenguajes proveen una construcci-n "lase/ que describe a un conjunto de objetos que poseen las mismas propiedades.
)na 1orma N$e2a e Pensar s muy importante destacar que cuando hacemos referencia a la programaci-n orientada a objetos no estamos hablando de unas cuantas características nuevas añadidas a un lenguaje de programaci-n. stamos hablando de una nueva forma de pensar acerca del proceso de descomposici-n de problemas y de desarrollo de soluciones de programaci-n. 5a programaci-n orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el soft despu3s, calcular
José Luis de la Puente Ríos
8
el valor del discriminante> y por ;ltimo, en funci-n del signo del discriminante, calcular ninguna, una o dos raíces. "omo podemos ver, descomponíamos el problema en acciones, en verbos> por ejemplo el verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular. 5a programaci-n orientada a objetos es otra forma de descomponer problemas. ste nuevo m3todo de descomposici-n es la descomposici-n en objetos> vamos a fijarnos no en lo que hay que hacer en el problema, sino en cu9l es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa. 5os lenguajes de programaci-n tradicionales no orientados a objetos, como ", ascal, ?A)!", o 'odula=@, basan su funcionamiento en el concepto de procedimiento o funci-n. *na funci-n es simplemente un conjunto de instrucciones que operan sobre unos argumentos y producen un resultado. De este modo, un programa no es m9s que una sucesi-n de llamadas a funciones, ya sean 3stas del sistema operativo, proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario. n el caso de los lenguajes orientados a objetos, como es el caso de " y Bava, el elemento b9sico no es la funci-n, sino un ente denominado precisamente objeto. *n objeto es la representaci-n en un programa de un concepto, y contiene toda la informaci-n necesaria para abstraerlo: datos que describen sus atributos y operaciones que pueden realiarse sobre los mismos. 5a programaci-n 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 Bava, sin conocer previamente los pilares de la programaci-n orientada a objetos. 6echa esta importante aclaraci-n, conviene destacar que Bava, m9s que un lenguaje orientado a objetos, es un lenguaje de objetos. Bava incorpora el uso de la orientaci-n a objetos como uno de los pilares b9sicos y fundamentales del lenguaje. sto constituye una importante diferencia con respecto a " . " est9 pensado para su utiliaci-n como lenguaje orientado a objetos, pero tambi3n José Luis de la Puente Ríos
9
es cierto que con " se puede escribir c-digo sin haber oído nada de la programaci-n orientada a objetos. sta situaci-n no se da en Bava, dotado desde las primeras etapas de su diseño de esta filosofía, y donde no cabe obviar la orientaci-n a objetos para el desarrollo de programas, por sencillos que 3stos sean. Al contrario que en ", en Bava nada se puede hacer sin usar al menos un objeto.
)n Primer E.em3&o )i nos detenemos a pensar sobre c-mo se nos plantea un problema cualquiera en la realidad podremos ver que lo que hay en la realidad son entidades otros nombres que podríamos usar para describir lo que aquí llamo entidades son 7agentes8 u 7objetos8/. stas entidades poseen un conjunto de propiedades o atributos, y un conjunto de m3todos mediante los cuales muestran su comportamiento. C no s-lo eso, tambi3n 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 ejecuci-n de ciertas acciones. l siguiente ejemplo, aunque pueda parecer un poco extraño, creo que aclarar9 algunos conceptos y nos servir9 como introducci-n para desarrollarlos con profundidad. !maginemos la siguiente situaci-n: un domingo por la tarde estoy en casa viendo la televisi-n, y de repente mi madre siente un fuerte dolor de cabea> como es natural, lo primero que hago es tratar de encontrar una caja de aspirinas. 5o que acabo de describir es una situaci-n que probablemente no resulte muy extraña a muchos de nosotros. amos a verla en clave de objetos: el objeto hijo ha recibido un mensaje procedente del objeto madre. l objeto hijo responde al mensaje o evento ocurrido mediante una acci-n: buscar aspirinas. 5a madre no tiene que decirle al hijo d-nde debe buscar, es responsabilidad del hijo resolver el problema como considere m9s oportuno. Al objeto madre le basta con haber emitido un mensaje. "ontinuemos con la historia.
José Luis de la Puente Ríos
10
l hijo no encuentra aspirinas en el botiquín y decide acudir a la farmacia de guardia m9s cercana para comprar aspirinas. n la farmacia es atendido por una señorita que le pregunta qu3 desea, a lo que el hijo responde: Euna caja de aspirinas, por favorE. 5a farmac3utica desaparece para regresar al poco tiempo con una caja de aspirinas en la mano. l 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 comiena a experimentar una notable mejoría hasta la completa desaparici-n del dolor de cabea. l hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta conseguir una aspirina. ara ello entra en relaci-n con un nuevo objeto, la farmac3utica, quien responde al mensaje o evento de petici-n del objeto hijo con la b;squeda de la aspirina. l objeto farmac3utica es ahora el responsable de la b;squeda de la aspirina. l objeto farmac3utica lana un mensaje al objeto hijo solicitando el pago del importe, y el objeto hijo responde a tal evento con la acci-n de pagar. "omo hemos podido ver, en esta situaci-n nos hemos encontrado con objetos que se diferenciaban de los dem9s por un conjunto de características o propiedades, y por un conjunto de acciones que realiaban en respuesta a unos eventos que se originaban en otros objetos o en el entorno. #ambi3n podemos darnos cuenta de que, aunque todos los objetos tienen propiedades distintas, como el color del cabello, el grado de simpatía o el peso, todos tienen un conjunto de atributos en com;n por ser ejemplos de una entidad superior llamada 7ser humano8. A este patr-n de objetos en nuestro caso 7ser humano8/ lo llamaremos clase. "on este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las clases, que no son m9s que plantillas que definen las variables y los m3todos comunes a todos los objetos de un cierto tipo. 5a clase 7ser humano8 tendr9, 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 podr9n generar todos los objetos que se deseen especificando valores particulares para cada una de las variables definida por la clase. Así, encontraremos el objeto farmac3utica, cuyo José Luis de la Puente Ríos
11
color de cabello es rubio, color de ojos aul, estatura FGH cm., peso HI Jg., y así sucesivamente. A continuaci-n veremos con m9s detalle qu3 son los objetos, las clases, los mensajes y otros conceptos b9sicos de la programaci-n orientada a objetos.
45$6 es $n o-.eto7 *n objeto no es m9s que un conjunto de variables o datos/ y m3todos o funciones/ relacionados entre sí. 5os objetos en programaci-n se usan para modelar objetos o entidades del mundo real el objeto hijo, madre, o farmac3utica, por ejemplo/. *n objeto es, por tanto, la representaci-n en un programa de un concepto, y contiene toda la informaci-n necesaria para abstraerlo: datos que describen sus atributos y operaciones que pueden realiarse sobre los mismos. 5a siguiente figura muestra una representaci-n visual de un objeto.
%epresentaci-n visual de un objeto
5os atributos del objeto estado/ y lo que el objeto puede hacer comportamiento/ est9n expresados por las variables y los m3todos que componen el objeto respectivamente. or ejemplo, un objeto que modelase una bicicleta en el mundo real tendría variables que indicarían el estado actual de la bicicleta: su velocidad es de @I KmLh, su cadencia de pedaleo MI r.p.m. y su marcha actual es la HN. stas variables se conocen
José Luis de la Puente Ríos
12
formalmente como variables instancia o variable miembro porque contienen el estado de un objeto bicicleta particular y, en programaci-n orientada a objetos, un objeto particular se denomina una instancia. Adem9s de estas variables, el objeto bicicleta podría tener m3todos para frenar, cambiar la cadencia de pedaleo, y cambiar de marcha la bicicleta no tendría que tener un m3todo para cambiar su velocidad pues 3sta es funci-n de la cadencia de pedaleo, la marcha en la que est9 y de si los frenos est9n siendo utiliados o no, entre otros muchos factores/. stos m3todos se denominan formalmente m3todos instancia o m3todos miembro, ya que cambian el estado de una instancia u objeto bicicleta particular. 5a siguiente figura muestra una bicicleta modelada como un objeto:
l diagrama del objeto bicicleta muestra las variables objeto en el n;cleo o centro del objeto y los m3todos rodeando el n;cleo y protegi3ndolo de otros objetos del programa. ste hecho de empaquetar o proteger las variables miembro con los m3todos miembro se denomina encapsulaci-n. ste dibujo conceptual que muestra el n;cleo de variables miembro del objeto protegido por una membrana protectora de m3todos o funciones miembro es la representaci-n ideal de un objeto y es el ideal que los programadores de objetos suelen buscar. )in embargo, debemos matiarlo. A menudo, por raones pr9cticas, es posible que un objeto desee exponer alguna de sus variables miembro, o proteger otras de sus propios m3todos o funciones miembro. or ejemplo, Bava permite establecer O niveles de
José Luis de la Puente Ríos
13
protecci-n de las variables y de la funci-n miembro para casos como 3ste. 5os niveles de protecci-n determinan qu3 objetos y clases pueden acceder a qu3 variables o a qu3 m3todos. De cualquier forma, el hecho de encapsular las variables y las funciones miembro relacionadas proporciona dos importantes beneficios a los programadores de aplicaciones: ■
Ca3acidad de crear m,d$&os% l c-digo fuente de un objeto puede escribirse y mantenerse independiente del c-digo fuente del resto de los objetos. De esta forma, un objeto puede pasarse f9cilmente de una parte a otra del programa. odemos dejar nuestra bicicleta a un amigo, y 3sta seguir9 funcionando.
■
Protecci,n de informaci,n% *n objeto tendr9 una interfa p;blica perfectamente definida que otros objetos podr9n usar para comunicarse con 3l. De esta forma, los objetos pueden mantener informaci-n privada y pueden cambiar el modo de operar de sus funciones miembros sin que esto afecte a otros objetos que usen estas funciones miembro. s decir, no necesitamos entender c-mo funciona el mecanismo de cambio de marcha para hacer uso de 3l.
45$6 es $n mensa.e7 (ormalmente un ;nico objeto por sí solo no es muy ;til. n general, un objeto aparece como un componente m9s de un programa o una aplicaci-n que contiene otros muchos objetos. s precisamente haciendo uso de esta interacci-n como los programadores consiguen una funcionalidad de mayor orden y modelar comportamientos mucho m9s complejos. *na bicicleta a partir de ahora particulariaremos/ colgada de un gancho en el garaje no es m9s que una estructura de aleaci-n de titanio y un poco de goma. or sí sola, tu bicicleta por poner una bicicleta en concreto/ es incapa de desarrollar ninguna actividad. #u
José Luis de la Puente Ríos
14
bicicleta es realmente ;til en tanto que otro objeto t;/ interact;a con ella pedalea/. 5os objetos de un programa interact;an y se comunican entre ellos por medio de mensajes. "uando un objeto A quiere que otro objeto ? ejecute una de sus funciones miembro m3todos de ?/, el objeto A manda un mensaje al objeto
n ocasiones, el objeto que recibe el mensaje necesita m9s informaci-n 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. sta informaci-n se pasa junto con el mensaje en forma de par9metro. 5a siguiente figura muestra las tres partes que componen un mensaje: F. l objeto al cual se manda el mensaje #u?icicleta/. @. l m3todo o funci-n miembro que debe ejecutar "ambiarDe'archa/. P. 5os par9metros que necesita ese m3todo 'archa/
José Luis de la Puente Ríos
15
stas tres partes del mensaje objeto destinatario, m3todo y par9metros/ son suficiente informaci-n para que el objeto que recibe el mensaje ejecute el m3todo o la funci-n miembro solicitada. 5os mensajes proporcionan dos ventajas importantes: ■
l comportamiento de un objeto est9 completamente determinado a excepci-n del acceso directo a variables miembro p;blicas/ por sus m3todos, así que los mensajes representan todas las posibles interacciones que pueden realiarse entre objetos.
■
5os 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/.
45$6 es $na c&ase7 (ormalmente en el mundo real existen varios objetos de un mismo tipo, o como diremos enseguida, de una misma clase. or ejemplo, mi bicicleta es una de las muchas bicicletas que existen en el mundo. *sando la terminología de la programaci-n orientada a objetos, diremos que mi bicicleta es una instancia de la
c&ase de objetos conocida como
bicicletas.
#odas las bicicletas tienen algunos
estados o atributos color, marcha actual, cadencia actual, dos ruedas/ y algunos m3todos cambiar de marcha, frenar/ en com;n. )in embargo, el estado particular de cada bicicleta es independiente del estado de las dem9s bicicletas. 5a particulariaci-n de estos atributos puede ser diferente. s decir, una bicicleta podr9 ser aul, y otra roja, pero ambas tienen en com;n el hecho de tener una variable 7color8. De este modo podemos definir una plantilla de variables y m3todos para todas las bicicletas. 5as plantillas para crear objetos son denominadas clases. *na c&ase es una plantilla que define las variables y los m3todos que son comunes para todos los objetos de un cierto tipo.
José Luis de la Puente Ríos
16
n nuestro ejemplo, la clase bicicleta definiría variables miembros comunes a todas las bicicletas, como la marcha actual, la cadencia actual, etc. sta clase tambi3n debe declarar e implementar los m3todos o funciones miembro que permiten al ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo, como se muestra en la siguiente figura:
Definici-n de la clase 7bicicleta8 Despu3s de haber creado la clase bicicleta, podemos crear cualquier n;mero de objetos bicicleta a partir de la clase. "uando creamos una instancia de una clase, el sistema reserva suficiente memoria para el objeto con todas sus variables miembro. "ada instancia tiene su propia copia de las variables miembro definidas en la clase.
Re&aci,n entre C&ase 8 O-.eto Algorítmicamente, las clases son descripciones netamente est9ticas o plantillas que describen objetos. )u rol es definir nuevos tipos conformados por atributos y operaciones.
José Luis de la Puente Ríos
17
or el contrario, los objetos son instancias particulares de una clase. 5as clases son una especie de molde de f9brica, en base al cual son construidos los objetos. Durante la ejecuci-n de un programa s-lo existen los objetos, no las clases.
La dec&araci,n de $na 2aria-&e de $na c&ase NO crea e& o-.eto+ 5a asociaci-n siguiente: Q(ombreR"laseS Q(ombreRariableS> por ejemplo, %ect9ngulo %/, no genera o no crea autom9ticamente un objeto %ect9ngulo. )-lo indica que % ser9 una referencia o una variable de objeto de la clase %ect9ngulo. 5a creaci-n de un objeto, debe ser indicada explícitamente por el programador, de forma an9loga a como inicialiamos las variables con un valor dado, s-lo que para los objetos se hace a trav3s de un m3todo "onstructor ver punto '3todos/.
Atri-$to )on los datos o variables que caracterian al objeto y cuyos valores en un momento dado indican su estado. *n atributo es una característica de un objeto. 'ediante los atributos se define informaci-n oculta dentro de un objeto, la cual es manipulada solamente por los m3todos definidos sobre dicho objeto *n atributo consta de un nombre y un valor. "ada atributo est9 asociado a un tipo de dato, que puede ser simple entero, real, l-gico, car9cter, string/ o estructurado arreglo, registro, archivo, lista, etc./ )u sintaxis algorítmica es: Q'odo de AccesoS Q#ipo de datoS Q(ombre del AtributoS> 5os modos de acceso son:
P9-&ico: Atributos o '3todos/ que son accesibles fuera de la clase. ueden ser llamados por cualquier clase, aun si no est9 relacionada con ella. ste modo de acceso tambi3n se puede representar con el símbolo
José Luis de la Puente Ríos
18
Pri2ado: Atributos o '3todos/ que s-lo son accesibles dentro de la implementaci-n de la clase. #ambi3n se puede representar con el símbolo T
Protegido : Atributos o '3todos/ que son accesibles para la propia clase y sus clases hijas subclases/. #ambi3n se puede representar con el símbolo U
M6todo )on 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. 5os m3todos constituyen la secuencia de acciones que implementan las operaciones sobre los objetos. 5a implementaci-n de los m3todos no es visible fuera de objeto. 5a sintaxis algorítmica de los m3todos expresados como funciones y acciones es: ara funciones se pueden usar cualquiera de estas dos sintaxis: Q'odo de AccesoS 0unci-n Q(ombreS V5ista ar9metros/W: QDescripci-n del #ipo de datosS ara acciones: Q'odo de AccesoS Acci-n Q(ombreS V5ista ar9metros/W donde los par9metros son opcionales jemplo: *n rect9ngulo es un objeto caracteriado por los atributos 5argo y Ancho, y por varios m3todos, entre otros "alcular su 9rea y "alcular su perímetro.
Características Genera&es "ada m3todo tiene un nombre, cero o m9s par9metros por valor o por referencia/ que recibe o devuelve y un algoritmo con el desarrollo del mismo.
José Luis de la Puente Ríos
19
n particular se destaca el m3todo constructor, que no es m9s que el m3todo que se ejecuta cuando el objeto es creado. ste constructor suele tener el mismo nombre de la claseL objeto, pero aunque es una pr9ctica com;n, el m3todo constructor no necesariamente tiene que llamarse igual a la clase al menos, no en pseudos=c-digo/. s un m3todo que recibe cero o m9s par9metros y lo usual es que inicialicen los valores de los atributos del objeto. n lenguajes como Bava y " se puede definir m9s de un m3todo constructor, que normalmente se diferencian entre sí por la cantidad de par9metros que reciben. 5os m3todos 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.
Creaci,n de O-.etos 8 M6todos Constr$ctores% "ada objeto o instancia de una clase debe ser creada explícitamente a trav3s de un m3todo u operaci-n especial denominado "onstructor. 5os atributos de un objeto toman valores iniciales dados por el constructor. or convenci-n el m3todo constructor tiene el mismo nombre de la clase y no se le asocia un modo de acceso es p;blico/. Algunos lenguajes proveen un m3todo constructor por defecto para cada clase yLo permiten la definici-n de m9s de un m3todo constructor.
M6todo de estr$ctores de o-.etos% 5os objetos que ya no son utiliados en un programa, ocupan in;tilmente espacio de memoria, que es conveniente recuperar en un momento dado. )eg;n el lenguaje de programaci-n utiliado esta tarea es dada al programador o es tratada autom9ticamente por el procesador o soporte de ejecuci-n del lenguaje.
José Luis de la Puente Ríos
20
n la notaci-n algorítmica ($ tomaremos en cuenta ese problema de administraci-n de memoria, por lo tanto no definiremos formas para destruir objetos. n cambio al utiliar lenguajes de programaci-n si debemos conocer los m3todos destructores suministrados por el lenguaje y utiliarlos a fin de eliminar objetos una ve no sean ;tiles.
Instancia% )e llama instancia a todo objeto que derive de alg;n otro. De esta forma, todos los objetos son instancias de alg;n otro, menos la clase $bject que es la madre de todas. "lases: Descripci-n de objeto. "onsta de una serie de m3todos y datos que resumen las características de este objeto. Definir clases permite trabajar con c-digo reutiliable. uesto que desde una clase se puede crear una instancia y así reutiliar el c-digo escrito para este si tener que volver a escribir el c-digo para la instancia. 5a instancia toma el patr-n de la clase padre. )in embargo, las variables son independientes.
:erencia *na ve que hemos visto el concepto de clase y el de objeto, estamos en condiciones de introducir otra de las características b9sicas de la programaci-n orientada a objetos: el uso de la herencia. l mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. 5as clases que derivan de otras heredan autom9ticamente todo su comportamiento, pero adem9s pueden introducir características particulares propias que las diferencian. "omo hemos visto, los objetos se definen a partir de clases. "on el mero hecho de conocer a qu3 clase pertenece un objeto, ya se sabe bastante sobre 3l. uede que no
José Luis de la Puente Ríos
21
sepamos lo que es la 7spada8, pero si nos dicen que es una bicicleta, ya sabremos que tiene dos ruedas, manillar, pedales. 5a programaci-n orientada a objetos va m9s all9, permiti3ndonos definir clases a partir de otras clases ya construidas. or ejemplo, las bicicletas de montaña, las de carretera y los t9ndems son todos, en definitiva, bicicletas. n t3rminos de programaci-n orientada a objetos, son subclases o clases derivadas de la clase bicicleta. An9logamente, la clase bicicleta es la clase base o superclase de las bicicletas de montaña, las de carretera y los t9ndems. sta relaci-n se muestra en la siguiente figura.
5A 6%("!A ( 5A %$&. $%!(#ADA A $?B#$)
"ada subclase hereda los estados en forma de declaraci-n de variables/ de la superclase de la cual deriva. 5as bicicletas de montaña, las de carretera y los t9ndems comparten
José Luis de la Puente Ríos
22
algunos estados: cadencia, velocidad... Adem9s, cada subclase hereda los m3todos de su superclase. 5as bicicletas de montaña, las de carretera y los t9ndems comparten algunos comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo. )in embargo, las clases derivadas no se encuentran limitadas por los estados y comportamientos que heredan de su superclase. 'uy al contrario, estas subclases pueden añadir variables y m3todos a aquellas que han heredado. 5os t9ndems tienen dos asientos y dos manillares> algunas bicicletas de montaña tienen una catalina adicional con un conjunto de marchas con relaciones de transmisi-n mucho m9s cortas. 5as clases derivadas pueden incluso sobrescribir los m3todos heredados y proporcionar implementaciones m9s especialiadas para esos m3todos. or ejemplo, si nuestra bicicleta de montaña tuviera una catalina extra, podríamos sobrescribir el m3todo 7"ambiarDe'archa8 para poder usar esas nuevas marchas. Adem9s, no estamos limitados a un ;nico nivel de herencia. l 9rbol de herencias o jerarquía de clases puede ser tan extenso como necesitemos. 5os m3todos y las variables miembro se heredar9n hacia abajo a trav3s de todos los niveles de la jerarquía. (ormalmente, cuanto m9s abajo est9 una clase en la jerarquía de clases, m9s especialiado es su comportamiento. n nuestro ejemplo, podríamos hacer que la clase bicicleta derivase de una superclase de vehículos. 5a herencia es una herramienta clave para abordar la resoluci-n de un problema de forma organiada, pues permite definir una relaci-n jer9rquica entre todos los conceptos que se est9n manejando. s posible emplear esta t3cnica para descomponer un problema de cierta magnitud en un conjunto de problemas subordinados a 3l. 5a resoluci-n del problema original se consigue cuando se han resuelto cada uno de los problemas subordinados, que a su ve pueden contener otros. or consiguiente, la capacidad de descomponer un problema o concepto en
José Luis de la Puente Ríos
23
un conjunto de objetos relacionados entre sí cuyo comportamiento es f9cilmente identificable puede ser extraordinariamente ;til para el desarrollo de programas inform9ticos.
La ;erencia 3ro3orciona &as sig$ientes 2enta.as% X 5as clases derivadas o subclases proporcionan comportamientos especialiados a partir de los elementos comunes que hereda de la clase base. A trav3s del mecanismo de herencia los programadores pueden reutiliar el c-digo de la superclase tantas veces como sea necesario. X 5os programadores pueden implementar las llamadas superclases abstractas, que definen comportamientos gen3ricos. 5as 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 especialiadas. l prop-sito de una clase abstracta es servir de modelo base para la creaci-n de otras clases derivadas, pero cuya implantaci-n depende de las características particulares de cada una de ellas. *n ejemplo de clase abstracta podría ser en nuestro caso la clase vehículos. sta clase sería una clase base gen3rica, a partir de la cual podríamos ir creando todo tipo de clases derivadas.
1$ndamentos de& Enfo<$e Orientado a O-.eto l nfoque $rientado a $bjeto se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetos. stos principios son: la Abstracci-n, el ncapsulamiento, la 'odularidad y la 6erencia.
José Luis de la Puente Ríos
24
$tros elementos a destacar aunque no fundamentales/ en el $$ son: olimorfismo, nlace din9mico o binding/, "oncurrencia y ersistencia.
1$ndamento =% A-stracci,n s el principio de ignorar aquellos aspectos de un fen-meno observado que no son relevantes, con el objetivo de concentrarse en aquellos que sí lo son. *na abstracci-n denota las características 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 diseño orientado a objetos. 5os mecanismos de abstracci-n son usados en el $$ para extraer y definir del medio a modelar, sus características y su comportamiento. Dentro del $$ son muy usados mecanismos de abstracci-n: la &eneraliaci-n, la Agregaci-n y la clasificaci-n. 5a generaliaci-n es el mecanismo de abstracci-n mediante el cual un conjunto de clases de objetos son agrupadas en una clase de nivel superior )uperclase/, donde las semejanas de las clases constituyentes )ubclases/ son enfatiadas, y las diferencias entre ellas son ignoradas. n consecuencia, a trav3s de la generaliaci-n, la superclase almacena datos generales de las subclases, y las subclases almacenan s-lo datos particulares. 5a especialiaci-n es lo contrario de la generaliaci-n. 5a clase '3dico es una especialiaci-n de la clase ersona, y a su ve, la clase ediatra es una especialiaci-n de la superclase '3dico. 5a agregaci-n es el mecanismo de abstracci-n por el cual una clase de objeto es definida a partir de sus partes otras clases de objetos/. 'ediante agregaci-n se puede definir por ejemplo un computador, por descomponerse en: la "*, la *5A, la memoria y los dispositivos perif3ricos. l contrario de agregaci-n es la descomposici-n.
José Luis de la Puente Ríos
25
5a clasificaci-n consiste en la definici-n de una clase a partir de un conjunto de objetos que tienen un comportamiento similar. 5a ejemplificaci-n es lo contrario a la clasificaci-n, y corresponde a la instanciaci-n de una clase, usando el ejemplo de un objeto en particular.
1$ndamento >% Enca3s$&amiento /Oc$&tamiento de Informaci,n0 s la propiedad del $$ que permite ocultar al mundo exterior la representaci-n interna del objeto. sto quiere decir que el objeto puede ser utiliado, pero los datos esenciales del mismo no son conocidos fuera de 3l. 5a idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. ermite el ocultamiento de la informaci-n separando el aspecto correspondiente a la especificaci-n de la implementaci-n> de esta forma, distingue el Equ3 hacerE del Ec-mo hacerE. 5a especificaci-n es visible al usuario, mientras que la implementaci-n se le oculta. l encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y m3todos con los siguientes modos de acceso: ;blico / Atributos o '3todos que son accesibles fuera de la clase. ueden ser llamados por cualquier clase, aun si no est9 relacionada con ella. rivado =/ Atributos o '3todos que solo son accesibles dentro de la implementaci-n de la clase. rotegido U/: Atributos o '3todos que son accesibles para la propia clase y sus clases hijas subclases/. 5os atributos y los m3todos que son p;blicos constituyen la interfa de la clase, es decir, lo que el mundo exterior conoce de la misma.
José Luis de la Puente Ríos
26
(ormalmente lo usual es que se oculten los atributos de la clase y solo sean visibles los m3todos, incluyendo entonces algunos de consulta para ver los valores de los atributos. l m3todo constructor (uevo, (e siempre es ;blico.
1$ndamento ?% Mod$&aridad s la propiedad que permite tener independencia entre las diferentes partes de un sistema. 5a modularidad consiste en dividir un programa en m-dulos o partes, que pueden ser compilados separadamente, pero que tienen conexiones con otros m-dulos. n un mismo m-dulo se suele colocar clases y objetos que guarden una estrecha relaci-n. l sentido de modularidad est9 muy relacionado con el ocultamiento de informaci-n.
1$ndamento @% :erencia s el proceso mediante el cual un objeto de una clase adquiere propiedades definidas en otra clase que lo preceda en una jerarquía de clasificaciones. ermite la definici-n de un nuevo objeto a partir de otros, agregando las diferencias entre ellos rogramaci-n Diferencial/, evitando repetici-n de c-digo y permitiendo la reusabilidad. 5as clases heredan los datos y m3todos de la superclase. *n m3todo heredado puede ser sustituido por uno propio si ambos tienen el mismo nombre. 5a herencia puede ser simple cada clase tiene s-lo una superclase/ o m;ltiple cada clase puede tener asociada varias superclases/. 5a clase Docente y la clase studiante heredan las propiedades de la clase ersona superclase, herencia simple/. 5a clase reparador subclase/ hereda propiedades de la clase Docente y de la clase studiante herencia m;ltiple/.
1$ndamento % Po&imorfismo
José Luis de la Puente Ríos
27
s una propiedad del $$ que permite que un m3todo tenga m;ltiples implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la ejecuci-n del m3todo. l polimorfismo operacional o )obrecarga operacional permite aplicar operaciones con igual nombre a diferentes clases o est9n relacionados en t3rminos de inclusi-n. n este tipo de polimorfismo, los m3todos son interpretados en el contexto del objeto particular, ya que los m3todos con nombres comunes son implementados de diferente manera dependiendo de cada clase
José Luis de la Puente Ríos
28
CONCL)SIONES n la rogramaci-n $rientada a $bjetos los programas son representados por un conjunto de objetos que interact;an. *n objeto engloba datos y operaciones sobre estos datos. 5a rogramaci-n $rientada a $bjetos constituye una buena opci-n a la hora de resolver un problema, sobre todo cuando 3ste es muy extenso. n este enfoque de programaci-n, se facilita evitar la repetici-n de c-digo, no s-lo a trav3s de la creaci-n de clases que hereden propiedades y m3todos de otras, sino adem9s que el c-digo es reutiliable por sistemas posteriores que tengan alguna similitud con los ya creados.
José Luis de la Puente Ríos
29
1)ENTES E IN1ORMACIÓN
http:LLdo
http:LL<<<.sc.ehu.esLsb
http:LLhelp.adobe.comLesR)LAction)criptLP.IRrogrammingA)PLY)HbPccc HFZdOfbfPHFeZPePdFF[aMbMI@IO=GfPH.html
http:LLdo
http:LL<<<.upv.esLamigaLOP.htm
http:LL<<<.ciberaula.comLarticuloLtecnologiaRorientadaRobjetosL
http:LL<<<.desarrollo
http:LL<<<.nebrija.esL\abustindL!nformaticaL'etodologia!!L!ntroduccion.pdf
http:LLcandyluna.galeon.comLaficiones[PZGZM.html
http:LLelvex.ugr.esLdecsaiLbuilderLintroLH.html
José Luis de la Puente Ríos
30