Академический Документы
Профессиональный Документы
Культура Документы
a la orientacin
a objetos
Jordi Brnquez Jimnez
Elena Garca Barriocanal
PID_00161674
FUOC PID_00161674 Introduccin a la orientacin a objetos
ndice
Introduccin ............................................................................................ 5
Objetivos ................................................................................................... 6
Resumen .................................................................................................... 21
Solucionario ............................................................................................. 24
Glosario ..................................................................................................... 24
Bibliografa .............................................................................................. 25
FUOC PID_00161674 5 Introduccin a la orientacin a objetos
Introduccin
El presente mdulo se divide en tres grandes bloques, que incluyen los temas si-
guientes:
Objetivos
2. La orientacin a objetos
a) En cuanto al diseo del simulador, vieron que no slo era necesario tener
conocimientos de informtica para poder implementarlo, sino que adems se
necesitaba tener conocimientos amplios de ingeniera para identificar y espe-
cificar adecuadamente las caractersticas y el comportamiento del sistema real.
Para superar estas dificultades, muy comunes en las aplicaciones que se En el mdulo Clases y objetos,
se definirn los conceptos de clase
desarrollaban en aquella poca, se plante hacer los simuladores con el y objeto que, aunque son diferentes,
los trataremos indistintamente en este
mdulo.
objetivo de que reflejaran los sistemas reales de la manera ms fiel posible. En
vez de construir aplicaciones monolticas, los mdulos simularan cada una de
las piezas necesarias, y stas se comunicaran entre s como lo hacen en el
mundo real.
A partir de lo que hemos explicado hasta ahora, podemos dar una primera de-
finicin informal de objeto:
Un objeto es una representacin de una entidad real (tangible o intangible), cuyo tipo es
una clase concreta que se caracteriza por unos valores concretos que representan su esta-
do y su comportamiento.
FUOC PID_00161674 10 Introduccin a la orientacin a objetos
Por una parte, los informticos ya no tenan que conocer a fondo el campo de
la ingeniera, sino que un ingeniero o fsico, por ejemplo, les proporcionara
la descripcin exacta del funcionamiento de cada pieza y ellos slo tendran
que implementar el comportamiento de la pieza de acuerdo con la especifica-
cin dada.
Por otra parte, las modificaciones resultaban mucho ms sencillas porque aho-
ra ya no haba que perder demasiado tiempo para localizar las partes afectadas
por los cambios, nicamente era necesario identificar la pieza en la que se te-
nan que realizar los ajustes y modificar su mdulo.
Un objeto y otros objetos con los que se asocia (que al mismo tiempo se
relacionan con otros objetos); por ejemplo, el coche tiene unas ruedas (con
unas caractersticas propias), un motor, etc.
Un objeto y otros objetos que especializa; por ejemplo, un coche puede ser
deportivo o familiar, pero no puede ser un camin ni un avin.
Teniendo en cuenta todo lo que hemos explicado hasta ahora, podemos decir
que la orientacin a objetos va ms all de la implementacin de aplicaciones.
La orientacin a objetos define toda una filosofa para analizar y disear estas
aplicaciones.
utilizando clases y objetos a partir del vocabulario del problema. Una vez ob-
tenido el modelo del problema, ser necesario refinar y adaptar el modelo al
lenguaje de programacin que se utilizar, dado que no todos los lenguajes
implementan los conceptos de la programacin orientada a objetos de la mis-
ma manera.
Problema
Tenemos que hacer una aplicacin para gestionar las nminas de los profesores de una
facultad y la dotacin econmica que recibe cada departamento.
En la facultad, cada profesor imparte docencia en una asignatura, cobra de acuerdo con
las horas impartidas y pertenece a un departamento.
Segn la carga docente, los departamentos tienen una dotacin econmica u otra.
Para nuestra aplicacin, necesitaremos saber los datos que modelan los departamentos
(nombre, director, secretario, direccin postal, los profesores que hay asignados, etc.) y
una operacin que nos diga cul es la dotacin econmica de los departamentos (para
evaluarla, necesitaremos saber el nmero de horas de docencia de todos sus profesores).
De los profesores, aparte de los datos identificadores (el nombre y los apellidos, el despa-
cho, el correo electrnico, etc.), necesitaremos poder consultar el nombre de las asigna-
turas que imparten y las horas de docencia que realizan en estas asignaturas.
Por una parte, tendramos que definir las estructuras de datos que necesitaramos en
nuestra aplicacin (departamento, profesor y asignatura) y, para cada una de stas, debe-
ramos definir una estructura de datos para almacenarlas todas.
Despus necesitaramos una estructura de datos que nos permitiera representar las rela-
ciones entre los departamentos y los profesores, y otra para representar la relacin entre
los profesores y las asignaturas.
Finalmente, tendramos que implementar las operaciones que nos permitieran realizar
las funcionalidades pedidas, y tambin otras operaciones que nos sirviesen para nave-
gar entre las relaciones almacenadas.
En este caso, lo que tendramos que hacer es identificar cada entidad (departamento, pro-
fesor y asignatura) y utilizar tres mdulos diferentes en los que se definiran las propie-
dades de cada entidad y se implementaran las funcionalidades por separado.
Por ejemplo, en la operacin del departamento de clculo de las horas lectivas (para cal-
cular la asignacin), en vez de tener que navegar por toda la estructura de datos para sa-
ber si un profesor es o no del departamento, puesto que cada departamento ya est
relacionado con sus profesores, slo hara falta pedirles las horas lectivas y sumarlas.
Una vez definidas estas entidades en nuestra aplicacin de gestin, tendramos tantos ob-
jetos de tipo Profesor como profesores haya, cada uno de los cuales con los datos que
lo definen, y tantos objetos de tipo Departamento como departamentos haya en el sis-
tema.
En este caso, no sera necesaria una estructura que representara las relaciones, ya que los
objetos ya estn relacionados entre s.
FUOC PID_00161674 12 Introduccin a la orientacin a objetos
Utilizando otra vez el ejemplo de los simuladores, podemos decir que es muy
frecuente que se aprovechen piezas de simulaciones anteriores a la hora de
construir simuladores para hardware nuevo. Sin embargo, vistas las tcnicas
que se utilizaban en la programacin clsica, el nico mecanismo de reutiliza-
cin posible era crear bibliotecas de funcionalidades que se podan invocar
desde diferentes simulaciones (programas).
Para ejemplarizar mejor el concepto de reutilizacin de cdigo, podemos Las listas desplegables...
hablar de las interfaces grficas de usuario. Esta coleccin de elementos
... nos permiten seleccionar
que utilizamos cuando desarrollamos aplicaciones grficas (mens, botones, una opcin entre las que se
muestran cuando se despliega
cuadros de texto, etc.) no los programamos cada vez, sino que los tomamos la lista.
de un repositorio que los creadores del sistema operativo o el lenguaje de
programacin nos ofrecen. Si los tuviramos que implementar nosotros,
aparte de que deberamos tener un gran conocimiento sobre este tema,
necesitaramos mucho ms tiempo, ya que estos elementos los utilizamos
muchas veces en nuestro programa.
Los mens...
Como podemos ver, estos elementos pueden ser identificados como objetos,
ya que tienen un texto (el nombre del botn, el texto de los mens, etc.), un
FUOC PID_00161674 14 Introduccin a la orientacin a objetos
Lenguajes que se desarrollaron entre 1954 y 1958. Con stos se produjo un sal-
to en la abstraccin a la hora de programar, ya que anteriormente se utilizaba
el lenguaje ensamblador, que requera un buen conocimiento de la mquina
en la que se ejecutara el cdigo. Algunos ejemplos de estos lenguajes son For-
tran I, Algol 58 o IPL V: todos estaban basados en expresiones matemticas y,
por lo tanto, su dominio de aplicacin estaba centrado en el clculo y las apli-
caciones cientficas y de ingeniera.
Comprende los lenguajes creados entre 1962 y 1970. En esta poca, los costes
del hardware continan abaratndose, lo cual hace que las aplicaciones infor-
mticas lleguen cada vez ms a mbitos ms distintos. Esta diversificacin en los
campos de trabajo comporta que se tenga que trabajar con tipos de datos dife-
rentes de los puramente matemticos, y cambiantes de una aplicacin a otra.
Por este motivo, en esta poca aparece el concepto de tipo abstracto de datos,
que permite al programador especificar un tipo adecuado para cada problema
y dotarlo de significado mediante un conjunto de operaciones sobre este tipo
de dato.
Otro concepto que no exista era el de la visibilidad de los datos. Por lo tanto,
nada impeda que diferentes mdulos modificasen directamente los datos de
otros mdulos (en lnea discontinua en el diagrama anterior).
El primer lenguaje orientado a objetos fue SIMULA 67. Fue creado por cient-
ficos noruegos (Nygaard y Gahl) que, despus de probar otros lenguajes de ter-
cera generacin, decidieron crear un lenguaje que les permitiera realizar todo
lo que los otros no les permitan a causa de las limitaciones que tenan.
Desde que aparecieron los lenguajes orientados a objetos, stos han ido apor-
tando funcionalidades nuevas a la programacin orientada a objetos en ver-
siones sucesivas, como las clases abstractas, los mtodos static o la genericidad.
Veremos todos estos conceptos en los prximos mdulos.
Tipificacin estricta
Encapsulamiento
Cualquier objeto que intente consultar o establecer la fecha de este objeto, lo tendr que
hacer mediante las operaciones destinadas a esta finalidad y no podr acceder directa-
mente a los atributos que representan el da, el mes y el ao.
Genericidad
Herencia
Propiedad que nos permite definir una clase segn otra u otras de manera
que la clase heredera tenga el mismo comportamiento y las caractersticas
que la clase de la cual hereda, ms las caractersticas y el comportamiento
que el programador le quiera aadir.
Por ejemplo, podramos definir una clase Persona con los atributos y mtodos corres-
pondientes y dos clases ms, Estudiante y Profesor, que hereden de la clase Persona.
Las tres clases tendran una parte comn, y las clases Estudiante y Profesor aadiran
otros mtodos y atributos especficos para cada una de stas.
Polimorfismo
Resumen
En este mdulo, hemos ofrecido una visin genrica del contexto en el que
naci la orientacin a objetos y cmo se ha ido desarrollado hasta llegar a lo
que hoy conocemos como tal.
La genericidad, que nos permite trabajar con clases que aceptan parme-
tros de diferentes tipos y nos permite ampliar, as, el rango de posibles uti-
lizaciones de nuestras clases.
FUOC PID_00161674 22 Introduccin a la orientacin a objetos
Finalmente, hemos comentado que hoy da, vista la gran utilizacin de len-
guajes de programacin orientada a objetos, estn apareciendo lenguajes que
incorporan otras caractersticas que, aunque no son imprescindibles, son muy
tiles para el desarrollador.
FUOC PID_00161674 23 Introduccin a la orientacin a objetos
Ejercicios de autoevaluacin
1. A partir de la lectura del ejemplo de profesores y departamentos del apartado 2.1, mencio-
nad algunas de las ventajas del paradigma de la orientacin a objetos respecto del enfoque
clsico.
2. Imaginad que se os pide ampliar el ejemplo anterior de manera que haya dos tipos dife-
rentes de profesores, los investigadores y los docentes. Los profesores investigadores estn
asignados a un grupo de investigacin y tienen una remuneracin fija, y los profesores do-
centes dan clase en diferentes asignaturas con un sueldo variable, dependiendo del nme-
ro de horas de clase que den. Todos los profesores tienen asignado un despacho de trabajo,
una direccin de correo electrnico y un centro.
a) Qu propiedad de los lenguajes de programacin orientada a objetos objeto tendra-
mos que utilizar para implementar las clases Profesor, Investigador y Docente?
b) Explicad en qu consiste esta propiedad.
c) Qu propiedad de los lenguajes de programacin orientada a objetos tendramos que
utilizar para implementar el mtodo de clculo de sueldos?
d) Explicad en qu consiste esta propiedad.
Solucionario
1. En el contexto concreto del ejemplo, utilizar el enfoque de orientacin a objetos simplifica
el diseo de la aplicacin y facilita su modificacin posterior.
Adems, la orientacin a objetos presenta ventajas como la posibilidad de reutilizar clases
ya implementadas o de repartir las tareas de implementacin entre miembros de un mis-
mo equipo con ms facilidad.
2.
a) La propiedad que se tiene que utilizar es la herencia, para tener una entidad denominada
Profesor con el despacho, el correo electrnico y el centro, y tambin los mtodos nece-
sarios para acceder a los datos internos de stos.
Aparte, tendramos otra entidad denominada Investigador, que relacionaramos con
el grupo de investigacin el enunciado no dice nada sobre los atributos y mtodos de
ste, y tambin anotaramos su sueldo.
Finalmente tendramos una entidad, Docente, que estara relacionada con las asignaturas
en las que imparte docencia (que deberan tener un atributo que indicara el nmero de
horas lectivas), un atributo que representara el precio de las horas lectivas.
b) La herencia nos permite definir una entidad nueva (clase) a partir de otra. La clase nue-
va tiene las mismas caractersticas que la clase a partir de la cual se define, y adems aporta
caractersticas que la hacen diferente.
La herencia potencia reutilizar el cdigo.
c) El polimorfismo es la propiedad que se debe utilizar para que dos entidades respondan
de manera diferente a la invocacin del mismo mtodo, el clculo del sueldo. En el caso
de los investigadores, se tiene que consultar el sueldo que tiene asignado, y en el caso de
los profesores docentes hay que saber el nmero de horas en las que imparte clases y se
tiene que multiplicar por el precio de las horas lectivas que tiene almacenado.
d) El polimorfismo nos permite separar la funcionalidad ofrecida del algoritmo necesario
para ofrecerla.
Glosario
encapsulamiento m Caracterstica de los mdulos que permite abstraer la gestin de la in-
formacin de stos de la representacin interna de la informacin que contienen.
herencia f Caracterstica de la programacin orientada a objetos por la cual una clase reuti-
liza la definicin de otra de la cual procede.
orientacin a objetos f Enfoque para desarrollar aplicaciones en las que el mundo real se
representa mediante mdulos de compilacin separada, denominados clases, que se relacio-
nan entre s.
reutilizacin f Propiedad por la cual la misma pieza de software se puede utilizar distintas
veces en diferentes aplicaciones.
Bibliografa
Booch, G. (1994). Object oriented analysis and design with applications. California: The
Benjamin Cummings Publishing Company.
Wikipedia <http://www.wikipedia.org>