Está en la página 1de 21

www.monografias.

com
Programacin orientada a Objetos
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 1 -
(OOP, Object Oriented Programming)
1. Introduccin
2. Objetos
3. Diseo de aplicaciones eleccin de entorno.
!. "plicaciones orientadas a objetos
#. $aracter%sticas de los lenguajes OOP
&. Panor'mica de los lenguajes OOP
(. )ases de datos orientadas a objetos
*. Objetos asociaciones.
+. ,a relacin de -erencia.
1.. )ibliogra/%a 0 in/ogra/%a
Introduccin
l trmino de Programacin Orientada a Objetos indica ms una forma de diseo y una
metodologa de desarrollo de software que un lenguaje de programacin, ya que en realidad
se puede aplicar el iseo Orientado a Objetos !"n ingls abre#iado OO, Object Oriented
esign$, a cualquier tipo de lenguaje de programacin.
"
"l desarrollo de la OOP empie%a a destacar durante la dcada de lo &' tomando en cuenta la
programacin estructurada, a la que engloba y dotando al programador de nue#os elementos para
el anlisis y desarrollo de software.
$omplejidad
12olucin
Cobol
Pascal
)odula2
da
sembler
C
*rientado a *b"etos
Pascal **
+iffel
,malltal-
C..
Cobol **
/a0a
C1
V
i
s
u
a
l
2
a
s
i
c
"l propsito de este trabajo es e(plicar el diseo orientado a objeto y no una e(plicacin de su
programacin, puesto que no nos alcan%ara toda la currcula para )acerlo.
*sicamente la OOP permite a los programadores escribir software, de forma que est organi%ado
en la misma manera que el problema que trata de modeli%ar. +os lenguajes de programacin
con#encionales son poco ms que una lista de acciones a reali%ar sobre un conjunto de datos en
una determinada secuencia. ,i en alg-n punto del programa modificamos la estructura de los
datos o la accin reali%ada sobre ellos, el programa cambia.
+a OOP aporta un enfoque nue#o, con#irtiendo la estructura de datos en el centro sobre el que
pi#otan las operaciones. e esta forma, cualquier modificacin de la estructura de datos tiene
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 2 -
efecto inmediato sobre las acciones a reali%ar sobre ella, siendo esta una de la diferencias
radicales respecto a la programacin estructurada.
Para quienes no estn familiari%ados con la programacin estructurada dir que una de las bases
de esta escuela de programacin parte del diseo arriba . abajo. "n esta forma de diseo se
descomponen los requerimientos del programa paso a paso, )asta llegar a un ni#el que permite
e(presarlos mediante procedimientos y funciones. +a OOP estructura los datos en objetos que
pueden almacenar, manipular y combinar informacin.
"n resumen, la programacin estructurada presta atencin al conjunto de acciones que manipulan
el flujo de datos !desde la situacin inicial a la final$, mientras que la programacin orientada a
objetos presta atencin a la interrelacin que e(iste entre los datos y las acciones a reali%ar con
ellos.
/uc)os )abrn odo comentarios sobre la incidencia de la OOP sobre la programacin
con#encional. ,e )a llegado a decir que el cambio introducido por la OOP es similar al producido
por la aparicin del ensamblador sobre el cdigo de mquina.
+a OOP proporciona las siguientes #entajas sobre otros lenguajes de programacin
3ni/ormidad. 0a que la representacin de los objetos lle#a implica tanto el anlisis como el diseo
y la codificacin de los mismos.
$omprensin. 1anto los datos que componen los objetos, como los procedimientos que los
manipulan, estn agrupados en clases, que se corresponden con las estructuras de informacin
que el programa trata.
4le5ibilidad. 2l tener relacionados los procedimientos que manipulan los datos con los datos a
tratar, cualquier cambio que se realice sobre ellos quedar reflejado automticamente en cualquier
lugar donde estos datos apare%can.
1stabilidad. ado que permite un tratamiento diferenciado de aquellos objetos que permanecen
constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del
programa que permanecen inalterables en el tiempo.
6eusabilidad. +a nocin de objeto permite que programas que traten las mismas estructuras de
informacin reutilicen las definiciones de objetos empleadas en otros programas e incluso los
procedimientos que los manipulan. e esta forma, el desarrollo de un programa puede llegar a ser
una simple combinacin de objetos ya definidos donde estos estn relacionados de una manera
particular.
3no de los puntos cla#e a remarcar en esta introduccin es que la programacin orientada a
objetos no sustituye a ninguna metodologa ni lenguaje de programacin anterior. 1odos los
programas que se reali%an seg-n OO se pueden reali%ar igualmente mediante programacin
estructurada. ,u uso en la actualidad se justifica porque el desarrollo de todas las nue#as
)erramientas basadas en un interface de usuario grfico como 4indows, O,56, (74indows, etc. "s
muc)o ms sencillo
O)718O9
$aracter%sticas de los Objetos
Identidad del Objeto
+a identidad e(presa que aunque dos objetos sean e(actamente iguales en sus atributos, son
distintos entre s. e esta forma incluso una serie de Objetos coc)es, recin fabricados son
distintos los unos de los otros.
+a afirmacin anterior, aunque parece ob#ia, tiene importancia cuando descendemos al ni#el de
programacin. "n este mbito cada uno de los objetos tiene un controlador pro el cual se
identifica. "ste puede ser una #ariable, una estructura de datos, una cadena de caracteres, etc.
"l controlador ser distinto para cada uno de los objeto, aunque las referencias a stos sean
uniformes e independientes del contenido, permitiendo crear agrupaciones de objetos con el mismo
tratamiento.
$lasi/icacin
8on la clasificacin comien%a la #erdadera programacin orientada a objetos. "llos nos obliga a
una abstraccin del concepto de objeto denominada clase.
+as clases permiten la agrupacin de objetos que comparten las mismas propiedades y
comportamiento. ,i bien clase y objeto suelen usarse como sinnimos, no lo son.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 3 -
"l esfuer%o del programador ante una aplicacin orientada a objetos se centra en la identificacin
de las clases, sus atributos y operaciones asociadas
+as propiedades de cada clase deben cumplir una serie de premisas
+as propiedades deber ser significati#as dentro del entorno de la aplicacin es decir, deben ser#ir
para identificar claramente y de una manera -nica !y uni#oca$ a cada uno de los objetos
"l n-mero de propiedades de un objeto debe ser el mnimo para reali%ar todas las operaciones que
requiera la aplicacin.
efinamos una clase rectngulo. "sta clase puede tener como atributos un punto !(,y$, la anc)ura
!a$ y la longitud !l$. +as operaciones a reali%ar son9 mo#er, agrandar, reducir, et. :"s posible
reali%arlas con las propiedades de la clase;
3n anlisis posterior nos indica que es posible la reali%acin de estas operaciones con los atributos
definidos. Pero si incluimos la operacin girar , #emos que con las propiedades definidas para la
clase esta operacin no se puede reali%ar. Para incluir esta nue#a operacin debemos redefinir las
propiedades del objeto, en este caso las coordenadas de los #rtices.
1ncapsulacin ocultacin de datos
+a capacidad de presentacin de informacin dentro de un objeto se di#ide en dos partes bien
diferenciadas9
Interna9 +a informacin que necesita el objeto para operar y que es innecesaria para los dems
objetos de la aplicacin. "stos atributos se denominada pri#ados y tienen como marco de
aplicacin -nicamente a las operaciones asociadas al objeto.
15terna +a que necesitan el resto de los objetos para interactuar con el objeto que definimos .
"stas propiedades se denominan p-blicas y corresponde a la informacin que necesitan conocer
los restantes objetos de la aplicacin respecto del objeto definido para poder operar.
Podemos imaginarla encapsulacin como introducir el objeto dentro de una caja negra donde
e(isten dos ranuras denominadas entrada y salida. ,i introducimos datos por la entrada
automticamente obtendr un resultado en la salida. <o necesita conocer ning-n detalle del
funcionamiento interno de la caja.
"l trmino encapsulacin indica l capacidad que tienen los objetos de construir una cpsula a su
alrededor, ocultando la informacin que contienen !aqulla que es necesaria para su
funcionamiento interno, pero innecesaria para los dems objetos$ a las otras clases que componen
la aplicacin.
2unque a primera #ista la encapsulacin puede parecer superflua, tengamos en cuenta que e(isten
muc)as #ariables utili%adas de forma temporal9 contadores y #ariables que contienen resultados
intermedios, etc. no ser por la encapsulacin estas #ariables ocuparan memoria y podran
interferir en el funcionamiento del resto de los objetos.
+a encapsulacin no es e(clusi#a de los lenguajes de programacin orientados a objetos. 2parece
en los lenguajes basados en procedimientos !P2,82+, 8, 8O*O+, "18$ como una forma de
proteger los datos que se manipulan dentro de las funciones.
+os lenguajes OOP incorporan la posibilidad de encapsular tambin las estructuras de datos que
sir#en como base a las funciones. 2portan por tanto un ni#el superior en cuanto a proteccin de
informacin.
+a encapsulacin nos permite el uso de libreras de objetos para el desarrollo de nuestros
programas. =ecordemos que las libreras son definiciones de objetos de propsito general que se
incorporan a los programas. 2l ser el objeto parcialmente independiente en su funcionamiento del
programa en donde est definido, ya que contiene y define todo lo que necesita para poder
funcionar, es fcil utili%arlo en los mas #ariados tipos de aplicaciones. ,i aseguramos , depurando
las propiedades y las operaciones dentro de la clase que el objeto funcin bien dentro de una
aplicacin, con una correcta encapsulacin el objeto podr funcionar en cualquier otra.
Otra de las #entajas de la encapsulacin es que , al definir el objeto como una caja negra con
entradas y salida asociadas, en cualquier momento podemos cambiar el contenido de las
operaciones del objeto, de manera que no afecte al funcionamiento general del programa.
+a encapsulacin est en el n-cleo de dos grandes pilares de la construccin de sistemas>
mantenibilidad y reusabilidad.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 3 -
PROGRAMA
Function comprobar_nombre
Function graf_distribucion
Function calc_amortizacion
Function presentacion_datos
LIBRERIA
!A"E#A
GRAFI!O
F$#!% Matem&ticas
'E#(A#A
:antenibilidad
8ualidad que indica que un programa o sistema debe ser fcilmente modificable. "s decir que los
cambios en las condiciones e(ternas !como la definicin de una nue#a #ariable$ implicarn
modificaciones pequeas en el programa 5 sistema. "l concepto de mantenibilidad implica que un
programa, al igual que un ser #i#o debe ser capa% de adaptarse a un medio ambiente siempre
cambiante.
6eusabilidad
8ualidad que nos indica que partes del programa ! en este caso objetos$ pueden ser reutili%ados
en la confeccin de otros programas. "llo implica que los objetos definidos en un programa
pueden ser e(trados del mismo e implantados en otro sin tener que reali%ar modificaciones
importantes en el cdigo del objeto. "l objeto final es que el programador construya una librera de
objetos que le permita reali%ar programas basndose en la tcnica de cortar y pegar. "sta e(trae
!corta$ cdigo de otras aplicaciones ya reali%adas y las implementa !pega$ en la aplicacin a
reali%ar donde, tras algunos retoques, la nue#a aplicacin estar lista para funcionar. 8omo podr
obser#ar el concepto de reusabilidad, permite reducir el tiempo de reali%acin , ganando en
claridad, mantenibilidad y producti#idad.
+a encapsulacin de datos se muestra como una )erramienta poderosa que nos permite ganar en
tiempo de desarrollo y claridad, con el -nico coste adicional de definir con precisin las entradas y
salida de nuestras operaciones.
Poli/ormismo
"l polimorfismo es una nue#a caracterstica aportada por la OOP. "sta propiedad indica la
posibilidad de definir #arias operaciones con el mismo nombre, diferencindolas -nicamente en los
parmetros de entrada. ependiendo del objeto que se introdu%ca como parmetro de entrada, se
elegir automticamente cual de las operaciones se #a a reali%ar.
0a est )abituado al operador ;;suma<< que est presente en todos los lenguajes de
programacin. ,in embargo, los operadores ;;suma de /racciones<< y ;;suma de n=meros
complejos<< no e(isten en casi ning-n lenguaje de programacin.
+os lenguajes OOP permiten definir un operador ;;suma<< tal que recono%ca que tipo de objeto
se le est aplicando, a tra#s de operaciones de objetos. Pre#iamente deber definir la fraccin y
el n-mero complejo como una clase y la operacin suma como una operacin de una clase.
efiniendo adecuadamente las operaciones suma de /racciones y suma de n=meros
imaginarios, el operador suma de#ol#er, en el caso que los operandos sean fracciones, una
fraccin y , en el caso de los n-meros imaginarios, otros n-mero imaginario.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 4 -
"s posible e(tender el concepto e incluso definir operaciones como suma de bases de datos
2. ",)168O
1( ,3I9
1dad >ombre
1
)
=
*
+
Ingl?s 2. ",)168O
4ranc?s 1( ,3I9
Idioma 1dad >ombre
2
Ingl?s ",)168O
4ranc?s ,3I9
Idioma >ombre
1
"l operador suma de base de datos. 2unque a primera #ista la e(presin 8? 2@*, siendo 2 y *
bases de datos, nos pudiera parecer una e(traordinaria simplificacin, nos conduce a la pregunta9
:Au es la suma de una base d datos;
8onsideremos #arias posibilidades9
Bntroduccin de registros9 +o que e(ige que 2 y * tengan la misma estructura.
3nin de campos9 2quellos campos que apare%can en * pero no en 2 sern aadidos a 8
:2lguna de estas dos opciones es #erdaderamente una suma; "s decir :8umple las propiedades
conmutati#a, asociati#a, de elemento neutro, etc.; :Au ocurre si sumo dos bases de datos con
estructuras distintas;
8omo puede obser#ar, la definicin de un operador sobre un tipo complejo de datos, intentando
utili%ar identificadores de operadores de datos simples, puede tener resultados impredecibles.
3na de las #entajas ms importantes, sin entrar en la redefinicin de operadores es permitir la
reali%acin de las clases que definen un programa de forma totalmente independiente al programa
donde se utili%an. Cracias a la encapsulacin y el polimorfismo, aunque se utilicen los mismos
nombre con las operaciones en dos clases distintas, el programa reconoce a que clase se aplica
durante la ejecucin.
8omo se podr obser#ar el polimorfismo y la encapsulacin de datos estn ntimamente ligados y
nos permiten un mayor grado de mantenibilidad y reusabilidad que los lenguajes tradicionales "sta
ese precisamente una de las causas de la re#olucin que )a supuesto la introduccin de los
lenguajes orientados a objetos dentro de la programacin.
@erencia
+a )erencia es la -ltima de las propiedades relati#as a la OOP, 8onsiste en la propagacin de los
atributos y las operaciones a tra#s de distintas sub7clases definidas a partir de una clase com-n.
Bntroduce, por tanto, una posibilidad de refinamiento sucesi#o del concepto de clase. <os permite
definir una clase principal y , a tra#s de sucesi#as apro(imaciones, cualquier caracterstica de los
objetos. 2 partir de a)ora definiremos como sub7clases todas aquellas clases obtenidas mediante
refinamiento de una !o #arias$ clases principales.
+a )erencia nos permite crear estructuras jerrquicas de clases donde es posible la creacin de
sub7clases que incluyan nue#as propiedades y atributos. "stas sub7clases admiten la definicin de
nue#os atributos, as como crear, modificar o in)abilitar propiedades.
Para pensarlo de manera ms fcil podemos abstraernos al siguiente ejemplo.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 6 -
Pensemos en los distintos sub7modelo s asociados a un modelo bsico de autom#il. 2 partir de
este modelo bsico, los fabricantes introducen distintas caractersticas !aire acondicionado, 2*,,
distintas tapiceras , acabados, etc.$ que crean sub . clases. 1odas estas sub7clases tienen en
com-n la estructura bsica !c)asis , direccin , etc.$ u #aran slo en algunos de sus componentes.
2sociemos a este tipo bsico una clase cuyos atributos representen las pie%as que componen el
coc)e. +as sub7clases aportarn sus propios atributos !en el caso de #e)culos con aire
acondicionado, todos aquellas pie%as que lo componen$, permitiendo la definicin de todos los
posibles modelos.
A1@I$3,O
$O$@1 5 91D"> $O$@1 0 $O3P1 B11C1>D
2dems, es posible que una sub7clase )erede atributos y propiedades de ms de una clase. "ste
proceso se denomina )erencia m-ltiple y lo #eremos con ms detalle en captulos posteriores.
+a )erencia es, sin duda alguna, una de las propiedades ms importantes de la OOP, ya que
permite, a tra#s de la definicin de una clase bsica, ir aadiendo propiedades a medida que sean
necesarias y, adems, en el sub7conjunto de objetos que sea preciso.
+a )erencia permite que los objetos pueden compartir datos y comportamientos a tra#s de las
diferentes sub7clases, sin incurrir en redundancia. /s importante que el a)orro de cdigo, es la
claridad que aporta al identificar que las distintas operaciones sobre los objetos son en realidad
una misma cosa.
$onclusin.
Bdentidad, clasificacin, polimorfismo y )erencia caracteri%an a los lenguajes orientados a objetos.
8ada uno de estos conceptos puede utili%arse aisladamente, incluso aparecen en otras
metodologas de programacin, pero juntos se complementan en una relacin sinrgica. +os
beneficios de la programacin orientada a objetos son ms que los que pueden #erse a simple
#ista. "l nfasis en las propiedades esenciales de un objeto, fuer%a al desarrollador a pensar
cuidadosamente que es un objeto y que es lo que )ace con el resultado de que el sistema es
normalmente ms preciso, general y robusto que si pusiramos el nfasis en los procedimientos y
los datos por separado
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 6 -
OOP
PO,I:O64I9:O 1>$"P93,"$ID>
@161>$I" $,"9I4I$"$IO> ID1>8ID"D
$onstruccin de clases
1al como )emos definido con anterioridad, una clase de objeto describe a un grupo de objetos con
similares9
Propiedades !atributos$
8omportamientos !operaciones$
=elaciones con otros objetos
+a abre#iatura clase es utili%ada en lugar de clase de objetos. +os objetos difieren en los #alores
asociados a sus atributos definidos dentro de la clase. 8ada objeto DDconoceEE cul es su clase.
+a mayora de los lenguajes orientados a objetos pueden determinar a que clase pertenece un
objeto durante la ejecucin del programa.
2 continuacin e(pondremos una serie de pasos para definir una clase.
Identi/icar los objetos.
Para ello e(amine la aplicacin e identifique las distintas estructuras de datos, algunos tips a tener
en cuenta son los siguientes9
"l nombre de la aplicacin a #eces nos da la del nombre del objeto principal
+os objetos software pueden imitar el mundo real, modeli%ando las propiedades de los
objetos a tra#s de #ariables 8ualquier propiedad de un objeto puede ser identificada
dentro del objeto correspondiente a tra#s de #ariables.
+os objetos no se )an de corresponder siempre con objetos fsicos, sino que tambin
pueden ser entidades que se utili%an dentro de la construccin del programa.
Piense en el objeto en DDprimera personaEE. "ste truco nos puede identificar
claramente los atributos y sus operaciones asociadas9 DD,oy un cuadrado y me mue#o,
giro, agrando y redu%co. +as partes que me componen son los puntos de mis #rticesEE.
3na clase es un tipo de dato que puede ser usado para declarar objetos, de la misma
forma que una estructura es un tipo definido por el usuario que puede utili%arse para
declarar #ariables.
De/inir las operaciones
efina las operaciones a partir de los objetos, e(aminando las distintas operaciones asociadas a
un conjunto de datos. +os atributos del objeto se deben definir de tal manera que stos satisfagan
todos los requerimientos de cada una de las operaciones.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 7 -
2 estas operaciones aada dos ms9 8rear y estruir. "stas operaciones nos ser#irn para
iniciali%ar y borrar el objeto dentro de la aplicacin.
2 partir de la definicin de las propiedades, un objeto siempre debe ser capa% de responder a estas
tres preguntas9 :Au soy ;, :Au )ago; :Au dejo #er al resto del mundo;
2lgunas de las operaciones slo se aplicarn a determinados objetos pertenecientes a las clases.
Femos #isto que a tra#s de la )erencia podemos DDespeciali%arEE un sub conjunto de objetos
creando una sub7clase.
Gnicamente aquellas operaciones que sean comunes a todos los objetos de la clase deben
incluirse dentro de las operaciones de la clase. "l resto, que corresponden a las operaciones de
sub7Crupos de objetos, se deben definir dentro de la especiali%aciones de la clase.
De/inir los atributos de los objetos
3na #e% identificados los objetos, defina los atributos de la clase. 3n atributo es un #alor
almacenado en los objetos de la clase.
"plicaciones orientadas a objetos
2 lo largo de la )istoria de la programacin, los lenguajes y las metodologas )an pasado de una
relati#a simplicidad a una complejidad creciente. +os lenguajes de programacin orientados a
objetos pretenden aportar simplicidad a la tarea de programacin de grandes aplicaciones.
8uando se crearon las primeras computadoras toda#a no e(istan los lenguajes de programacin,
tal como a)ora los entendemos. "l lenguaje ensamblador puede considerarse como el primer
lenguaje de programacin propiamente dic)o. Permita al usuario un dilogo ms fluido con la
mquina a tra#s de instrucciones que tenan relacin directa con el conjunto de operaciones que
la mquina poda reali%ar.
2 partir de este momento empe% la e#olucin de los lenguajes de programacin. Hcada uno tena
su entorno definido y aunque en realidad todos los lenguajes son poli#alentes !en teora, con
cualquiera de ellos se puede desarrollar cualquier programa de gestin o cientfico$. Pronto
apareci la especiali%acin funcional. 2s, 8O*O+ !8ommon *usiness Orientated +anguage$ se
introdujo como lenguaje mainframe para el diseo de aplicaciones de gestin.> IO=1=2< !Iormula
1ranslator$ para el diseo de aplicaciones cientficas> 2P+ !2 Programming +anguage$ para el
clculo matemtico, etc.
2 medida que el software tomaba importancia, aparecieron los primeros problemas relacionados
con la programacin. 2l tiempo que aumenta el #olumen de un programa, disminuye el control del
mismo por parte del programador y la capacidad de este de dar mantenimiento.
"n un intento de solucionar estos problemas aparecen las metodologas de programacin. 3na
metodologa es un conjunto de reglas destinadas a simplificar las tareas de diseo, estimacin de
costes, desarrollo y mantenimiento de un sistema informtico. 2 menudo se #en acompaadas con
unas )erramientas !82,"9 8omputer 2ided ,oftware "ngeneering$ que permiten la elaboracin
estructurada y documentada de los sistemas informticos.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 8 -
DI91EO D1 "P,I$"$IO>19 F 1,1$$ID> D1 1>8O6>O.
"n entorno de programacin implica tanto el lenguaje de programacin como al empleo de una
determinada metodolog%a.
+os lenguajes de programacin no se producen por generacin espontnea y se #en influidos en
gran manera por la forma en la que los profesionales piensan que se debe programar. e esta
manera se crea un conjunto de reglas para simplificar la tarea de programacin. Cenerali%adas y
codificadas, se con#ierten en DDprincipiosEE de los que surgen los lenguajes de programacin en
un afn por darles soporte.
"stos DDprincipiosEE son modelos que proporcionan tcnicas que , a su #e%, deben aplicarse en el
diseo e implementacin de los programas. "stas tcnicas nos indican la forma de resol#er los
distintos problemas que surgen a la )ora de programar.
ecimos que un lenguaje de programacin DDsoportaEE un conjunto de DDprincipiosEE si el
lenguaje simplifica la aplicacin de estas tcnicas. 2 estos DDprincipiosEE se les denomina
metodologas de programacin.
+as metodologas de programacin son modelos sobre como disear e implementar los programas.
iferentes modelos tienen como resultado diferentes tcnicas. Aue cada tcnica sea distinta no
implica que una sea la #erdadera y que las dems falsas. Por el contrario, las metodologas se
complementan entre s. +o que todas las metodologas tienen en com-n es la premisa de que )ay
que partir de abstracciones que corresponden a elementos del problema a resol#er, y que la
implementacin de la solucin se debe reali%ar mediante un conjunto de mdulos preferiblemente
reutili%ables.
+as metodologas orientadas a objetos se centran en las estructuras de datos que sin embargo se
relegan a un segundo plano en los modelos procedurales. +a base de esta metodologa es que
una estructura de datos debe contener las operaciones que los modifican. +a tcnica que se utili%a
para obtener esta DDabstraccin de datosEE es la encapsulacin de los mismos en una estructura
conocida como clase.
"l accesos a los datos contenidos en la clase se reali%a mediante las operaciones que la propia
clase define. Por tanto, la metodologa orientada a objetos complementa el punto de #ista
procedural de operaciones reali%adas sobre un flujo de datos, al asociar a cada dato el conjunto de
operaciones que lo modifican. 8omo podr #er, ambos enfoques son complementarios.
Para ilustrar las diferencias entre las apro(imaciones orientadas a procedimientos y las orientadas
a objetos, considere el diseo de un DDcompiladorEE
"l compilador es un programa que a partir de un conjunto de fic)ero fuente !programa$ construye
el cdigo objeto que posteriormente se con#ierte en programa. Para reali%ar su trabajo, el
compilador lee el fic)ero fuente y separa de l las #ariables y las instrucciones. +as #ariables
constituyen la tabla de smbolos del programa, mientras que las instrucciones se organi%an en un
rbol sintctico donde se plasman todas la referencias que reali%an los mandatos y funciones entre
s.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 10 -
Leer Programa
P6OG6":"
$onstruir la tabla
De 2ariables
(abla de simbolos
"n'lisis
Generar $digo
1rrores $digo Objeto
P6OG6":"
4lujo de mandatos 8abla de s%mbolos
"rbol de mandatos
$digo Objeto 1rrores
$ompilador tradicional $ompilador orientado a objetos
Gram'tica
166O619
I>9863$$IO>19
9I:)O,O9
9I:)O,O9
I>9863$$IO>19
$oloca s%mbolo
$O:P631)"
G1>16" $ODIGO
8O:" 9I:)O,O
"l modelo mejor establecido es el basado en funciones !procedural$ que trata de la construccin
de un programa como una coleccin de funciones. +as metodologas proporcionan una grua
sobre cmo disear, organi%ar e implementar las funciones que componen un programa. "l
mtodo de diseo es la descomposicin funcional que identifica las funciones como los pasos a
seguir en la resolucin de un problema. +a organi%acin en arc)i#os permite que las funciones se
agrupen mdulos separados, mientras que las tcnicas de programacin estructurada permiten
que las implementaciones de las funciones sean fciles de consultar y mantener.
+a programacin orientada a objetos est basada en un modelo de construcciones de programas
como un conjunto de clases. "l diseo orientado a objetos identifica los tipos que representan los
distintos objetos en el programa. +as operaciones a reali%ar con cada uno delos objetos son, al
igual que en el modelo procedural, los pasos destinados a solucionar el problema. "l objeto sir#e
adems de mdulo que puede reutili%arse para la solucin de un problema de similares
caractersticas en otro programa.
<inguna metodologa resuel#e con acierto todos los tipos de problemas. +a programacin requiere
una especiali%acin como la que se produce en la ingeniera pero toda#a no es posible identificarla
como una ciencia. +as tcnicas a emplear se )an de utili%ar con e(quisito cuidado, sin perder de
#ista el objeti#o de resol#er un determinado problema.
2ctualmente e(iste la tendencia de identificar la programacin con una disciplina como la
ingeniera. ,in embargo, debe considerarse ms como un arte como la arquitectura, donde se
unen la inspiracin y el dominio de la tcnica.
Para la eleccin de un determinado entorno debemos fijar los criterios necesarios, como los que
describimos a continuacin.9
8amao de la aplicacin
8uanto mayor sea el #olumen de informacin a procesar, mas necesidad )abr de estructurar
dic)a informacin de forma que se fcil su manipulacin.
$omplejidad
Podemos di#idir el problema de la complejidad en dos grandes apartados.
atos9 +a complejidad #iene reflejada por el tipo de datos a tratar, por las relaciones que puedan
tener los datos entre si, etc.
Iunciones9 "l mtodo para la obtencin de nue#os datos es complicado o requiere un esfuer%o de
programacin importante.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 11 -
2unque tratados como grupos independientes, ambos estn generalmente interrelacionados. e
esta forma una estructura de datos compleja suele ir acompaada de un conjunto de funciones de
diseo complejo.
2simismo, una mayor abstraccin se traduce en unas instrucciones mas potentes y un soporte de
estructuras de datos ms complejas. "sto a menudo se traduce en que el compilador !programa
que traduce el programa introducido por el usuario en cdigo ejecutable por la mquina$ )a de
introducir una cantidad grande de cdigo au(iliar para poder ejecutar el cdigo fuente.
,i )a programado en 8 o en 1urbo Pascal, )abr obser#ado que los ejecutables son en general de
pequeo tamao. 3n simple programa DDFola mundoEE, clsico de programacin. <unca es
mayor de seis lneas de cdigo y su ejecutable es siempre inferior a J' Kbytes. ,i tomamos
8lipper el programa no ocupa ms de una lnea pero ms de 6'' Kbytes.
6apideH
"n algunos problemas la rapide% de respuesta es crtica. "ste factor depende muc)o de soporte
)ardware y lentamente #a asumiendo menos importancia.
Portabilidad
+a portabilidad es la capacidad que )a de tener el programa para funcionar en distintos entornos
operati#os. +a reali%acin de un programa portable , en general, depende de la eleccin de un
lenguaje de programacin , as como del alejamiento de las #entajas e incon#enientes que
proporciona el soporte )ardware y el sistema operati#o. +a creacin de un programa portable a
menudo incide negati#amente en los apartados de tamao y rapide%, ya que un alejamiento de la
plataforma )ardware y del sistema operati#o, a menudo se consigue emulando sus caractersticas.
"sto conlle#a un aumento del tamao y la complejidad del programa, as como un incremento en el
tiempo de ejecucin.
Gestin de recursos
"ste factor indica las e(igencias que )ace nuestro lenguaje de los recursos disponibles por el
ordenado. "l ms limitado, aun ms que el espacio en disco, es la memoria. 3n programa grande
que gestione de manera incorrecta la memoria pronto agotar todos los recursos del sistema.
Inter/ace de usuario.
2unque no se puede contar como un factor a considerar, la importancia que el interface de usuario
est tomando en los -ltimos aos )ace que lo consideremos por separado. "l diseo del interface
de usuario aporta una complejidad propia al desarrollo de aplicaciones. e )ec)o, se considera
que en un principio este apartado ocupaba apenas entre el J' y el L' por ciento del esfuer%o de
programacin, para llegar a absorber entre el M' y N' por ciento de dic)o esfuer%o en la
actualidad.
+a aparicin de interfaces grficos de usuario estndar !4indows, os6, O74indows, etc.$ )a )ec)o
que factores como la rapide% o el tamao #uel#an a tomarse en cuenta, despus de que el
consumo de recursos de la parte del interface de usuario creciera de forma espectacular.
"P,I$"$IO>19 O6I1>8"D"9 " O)718O9
8mo afectan los requerimientos anteriores para la eleccin de un lenguaje orientado a objetos
como )erramienta para el desarrollo de nuestros programas;
$laridad
2l ligar de forma e#idente la estructura de la informacin con los procedimientos que la manipulan,
los programas ganan en claridad a la )ora de desarrollarlos y mantenerlos. "sto supone una
#entaja frente a los lenguajes procedurales , aunque stos podran suplir esta deficiencia mediante
una correcta eleccin de los nombres de las #ariables y funciones, lo que se denomina una
DDoportuna codificacinEE.
$omplejidad
8uando la complejidad de un problema es abarcable por una sola persona, resol#erlo con una
)erramienta u otra no aporta grandes #entajas. Pero cuando este desarrollo la tiene que reali%ar un
equipo grande, debe e(istir una forma para aislar partes de problema.
3no de los problemas ms comunes , y a su #e% ms simples de solucionar en el diseo de
grandes sistemas, es el nombre que se da a las funciones y que tipo de datos manipulan stas.
"n la reali%acin de un sistema informtico se utili%a un equipo de #arias personas. "l trabajo se
di#ide en tres reas funcionales9 una parte del equipo se encarga del interface de usuario, otra de
la manipulacin de datos y, la -ltima del diseo de salidas impresas.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 12 -
8ada quipo utili%a funciones y datos suministrados por los otros miembros del equipo y a su #e%
disea funciones para su uso interno y para el uso del resto de los grupos. ,i no se reali%a la
di#isin del trabajo de forma adecuada puede producirse el caos. Fe aqu una pequea
enumeracin de los problemas que se pueden encontrar.
+as funciones desarrolladas por cada uno de los grupos no encajan con las necesidades de los
dems.
Otros grupos )an elegido nombres de #ariables y funciones similares a los elegidos por nuestro
grupo. "stas funciones y #ariables son prcticamente iguales a las desarrolladas por nosotros,
pero #aran ligeramente en el tratamiento de la informacin, por lo que no podemos sustituir
nuestras funciones. 2mbas deben coe(istir aumentando la complejidad del programa de manera
innecesaria.
"l resto de los grupos slo cubren determinados aspectos de la informacin a tratar, pero no
proporcionan toda la informacin necesaria para que el programa funcione. "l resto de informacin
debe suministrarse suplantando parte de la funcionalidad destinada a otros grupos.
l&unas de las modificaciones que reali'amos sobre 0ariables locales o &lobales
9roducen resultados im9re0istos en el resto de los mdulos.
8amao
+as aplicaciones orientadas a objetos son ideales para la reali%acin de programas de gran
tamao. +as facilidades de encapsulacin y asociacin de las funciones a los datos que
manipulan, simplifican el proceso de desarrollo. e )ec)o las bases de datos orientadas a objetos
suponen un gran adelanto, ya que a-nan la fle(ibilidad en la manipulacin de los OOP con la
capacidad de consulta de un */, !ata *ase /anagement ,ystem$
6elacin entre Datos
Por el mismo moti#o se #ern beneficiados aquellos programas que impliquen una relacin
compleja entre los datos. "ste tipo de complejidad permite la utili%acin de todas las #entajas de
los lenguajes de programacin orientados a objetos. Propiedades como la )erencia ! donde los
objetos pueden )eredar estructura y operaciones de objetos predecesores$, la encapsulacin, etc.
/uestran en este tipo de programas todas sus #entajas.
6apideH
"n este aspecto, los lenguajes orientados a objetos muestran una clara des#entaja frente a otros
lenguajes que se acercan ms a las especificaciones de la mquina. ,i la rapide% es crtica, puede
elegir un lenguaje de programacin como 8@@, que aporta toda la funcionalidad de los lenguajes
orientados a objetos con la rapide% y la compatibilidad de 8.
Gestin de recursos
+as aplicaciones orientadas a objetos demandan normalmente ms recursos del sistema que las
aplicaciones procedurales. +a creacin dinmica de objetos, que ocupa un lugar en la memoria del
ordenador, puede acarrear gra#es problemas. 3na de las soluciones, que incluye alguno delos
lenguajes OOP, es liberar a menudo el espacio que los objetos dejan de utili%ar. "ste
procedimiento de optimi%acin como garbage collection !recoleccin de basura, implementado en
ja#a$, minimi%a los efecto de la creacin dinmica de objetos.
Inter/ace de usuario.
"l interface de usuario es uno de los aspectos ms importantes en la programacin actual. +a
aparicin de sistemas de e(plotacin que soportan un interface grfico de usuario como 4indows,
O74indows o Presentation /anager )ace que la mayora de los usuarios prefieran que sus
programas corran bajo este tipo de interface. "ste es uno de los puntos fuertes para la eleccin de
un lenguaje OOP. +a mayora de los interfaces grficos actuales )an sido diseados o rediseados
en base a la OOP. "(isten en el mercado libreras de clases que soportan todos los dispositi#os de
control de #entanas como men-s, combo bo(, listas, barras de )erramientas, etc.
,enguajes orientados a objetos
+os lenguajes OOP implementan de manera distinta los conceptos de programacin orientada a
objetos. <o e(iste el lenguaje perfecto capa% de satisfacer todas las necesidades y que se adapte
a todos los estilos
2 8ontinuacin unos consejos que nos facilitarn la eleccin del lenguaje de programacin
adecuado9
,i los programas se #an a sentar en una cualidad concreta de los OOP como )erencia,
elija el que mejor soporte le d.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 13 -
+os lenguajes interpretados sir#en para reali%ar un desarrollo rpido o para aquellos
programas que necesiten una actuali%acin constante. ,i el programa necesita rapide% o
es crtico respecto al tamao, considere el uso de lenguajes que incorporen compilador.
<o DDrein#ente la ruedaEE. ,i el lenguaje le proporciona una librera de clases no
intente reescribrlas de nue#o, use las que le ofrece el sistema. "s ms tome como factor
de eleccin las libreras de clases que el compilador incorpora o que estn disponibles en
el mercado.
,i necesita mejorar la calidad del programa pre#iniendo errores, utilice un lenguaje que
le permita definir las #ariables con sus tipos asociados.
,i la memoria del sistema es limitada, utilice lenguajes que permitan la creacin y
destruccin automtica de clases dependiendo de su utili%acin.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 13 -
$"6"$816I98I$"9 D1 ,O9 ,1>G3"719 OOP
@erencia m=ltiple
"sta caracterstica suele ser com-n a la mayora de los lenguajes OOP, aunque introduce un
problema al e(istir la posibilidad de que el objeto sucesor )erede el mismo atributo, aunque con
distinto tipo y #alor, de mas de un predecesor. 2lguno de los lenguajes de programacin
solucionan este problema de forma automtica, aunque los ms populares generan un error en el
tiempo de compilacin. =ecomendamos que se e(aminen con cuidado las clases para e#itar en lo
posible estos errores.
1/iciencia.
+os lenguajes OOP arrastraron en un principio la reputacin de ser ineficaces. "sto se deba en
gran medida a que los primeros lenguajes !como ,malltalP$ eran interpretados y no compilados. +a
e(istencia de compiladores permite a los desarrolladores ganar rapide%. 2ctualmente, usando un
buen lenguaje orientado a objetos como 8@@, Qa#a, etc. Qunto con las libreras apropiadas para la
reali%acin de un programa, puede que se ejecute ms rpidamente que el mismo programa
compilado con un lenguaje procedural.
"signacin de tipos.
+os lenguajes orientados a objetos #aran de forma sustancial la forma por la que se apro(iman a
la asignacin de tipos.
Por asignacin de tipos entendemos que cada #ariable sea identificada como perteneciente a una
clase !asignacin fuerte$ o sea simplemente un objeto indeterminado !asignacin dbil$. "iffel y 8
son dos lenguajes basados en la asignacin fuerte, frente a ,malltalP, en el que todas las #ariables
definidas pertenecen a una clase indeterminada.
+a asignacin fuerte sir#e a dos propsitos. Por una parte para que el desarrollador pueda
identificar a que clase pertenece cada operacin. e forma concreta, en aquellos lenguajes donde
est implementado el operator o#erloading !refefinicin de operador$, el compilador puede
reconocer a tra#s de las clases que entran como parmetros en la operacin que operacin tiene
que utili%ar.
Por otra, este tipo de declaracin permite al compilador un mayor grado de optimi%acin, ya que
conoce en todo momento el espacio que )a de asignar.
:anejo de memoria.
+os OOP son lenguajes que utili%an de manera intensi#a la memoria de la computadora.
Fay dos tipos de apro(imacin a la gestin de memoria.
"l sistema en tiempo de ejecucin libera la memoria automticamente a medida que los objetos
dejan de utili%arse.
"l sistema tiene instrucciones concretas para liberar l memoria e(plcitamente. "ste el enfoque
adoptado por lenguajes como 8@@, que aportan dos operadores9 crear y destruir. "l primero
reser#a automticamente memoria, mientras que el segundo la libera.
1ncapsulacin
8onsiste en separar aquellos atributos del objeto que deben ser conocidos por el resto, de aquellos
necesario para su funcionamiento propio. <o es propio de los lenguajes orientados a objetos, pero
la capacidad de stos para unir las estructuras de datos a los procedimientos que los modifican lo
)acen ms potente que los lenguajes llamados DD/odularesEE
P">O6":I$" D1 ,O9 ,1>G3"719 OOP
2 continuacin, una pequea panormica de los lenguajes orientados a objetos
9:",,8",C
Iue el primer lenguaje de programacin orientado a objetos. esarrollado en el Oero( P2=8, en
sus primeras implementaciones no ofrece solamente un interprete, sino que es muc)o ms
ambicioso, integrando intrprete on7line y otros aspectos que le con#ierten en un DDpseudoEE
sistema operati#o. "s el primero en aportar la arquitectura de /odelo5Risor58ontrolador. "l
interface de usuario se di#ide en una definicin sobre la que se aplican determinado n-mero de
#istas gestionadas por un controlador. "l /R8 permite al desarrollador concentrarse en la parte
esencial de la aplicacin !el modelo$ y aadir interfaces de usuarios ! las #istas y controles$ de
forma independiente.
Rentajas
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 14 -
,malltalP es un lenguaje puro orientado a objetos
+a implementacin a tra#s de un intrprete facilita la labor de desarrollo de
programas. +as clases son aadidas, corregidas y depuradas de forma interacti#a.
1iene una sinta(is simple, donde las #ariables y los atributos no necesitan tener un tipo
asociado. 1odo est definido en principio como objeto, incluyendo las propias clases.
Bncon#enientes
"s un lenguaje interpretado, lo que reduce su rendimiento y dificulta su
comerciali%acin.
2l proporcionar su propio entorno operati#o, interact-a mal con otro tipo de software o
)ardware
1i//el
"s un lenguaje de programacin escrito por *ertrand /eyer. 2l contrario que ,malltalP, incluye un
preprocesador que permite la traduccin de cdigo "iffel a +enguaje 8. "s ideal para la ingeniera
de software, que permite la encapsulacin , control de acceso y mbito de las modificaciones.
8omo lenguaje orientado a objetos DDpuroEE, es presumiblemente el mejor por sus capacidades
tcnicas.
+os programas consisten en la declaracin de colecciones de clases que incluyen mtodos. "l
punto primordial de un programa "iffel es la declaracin de clases, que asocia atributos. 2mbos,
clases y atributos, son accesibles a partir de la implementacin de un concepto llamado
caracterstica. 3na caracterstica es, por tanto, una agrupacin de datos y unas formas tpicas de
tratarlos.
"n "iffel una declaracin de clases puede incluir9
3na lista de caractersticas e(portables.
3na lista de las clases antecesora9 clases de la que sta es una deri#acin
3na lista de declaraciones de caractersticas.
Rentajas
"s un lenguaje orientado a objetos DDpuroEE
"iffel es un lenguaje de programacin orientado )acia el diseo de grandes
aplicaciones. +as propiedades anteriores le )acen ideal para el diseo de aplicaciones en
grupos de trabajo.
"l paso intermedio a cdigo 8 se puede considerar como una #entaja y no como un
incon#eniente, ya que aquellas secciones que sean difciles de tratar con "iffel pueden
elaborarse a partir de cdigo 8. ,u compatibilidad con 8 asegura tambin su portabilidad
)acia otros sistemas operati#os
es#entajas
"l manejo de la memoria , un punto delicado en todos los lenguajes orientados a
objetos no es transparente como en el caso de ,malltalP.
+as libreras de clases son reducidas
"l rendimiento es mayor que el de ,malltalP, pero al tener que incluir un mdulo =un7
time dentro del ejecutable, su tamao crece y su rendimiento baja.
$JJ
"s un lenguaje de uso general que deri#a del 8.
2ade a su predecesor una serie de caractersticas que le con#ierten en un lenguaje orientado a
objetos. entro de estas caractersticas debemos resaltar9
+a abstraccin de datos
+a programacin orientada a objetos, ya que permite asociar a los datos las funciones
que los manipulan
8@@ conser#a todas las capacidades de su predecesor 8. e )ec)o, el cdigo 8 puede tratarse
con compiladores 8@@ y ejecutarse sin ning-n problema. "n un principio 8@@ era traducido a
cdigo 8 a tra#s de una utilidad llamada precompilador.
1ambin es cierto que se pueden utili%ar algunas de las #entajas de 8@@ !como 8 mejorado$ para
escribir cdigo no orientado a objetos.
"numeramos los aspectos ms importantes que )acen del 8@@ un lenguaje orientado a objetos9
+a mayor contribucin que reali%a 8@@ al 8 es la introduccin del tipo clase. +as
clases permiten definir conjunto de datos y las funciones que los manipulan.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 16 -
+a ocultacin de datos es el mecanismo para implementar la abstraccin de datos. +a
abstraccin de datos permite al programador DDol#idarEE el funcionamiento interno de una
clase, ya que sabe que su funcionamiento no #a a alterar anmalamente el funcionamiento
de otras clases. 3na #e% definida la clase es transparente para el desarrollador y permite
operar con ella como si fuera un tipo bsico.
+a )erencia e(tiende el concepto de abstraccin de datos al permitir la construccin de
clases a partir de otras !sus antecesores$
+os operadores definidos por el usuario permiten un tratamiento )omogneo entre los
tipos predefinidos por el lenguaje y los desarrollados por el programado.
Otras caractersticas no relati#as a la programacin orientada a objetos, simplifican el diseo y
desarrollo.
Optimi%acin de e(plotacin de memorias, que permite la creacin de estructuras de
datos dinmicas.
Bmplementacin del solapamiento de funciones. "sta tcnica permite definir #arias
funciones con el mismo nombre pero distintos parmetros de entrada. ependiendo de los
parmetros que acompaen la llamada de la funcin, ser ejecutada una u otra.
)"919 D1 D"8O9 O6I1>8"D"9 " O)718O9
+a programacin orientada a objetos es muy #erstil. <o se restringe -nicamente al diseo de
programas, sino que es posible aplicar los mismo conceptos al diseo de bases de datos. "l uso
de una tcnica orientada a objetos trasciende a la eleccin de la base de datos.
"l uso de esta tcnica en el diseo de bases de datos aporta las cualidades de esta metodologa a
nuestro diseo. "ficiencia, co)erencia y un menor coste a la )ora de actuali%ar la estructura de las
bases de datos son los principales beneficios que aporta.
8omo #alor aadido, el uso de una misma tcnica en el diseo, tanto de los programas como de
las bases de datos proporciona co)erencia a nuestro sistema.
+as bases de datos orientadas a objetos unen dos tecnologas9
+a de las bases de datos y la de los lenguajes orientados a objetos. +os +enguajes OOP aportan
gran capacidad en la manipulacin de datos, pero no implementan el almacenamiento y consulta
de grandes #ol-menes de datos.
Por el contrario, las bases de datos con#encionales aportan un dominio de las tcnicas de
almacenamiento y consulta de grandes #ol-menes de datos, aunque su capacidad de
manipulacin es limitada.
+as bases de datos orientadas a objetos pretenden unir la capacidad de manipulacin de datos de
los OPP con la capacidad de almacenamiento y consulta de los */,.
+as aplicaciones con#encionales que agrupan programas y bases de datos, separan ambos
entornos de manera clara.
"l desarrollador usa tcnicas procedurales para la descomposicin de problemas y su codificacin
en funciones. Posteriormente se emplean tcnicas como las de "ntidad . =elacin para el diseo
de la base de datos.
,u codificacin suele reali%arse en un lenguaje de alto ni#el como 8, que lle#a embebido cdigo
,A+. "l trmino embebido describe la inclusin de un mdulo escrito bajo otro lenguaje de
programacin dentro del cdigo fuente. "l compilador incorpora durante la fase de enlace el =un7
1ime correspondiente para que pueda funcionar el cdigo embebido.
8omo podr obser#ar, esta tcnica presenta defectos e#identes9
Por una parte, se utili%an diferentes tcnicas para el desarrollo de ambos apartados, por lo que la
tarea de diseo no se puede considerara como un todo -nico
Por otra y en gran medida debida a la primera, los lenguajes que se utili%an para la implementacin
difieren, dificultando las labores de mantenimiento.
1jemplos
8omo )abr podido obser#ar a lo largo de esta monografa, nuestro propsito no )a siso el de
ensear una metodologa ni la ensean%a de un determinado lenguaje de programacin.
"l objeti#o es por el contrario dar una panormica de los conceptos de la programacin orientada a
objetos, de las metodologas y de las tcnicas de desarrollo de aplicaciones.
"n este apartado nos centraremos en lo aspectos ms importantes en el desarrollo de aplicaciones
bajo OOP9 identificacin de objetos y anlisis de asociaciones.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 16 -
O)718O9 F "9O$I"$IO>19.
+a parte ms importante de todo diseo es el punto de entrada de la definicin de requerimientos.
"n la obser#acin atenta de los requerimientos se pueden )allar la mayora de los objetos
pertenecientes a nuestra aplicacin.
"n este ejemplo nos centraremos en la identificacin de objetos a partir de los requerimientos
bsicos de la aplicacin.
"ste anlisis es el primero que debe )acerse dentro de OOP y es tambin -til para cualquier otra
tcnica de programacin.
2nalicemos la siguiente definicin de requerimientos9
"l DDsistema de tratamiento de informacin documentalEE es un gestor de DDdocumentosEE, de tal
manera que puedan clasificar en uno o #arios DDndicesEE, recuperar para su modificacin,
#isuali%ar, para su consulta, reclasificar, arc)i#ar y destruir. "l DDsistemaEE procesa la peticin del
DDusuarioEE, de#ol#iendo un mensaje e indicando el (ito o el fracaso de la peticin.
e una manera general )emos indicado entre comillas los sustanti#os y en cursi#a los #erbos. e
esta forma )emos identificado los objetos principales de la aplicacin y las operaciones asociadas
a cada uno de los objetos.
Obser#e el siguiente diagrama.
Documento
>O:)61
clasi/icar
recuperar
arc-i2ar
destruir
Indice
>O:)61
:ostrar
)orrar entrada
"adir entrada
9istema
Procesar la
Peticion
Del
usuario
3suario
Obtener
Peticin
Aer el
mensaje
Femos traducido los requerimientos a un conjunto de objetos.
"stos estn incone(os entre s, pero aplicando la DDlgicaEE podemos #er las relaciones que
e(isten entre ellos. ,in salirnos de las especificaciones de la aplicacin, #emos que e(isten las
asociaciones que aparecen en la siguiente figura9
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 17 -
3suario
9istema
Documento
Indice Documento
Indice
Indice
Documento
9istema
8omo podemos obser#ar, algunas asociaciones cclicas como Bndice D7E ocumento. "stas
asociaciones pueden simplificarse. 1ambin e(isten otras implcitas que e(aminaremos ms
adelante, como 3suario7Eocumento7EBndice.
Obser#emos grficamente las asociaciones que mantienen los objetos entre s en la siguiente
figura
3suario
Obtener peticion
Aer mensaje
Documento
>ombre
$lasi/icar
6ecuperar
"rc-i2ar
Destruir
Indice
>ombre
:ostrar
)orrar entrada
"adir entrada
9istema
Procesar peticion
8omo puede #erse )ay dos asociaciones sospec)osas, ya que no son #erbos sino los sustanti#os
DDpeticinEE y DDmensajeEE. "stas dos asociaciones se pueden DDobjeti#arEE de tal manera que
re-nan las condiciones de un objeto. Para ello debemos #ol#er a las especificaciones iniciales.
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 18 -
8uando se arc)i#a un documento se debe indicar el nombre del documento as como los ndices a
los que se #a a asociar. +as peticiones de recuperacin deben incluir un ndice y el nombre del
arc)i#o. +as consultas a los ndices deben incluir el nombre del indice y una condicin.
2 partir de este anlisis se puede depurar con F"="<8B2 y posteriormente reali%ar un DDajuste
finoEE
," 61,"$IO> D1 @161>$I".
2 continuacin #amos a centrarnos en la relacin de )erencia.
8omo ya sabemos sta puede agrupar objeto son similares caracterstica o bien especiali%ar
objetos a partir de una genrico. Obser#emos nue#amente los requerimientos de nuestro sistema9
3suario
Obtener peticion
Aer mensaje
Documento
>ombre
$lasi/icar
6ecuperar
"rc-i2ar
Destruir
Indice
>ombre
:ostrar
)orrar entrada
"adir entrada
9istema
Procesar peticion
Peticin
$ondicin
Documento
Indice
:ensaje
,ista de nombes
Documentos
1rror
:ntroduce
:ntroduce
tiene
tiene
tiene
Comunica
+mite
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 20 -
)I),IOG6"4I" 0 I>4OG6"4I"
Principles of 8omponent esign JMJ&2 /icrosoft 2utori%ed academic trining program
Iundamentos del diseo y la programacin orientada a objetos ,ergio / Iernnde% ,astre,
editorial /cCraw Fill
Bngeniera de software, ,ommer#ille B, editorial 2ddison74esley
Object7Oriented Programming, 8oad P . "ditorial 0ourdon Press.
2puntes de ctedra Programacin L lenguae 8@@ 3ni#ersidad <acional de la /atan%a.
2utor9
8ejerina :art%n
mtejerinaS)otmail.com
Documento: coloquio1.doc Profesor: Urbano Creacin 1-6-2003
Versin:1.0 lumnos !e"erina# $odr%&ue'# $amire' P(&ina - 21 -

También podría gustarte