Vous êtes sur la page 1sur 13

programacion

Aprender programacin orientada a objetos es esencial para


poder desarrollar con los frameworks modernos de PHP
como Laravel o Symfony. PHP dej hace bastante tiempo de
ser un lenguaje de plantillas para construir sitios personales
para convertirse en un poderoso lenguaje orientado a
objetos y uno de los lenguajes ms populares de la
actualidad: Programming Languages and GitHub.

De hecho la mayora de los sitios funcionan en PHP y hoy en


da existen diferentes motores de plantillas escritos en PHP
como Blade o Twig. Pero regresando al tema de OOP (Object
Oriented Programming), primero que nada debemos
entender el por qu necesitamos clases y objetos:

Las clases nos permiten agrupar informacin y acciones que


podemos ejecutar con dicha informacin.

Veamos un ejemplo:

Tenemos la siguiente informacin: nombre, apellido y


fecha de nacimiento.
Requerimos de las siguientes acciones:
o Mostrar el nombre completo de la persona
o Mostrar la edad de la persona
Como puedes ver las acciones que necesitamos
ejecutar estn ligadas a la informacin de la persona. Por
ejemplo: nombre completo requiere obtener el primer
nombre y el apellido, mientras que calcular la edad
depende de la fecha de nacimiento.

Ahora suponiendo que slo conoces programacin


estructurada resolvers el problema anterior de esta forma:

Programacin Orientada a Objetos


Descubre la programacin orientada a objetos y resuelve problemas con
sistemas computacionales en este curso impartido por el Instituto
Politcnico Nacional (IPN).

Archived
Future Dates To Be Announced

Enroll Now, Programacin Orientada a Objetos


I would like to receive email from MxicoX and learn about other offerings related to
Programacin Orientada a Objetos.
Length: 4 weeks
Effort: 12 horas/semana
Price: FREE
Institution: MxicoX
Subject: Computer Science
Level: Introductory
Languages: Espaol

Video Transcripts: Espaol


Share this course with a friend
Share this course on facebookShare this course on twitterShare this course on
linkedinShare this course on google plusShare this course via email

Prerequisites
Ninguno

27 Reviews2.5/5
About this course
Skip Course Description
This is an Archived Course
EdX keeps courses open for enrollment after they end to allow learners to explore
content and continue learning. All features and materials may not be available, and
course content will not be updated. Check back often to see when new course start
dates are announced.

Descubre la programacin orientada a objetos y resuelve problemas con sistemas


computacionales.

En este curso trabajars con los fundamentos de la programacin orientada a


objetos para la resolucin de problemas en sistemas computacionales.

Tu empeo y dedicacin sern cruciales para culminar con xito las metas que
hemos diseado para ti, por lo que debers dedicarle 12 horas de estudio a la
semana; administra tu tiempo adecuadamente. Te sugerimos realizar un plan de
trabajo para que consideres las fechas lmites de las actividades y evitar atrasos.
Por otra parte es importante que pongas mucha atencin en todos los recursos
que te ofrecemos, los cuales refuerzan tu conocimiento para culminar el curso
satisfactoriamente.

Para facilitar la comprensin y asimilacin de los contenidos del curso, hemos


diseado videos, ilustraciones, animaciones, tutoriales, documentos adicionales y
ejemplos que debes analizar y relacionar con todo lo que haces en tu vida diaria.
Asimismo, pondrs en prctica tus conocimientos mediante actividades que te
servirn para conocer tu nivel de dominio de cada apartado y te servirn para
acreditar tu curso.

See moreabout Programacin Orientada a Objetos

What you'll learn


Qu aprender?
Representar el concepto de algoritmo en ejercicios de programacin.
Identificar elementos de programacin (variables, funciones, operaciones,
sentencias de control) para el desarrollo de cdigo escrito en lenguaje Java.
Ordenar lneas de cdigo en lenguaje Java (sintaxis, semntica) para el desarrollo
de sistemas computacionales.
Reconocer la aplicacin del concepto de programacin orientada a objetos
(abstraccin, polimorfismo, herencia y encapsulamiento) en el modelado de
soluciones para problemas computacionales.
Conocer temas avanzados de Java (interfaces, excepciones, concurrencia,
palabras reservadas) para la programacin orientada a objeto.
Muchos de los objetos pre-diseados de los lenguajes de programacin actuales permiten la
agrupacin en bibliotecas o libreras, sin embargo, muchos de estos lenguajes permiten al
usuario la creacin de sus propias bibliotecas.
Est basada en varias tcnicas,
incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamiento.
Su uso se populariz a principios de la dcada de 1990. En la actualidad, existe una gran
variedad de lenguajes de programacin que soportan la orientacin a objetos.
UNA FORMA NUEVA DE PENSAR Es muy importante destacar que cuando hacemos referencia a la
programacin orientada a objetos no estamos hablando de unas cuantas caractersticas nuevas
aadidas a un lenguaje de programacin. Estamos hablando de una nueva forma de pensar acerca
del proceso de descomposicin de problemas y de desarrollo de soluciones de programacin. La
programacin orientada a objetos surge en la historia como un intento para dominar la
complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a
esta complejidad ha sido empleando lo que llamamos programacin estructurada, que consiste en
descomponer el problema objeto de resolucin en subproblemas y ms subproblemas hasta llegar
a acciones muy simples y fciles de codificar. Se trata de descomponer el problema en acciones,
en verbos. En el ejemplo de un programa que resuelva ecuaciones de segundo grado,
descomponamos el problema en las siguientes acciones: primero, pedir el valor de los
coeficientes a, b y c; despus, calcular el valor del discriminante; y por ltimo, en funcin del signo
del discriminante, calcular ninguna, una o dos races. Como podemos ver, descomponamos el
problema en acciones, en verbos; por ejemplo el verbo pedir, el verbo hallar, el verbo comprobar,
el verbo calcular La programacin orientada a objetos es otra forma de descomponer problemas.
Este nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no en lo
que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos a intentar
simular ese escenario en nuestro programa. Los lenguajes de programacin tradicionales no
orientados a objetos, como C, Pascal, BASIC, o Modula-2, basan su funcionamiento en el concepto
de procedimiento o funcin. Una funcin es simplemente un conjunto de instrucciones que
operan sobre unos argumentos y producen un resultado. De este modo, un programa no es ms
que una sucesin de llamadas a funciones, ya sean stas del sistema operativo, proporcionadas
por el propio lenguaje, o desarrolladas por el mismo usuario. 3 En el caso de los lenguajes
orientados a objetos, como es el caso de C++ y Java, el elemento bsico no es la funcin, sino un
ente denominado precisamente objeto. Un objeto es la representacin en un programa de un
concepto, y contiene toda la informacin necesaria para abstraerlo: datos que describen sus
atributos y operaciones que pueden realizarse sobre los mismos. La programacin orientada a
objetos es una nueva forma de pensar, una manera distinta de enfocar los problemas. Ah radica la
dificultad de aprender un lenguaje totalmente orientado a objetos, como es Java, sin conocer
previamente los pilares de la programacin orientada a objetos. Hecha esta importante aclaracin,
conviene destacar que Java, ms que un lenguaje orientado a objetos, es un lenguaje de objetos.
Java incorpora el uso de la orientacin a objetos como uno de los pilares bsicos y fundamentales
del lenguaje. Esto constituye una importante diferencia con respecto a C++. C++ est pensado para
su utilizacin como lenguaje orientado a objetos, pero tambin es cierto que con C++ se puede
escribir cdigo sin haber odo nada de la programacin orientada a objetos. Esta situacin no se da
en Java, dotado desde las primeras etapas de su diseo de esta filosofa, y donde no cabe obviar la
orientacin a objetos para el desarrollo de programas, por sencillos que stos sean. Al contrario
que en C++, en Java nada se puede hacer sin usar al menos un objeto. 4 UN PRIMER EJEMPLO Si
nos detenemos a pensar sobre cmo se nos plantea un problema cualquiera en la realidad
podremos ver que lo que hay en la realidad son entidades (otros nombres que podramos usar
para describir lo que aqu llamo entidades son agentes u objetos). Estas entidades poseen un
conjunto de propiedades o atributos, y un conjunto de mtodos mediante los cuales muestran su
comportamiento. Y no slo eso, tambin podremos descubrir, a poco que nos fijemos, todo un
conjunto de interrelaciones entre las entidades, guiadas por el intercambio de mensajes; las
entidades del problema responden a estos mensajes mediante la ejecucin de ciertas acciones. El
siguiente ejemplo, aunque pueda parecer un poco extrao, creo que aclarar algunos conceptos y
nos servir como introduccin para desarrollarlos con profundidad. 4 Imaginemos la siguiente
situacin: un domingo por la tarde estoy en casa viendo la televisin, y de repente mi madre
siente un fuerte dolor de cabeza; como es natural, lo primero que hago es tratar de encontrar una
caja de aspirinas. Lo que acabo de describir es una situacin que probablemente no resulte muy
extraa a muchos de nosotros. Vamos a verla en clave de objetos: el objeto hijo ha recibido un
mensaje procedente del objeto madre. El objeto hijo responde al mensaje o evento ocurrido
mediante una accin: buscar aspirinas. La madre no tiene que decirle al hijo dnde debe buscar, es
responsabilidad del hijo resolver el problema como considere ms oportuno. Al objeto madre le
basta con haber emitido un mensaje. Continuemos con la historia. El hijo no encuentra aspirinas
en el botiqun y decide acudir a la farmacia de guardia ms cercana para comprar aspirinas. En la
farmacia es atendido por una seorita que le pregunta qu desea, a lo que el hijo responde: "una
caja de aspirinas, por favor". La farmacutica desaparece para regresar al poco tiempo con una
caja de aspirinas en la mano. El hijo paga el importe, se despide y vuelve a su casa. All le da un
comprimido a su madre, la cual al cabo de un rato comienza a experimentar una notable mejora
hasta la completa desaparicin del dolor de cabeza. El hijo, como objeto responsable de un
cometido, sabe lo que debe hacer hasta conseguir una aspirina. Para ello entra en relacin con un
nuevo objeto, la farmacutica, quien responde al mensaje o evento de peticin del objeto hijo con
la bsqueda de la aspirina. El objeto farmacutica es ahora el responsable de la bsqueda de la
aspirina. El objeto farmacutica lanza un mensaje al objeto hijo solicitando el pago del importe, y
el objeto hijo responde a tal evento con la accin de pagar. Como hemos podido ver, en esta
situacin nos hemos encontrado con objetos que se diferenciaban de los dems por un conjunto
de caractersticas o propiedades, y por un conjunto de acciones que realizaban en respuesta a
unos eventos que se originaban en otros objetos o en el entorno. Tambin podemos darnos
cuenta de que, aunque todos los objetos tienen propiedades distintas, como el color del cabello, el
grado de simpata o el peso, todos tienen un 5 conjunto de atributos en comn por ser ejemplos
de una entidad superior llamada ser humano. A este patrn de objetos (en nuestro caso ser
humano) lo llamaremos clase. Con este ejemplo espero que se entienda que los objetos son
instancias o casos concretos de las clases, que no son ms que plantillas que definen las variables y
los mtodos comunes a todos los objetos de un cierto tipo. La clase ser humano tendr, entre
sus muchas variables miembro o variables que la componen: color del cabello, color de los ojos,
estatura, peso, fecha de nacimiento, etc. A partir de una clase se podrn generar todos los objetos
que se deseen especificando valores particulares para cada una de las variables definida por la
clase. As, encontraremos el objeto farmacutica, cuyo color de cabello es rubio, color de ojos azul,
estatura 175 cm., peso 50 Kg., y as sucesivamente. A continuacin veremos con ms detalle qu
son los objetos, las clases, los mensajes y otros conceptos bsicos de la programacin orientada a
objetos. 5 QU ES UN OBJETO? Un objeto no es ms que un conjunto de variables (o datos) y
mtodos (o funciones) relacionados entre s. Los objetos en programacin se usan para modelar
objetos o entidades del mundo real (el objeto hijo, madre, o farmacutica, por ejemplo). Un
objeto es, por tanto, la representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y operaciones que
pueden realizarse sobre los mismos. La siguiente figura muestra una representacin visual de un
objeto. Representacin visual de un objeto 6 Los atributos del objeto (estado) y lo que el objeto
puede hacer (comportamiento) estn expresados por las variables y los mtodos que componen el
objeto respectivamente. Por ejemplo, un objeto que modelase una bicicleta en el mundo real
tendra variables que indicararan el estado actual de la bicicleta: su velocidad es de 20 km/h, su
cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5. Estas variables se conocen formalmente
como variables instancia o variables miembro porque contienen el estado de un objeto bicicleta
particular y, en programacin orientada a objetos, un objeto particular se denomina una instancia.
Adems de estas variables, el objeto bicicleta podra tener mtodos para frenar, cambiar la
cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendra que tener un mtodo para
cambiar su velocidad pues sta es funcin de la cadencia de pedaleo, la marcha en la que est y de
si los frenos estn siendo utilizados o no, entre otros muchos factores). Estos mtodos se
denominan formalmente mtodos instancia o mtodos miembro, ya que cambian el estado de
una instancia u objeto bicicleta particular. La siguiente figura muestra una bicicleta modelada
como un objeto: El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro
del objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del programa. Este
hecho de empaquetar o proteger las variables miembro con los mtodos miembro se denomina
encapsulacin. Este dibujo conceptual que muestra el ncleo de variables miembro del objeto
protegido por una membrana protectora de mtodos o funciones miembro es la representacin
ideal de un objeto y es el ideal que los programadores de Bicicleta modelada como un objeto:
Atributos: Velocidad Cadencia Marcha Mtodos: Cambiar marcha Frenar Cambiar
cadencia 7 objetos suelen buscar. Sin embargo, debemos matizarlo. A menudo, por razones
prcticas, es posible que un objeto desee exponer alguna de sus variables miembro, o proteger
otras de sus propios mtodos o funciones miembro. Por ejemplo, Java permite establecer 4
niveles de proteccin de las variables y de las funciones miembro para casos como ste. Los
niveles de proteccin determinan qu objetos y clases pueden acceder a qu variables o a qu
mtodos. De cualquier forma, el hecho de encapsular las variables y las funciones miembro
relacionadas proporciona dos importantes beneficios a los programadores de aplicaciones:
Capacidad de crear mdulos: El cdigo fuente de un objeto puede escribirse y mantenerse
independiente del cdigo fuente del resto de los objetos. De esta forma, un objeto puede pasarse
fcilmente de una parte a otra del programa. Podemos dejar nuestra bicicleta a un amigo, y sta
seguir funcionando. Proteccin de informacin: Un objeto tendr una interfaz pblica
perfectamente definida que otros objetos podrn usar para comunicarse con l. De esta forma, los
objetos pueden mantener informacin privada y pueden cambiar el modo de operar de sus
funciones miembros sin que esto afecte a otros objetos que usen estas funciones miembro. Es
decir, no necesitamos entender cmo funciona el mecanismo de cambio de marcha para hacer
uso de l. 6 QU ES UN MENSAJE? Normalmente un nico objeto por s solo no es muy til. En
general, un objeto aparece como un componente ms de un programa o una aplicacin que
contiene otros muchos objetos. Es precisamente haciendo uso de esta interaccin como los
programadores consiguen una funcionalidad de mayor orden y modelar comportamientos mucho
ms complejos. Una bicicleta (a partir de ahora particularizaremos) colgada de un gancho en el
garaje no es ms que una estructura de aleacin de titanio y un poco de goma. Por s sola, tu
bicicleta (por poner una bicicleta en concreto) es incapaz de desarrollar ninguna actividad. Tu
bicicleta es realmente til en tanto que otro objeto (t) interacta con ella (pedalea). 8 Los objetos
de un programa interactan y se comunican entre ellos por medio de mensajes. Cuando un objeto
A quiere que otro objeto B ejecute una de sus funciones miembro (mtodos de B), el objeto A
manda un mensaje al objeto B. En ocasiones, el objeto que recibe el mensaje necesita ms
informacin para saber exactamente lo que tiene que hacer; por ejemplo, cuando se desea
cambiar la marcha de una bicicleta, se debe indicar la marcha a la que se quiere cambiar. Esta
informacin se pasa junto con el mensaje en forma de parmetro. La siguiente figura muestra las
tres partes que componen un mensaje: 1. El objeto al cual se manda el mensaje (TuBicicleta). 2. El
mtodo o funcin miembro que debe ejecutar (CambiarDeMarcha). 3. Los parmetros que
necesita ese mtodo (Marcha) Estas tres partes del mensaje (objeto destinatario, mtodo y
parmetros) son suficiente informacin para que el objeto que recibe el mensaje ejecute el
mtodo o la funcin miembro solicitada. Los mensajes proporcionan dos ventajas importantes: El
Objeto T manda el mensaje CambiarDeMarcha con el parmetro Marcha al Objeto
TuBicicleta. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones miembro
(mtodos de B), el objeto A manda un mensaje al objeto B. 9 El comportamiento de un objeto
est completamente determinado (a excepcin del acceso directo a variables miembro pblicas)
por sus mtodos, as que los mensajes representan todas las posibles interacciones que pueden
realizarse entre objetos. Los objetos no necesitan formar parte del mismo proceso, ni siquiera
residir en un mismo ordenador para mandarse mensajes entre ellos (y de esta forma interactuar).
7 QU ES UNA CLASE? Normalmente en el mundo real existen varios objetos de un mismo tipo, o
como diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas
bicicletas que existen en el mundo. Usando la terminologa de la programacin orientada a
objetos, diremos que mi bicicleta es una instancia de la clase de objetos conocida como bicicletas.
Todas las bicicletas tienen algunos estados o atributos (color, marcha actual, cadencia actual, dos
ruedas) y algunos mtodos (cambiar de marcha, frenar) en comn. Sin embargo, el estado
particular de cada bicicleta es independiente del estado de las dems bicicletas. La
particularizacin de estos atributos puede ser diferente. Es decir, una bicicleta podr ser azul, y
otra roja, pero ambas tienen en comn el hecho de tener una variable color. De este modo
podemos definir una plantilla de variables y mtodos para todas las bicicletas. Las plantillas para
crear objetos son denominadas clases. Una clase es una plantilla que define las variables y los
mtodos que son comunes para todos los objetos de un cierto tipo. En nuestro ejemplo, la clase
bicicleta definira variables miembro comunes a todas las bicicletas, como la marcha actual, la
cadencia actual, etc. Esta clase tambin debe declarar e implementar los mtodos o funciones
miembro que permiten al ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo,
como se muestra en la siguiente figura: 10 Despus de haber creado la clase bicicleta, podemos
crear cualquier nmero de objetos bicicleta a partir de la clase. Cuando creamos una instancia de
una clase, el sistema reserva suficiente memoria para el objeto con todas sus variables miembro.
Cada instancia tiene su propia copia de las variables miembro definidas en la clase. 8 HERENCIA
Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones de introducir
otra de las caractersticas bsicas de la programacin orientada a objetos: el uso de la herencia. El
mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las clases
que derivan de otras heredan automticamente todo su comportamiento, pero adems pueden
introducir caractersticas particulares propias que las diferencian. Definicin de la clase bicicleta
OBJETOS O INSTANCIAS DE LA CLASE BICICLETAS 11 Como hemos visto, los objetos se definen a
partir de clases. Con el mero hecho de conocer a qu clase pertenece un objeto, ya se sabe
bastante sobre l. Puede que no sepamos lo que es la Espada, pero si nos dicen que es una
bicicleta, ya sabremos que tiene dos ruedas, manillar, pedales... La programacin orientada a
objetos va ms all, permitindonos definir clases a partir de otras clases ya construidas. Por
ejemplo, las bicicletas de montaa, las de carretera y los tndems son todos, en definitiva,
bicicletas. En trminos de programacin orientada a objetos, son subclases o clases derivadas de la
clase bicicleta. Anlogamente, la clase bicicleta es la clase base o superclase de las bicicletas de
montaa, las de carretera y los tndems. Esta relacin se muestra en la siguiente figura. Cada
subclase hereda los estados (en forma de declaracin de variables) de la superclase de la cual
deriva. Las bicicletas de montaa, las de carretera y los tndems comparten algunos estados:
cadencia, velocidad... Adems, cada subclase hereda los mtodos de su superclase. LA HERENCIA
EN LA PROG. ORIENTADA A OBJETOS 12 Las bicicletas de montaa, las de carretera y los tndems
comparten algunos comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo. Sin
embargo, las clases derivadas no se encuentran limitadas por los estados y comportamientos que
heredan de su superclase. Muy al contrario, estas subclases pueden aadir variables y mtodos a
aquellas que han heredado. Los tndems tienen dos asientos y dos manillares; algunas bicicletas
de montaa tienen una catalina adicional con un conjunto de marchas con relaciones de
transmisin mucho ms cortas. Las clases derivadas pueden incluso sobrescribir los mtodos
heredados y proporcionar implementaciones ms especializadas para esos mtodos. Por ejemplo,
si nuestra bicicleta de montaa tuviera una catalina extra, podramos sobrescribir el mtodo
CambiarDeMarcha para poder usar esas nuevas marchas. Adems, no estamos limitados a un
nico nivel de herencia. El rbol de herencias o jerarqua de clases puede ser tan extenso como
necesitemos. Los mtodos y las variables miembro se heredarn hacia abajo a travs de todos los
niveles de la jerarqua. Normalmente, cuanto ms abajo est una clase en la jerarqua de clases,
ms especializado es su comportamiento. En nuestro ejemplo, podramos hacer que la clase
bicicleta derivase de una superclase de vehculos. La herencia es una herramienta clave para
abordar la resolucin de un problema de forma organizada, pues permite definir una relacin
jerrquica entre todos los conceptos que se estn manejando. Es posible emplear esta tcnica
para descomponer un problema de cierta magnitud en un conjunto de problemas subordinados a
l. La resolucin del problema original se consigue cuando se han resuelto cada uno de los
problemas subordinados, que a su vez pueden contener otros. Por consiguiente, la capacidad de
descomponer un problema o concepto en un conjunto de objetos relacionados entre s cuyo
comportamiento es fcilmente identificable puede ser extraordinariamente til para el desarrollo
de programas informticos. La herencia proporciona las siguientes ventajas: Las clases derivadas
o subclases proporcionan comportamientos especializados a partir de los elementos comunes que
hereda de la clase base. A travs del 13 mecanismo de herencia los programadores pueden
reutilizar el cdigo de la superclase tantas veces como sea necesario. Los programadores pueden
implementar las llamadas superclases abstractas, que definen comportamientos genricos. Las
clases abstractas definen e implementan parcialmente comportamientos, pero gran parte de estos
comportamientos no se definen ni se implementan totalmente. De esta forma, otros
programadores pueden hacer uso de estas superclases detallando esos comportamientos con
subclases especializadas. El propsito de una clase abstracta es servir de modelo base para la
creacin de otras clases derivadas, pero cuya implantacin depende de las caractersticas
particulares de cada una de ellas. Un ejemplo de clase abstracta podra ser en nuestro caso la clase
vehculos. Esta clase sera una clase base genrica, a partir de la cual podramos ir creando todo
tipo de clases derivadas

Actualmente una de las reas ms candentes en la industria y en el mbito acadmico es la orientacin a


objetos. La orientacin a objetos promete mejoras de amplio alcance en la forma
de diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y
preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad
del cdigo y reusabilidad, cdigo que es dificil de modificar, ciclos de desarrollo largos y tecnicas de
codificacion no intuituvas.
Un lenguaje orientado a objetos ataca estos problemas. Tiene tres caractersticas basicas: debe estar basado
en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de
estos puntos; muchos menos cumplen los tres. La barrera ms difcil de sortear es usualmente la herencia.
El concepto de programacin orientada a objetos (OOP) no es nuevo, lenguajes clsicos como SmallTalk se
basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y
que la resolucin del problema se realiza en trminos de objetos, un lenguaje se dice que est basado en
objetos si soporta objetos como una caracterstica fundamental del mismo.
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto
como un conjunto complejo de datos y programas que poseen estructura y forman parte de una
organizacin.
Esta definicin especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un
dato simple, sino que contiene en su interior cierto nmero de componentes bin estructurados. En segundo
lugar, cada objeto no es un ente aislado, sino que forma parte de una organizacin jerrquica o de otro tipo.
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cpsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempea un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organizacin y estn formadas esencialmente por
punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma
organizacin y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto
pueden ser heredadas a sus descendientes en la organizacin.
Los mtodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarn
incorporados en forma de programas (cdigo) que el objeto es capaz de ejecutar y que tambin pone a
disposicin de sus descendientes a travs de la herencia.
Encapsulamiento y ocultacin
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos
ellos relacionados entre s, como si estuvieran encerrados conjuntamente en una cpsula. Esta propiedad
(encapsulamiento), es una de las caractersticas fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores
conozcan cmo est distribuda la informacin o qu informacin hay disponible. Esta propiedad de los
objetos se denomina ocultacin de la informacin.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que
contiene. Si as fuera no se podra hacer gran cosa con l. Lo que sucede es que las peticiones de
informacin a un objeto. deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la
operacin pertinente. La respuesta a estas ordenes ser la informacin requerida, siempre que el objeto
considere que quien enva el mensaje est autorizado para obtenerla.
El hecho de que cada objeto sea una cpsula facilita enormemente que un objeto determinado pueda ser
transportado a otro punto de la organizacin, o incluso a otra organizacin totalmente diferente que precise de
l. Si el objeto ha sido bien construdo, sus mtodos seguirn funcionando en el nuevo entorno sin problemas.
Esta cualidad hace que la OOP sea muy apta para la reutilizacin de programas.
Organizacin de los objetos
En principio, los objetos forman siempre una organizacin jerrquica, en el sentido de que ciertos objetos son
superiores a otros de cierto modo.
Existen varios tipos tipos de jerarquas: sern simples cuando su estructura pueda ser representada por
medio de un "arbol". En otros casos puede ser ms compleja.
En cualquier caso, sea la estructura simple o compleja, podrn distinguirse en ella tres niveles de objetos.
-La raz de la jerarqua. Se trata de un objeto nico y especial. Este se caracterza por estar en el nivel ms
alto de la estructura y suele recibir un nombre muy genrico, que indica su categora especial, como por
ejemplo objeto madre, Raz o Entidad.
-Los objetos intermedios. Son aquellos que descienden directamente de la raz y que a su vez tienen
descendientes. Representan conjuntos o clases de objetos, que pueden ser muy generales o muy
especializados, segn la aplicacin. Normalmente reciben nombres genricos que denotan al conjunto de
objetos que representan, por ejemplo, VENTANA, CUENTA, FICHERO. En un conjunto reciben el nombre
de clases o tipos si descienden de otra clase o subclase.
-Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no tienen
descendientes. Suelen llamarse casos particulares, instancias o tems porque representan los elementos del
conjunto representado por la clase o subclase a la que pertenecen.
Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".
1. RELACIONES
Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con
aquellos que forman parte de la misma organizacin.
Las hay de dos tipos fundamentales:
-Relaciones jerrquicas. Son esenciales para la existencia misma de la aplicacin porque la construyen. Son
bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado
inmediatamente encima del segundo en la organizacin en la que ambos forman parte; asimismo, si un objeto
es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos
de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).
Una organizacin jerrquica simple puede definirse como aquella en la que un objeto puede tener un solo
padre, mientras que en una organizacion jerrquica compleja un hijo puede tener varios padres).
-Relaciones semnticas. Se refieren a las relaciones que no tienen nada que ver con la organizacin de la que
forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos
en s mismos (de su significado) y no de su posicin en la organizacin.
Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionario informatizado que
permita al usuario obtener la definicin de una palabra cualquiera. Supongamos que, en dicho diccionario, las
palabras son objetos y que la organizacin jerrquica es la que proviene de forma natural de la estructura de
nuestros conocimientos sobre el mundo.
La raz del diccionario podra llamarse TEMAS. De ste trmino genrico descendern tres grandes ramas de
objetos llamadas VIDA, MUNDO y HOMBRE. El primero (vida) comprender
las ciencias biolgicas: Biologa y Medicina. El segundo (mundo), las ciencias de la naturaleza inerte:
las Matemticas, la Fsica, la Qumica y la Geologa. El tercero (hombre) comprender las ciencias humanas:
la Geografa, la Historia, etc.
Veamos un ejemplo: estableceremos la relacin trabajo entre los objetos NEWTON y OPTICA y la
interpretaremos diciendo que significa que Newton trabaj en ptica (vase la fig. 4). La relacin es,
evidentemente, semntica, pus no establece ninguna connotacin jerrquica entre NEWTON y OPTICA y
su interpretacin depende exclusivamente del significado de ambos objetos.
La existencia de esta relacin nos permitir responder a preguntas como:
Quin trabaj en ptica?
En qu trabaj Newton?
Quien trabaj en Fsica?
Las dos primeras se deducen inmediatamente de la existencia de la relacin trabajo. Para la tercera
observamos que si Newton trabaj en ptica automticamente sabemos que trabaj en Fsica, por ser ptica
una rama de la Fsica (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA). Entonces gracias a
la OOP podemos responder a la tercera pregunta sin necesidad de establecer una relacin entre NEWTON y
FISICA, apoyandonos slo en la relacin definida entre NEWTON y OPTICA y en que OPTICA es hijo de
FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad de informacin que tendremos
que definir para todo el diccionario ser mnima.
2. PROPIEDADES
Todo objeto puede tener cierto nmero de propiedades, cada una de las cuales tendr, a su vez, uno o varios
valores. En OOP, las propiedades corresponden a las clsicas "variables" de la programacin estructurada.
Son, por lo tanto, datos encapsulados dentro del objeto, junto con los mtodos (programas) y las relaciones
(punteros a otros objetos). Las propiedades de un objeto pueden tener un valor nico o pueden contener un
conjunto de valores mas o menos estructurados (matrices, vectores, listas, etc.). Adems, los valores pueden
ser de cualquier tipo (numrico, alfabtico, etc.) si el sistema de programacin lo permite.
Pero existe una diferencia con las "variables", y es que las propiedades se pueden heredar de unos objetos a
otros. En consecuencia, un objeto puede tener una propiedad de maneras diferentes:
-Propiedades propias. Estn formadas dentro de la cpsula del objeto.
-Propiedades heredadas. Estan definidas en un objeto diferente, antepasado de ste (padre,"abuelo", etc.). A
veces estas propiedades se llaman propiedades miembro porque el objeto las posee por el mero hecho de
ser miembro de una clase.
3. METODOS
Una operacin que realiza acceso a los datos. Podemos definir mtodo como un programa procedimental o
procedural escrito en cualquier lenguaje, que est asociado a un objeto determinado y cuya ejecucin slo
puede desencadenarse a travs de un mensaje recibido por ste o por sus descendientes.
Son sinnimos de 'mtodo' todos aquellos trminos que se han aplicado tradicionalmente a los programas,
como procedimiento, funcin, rutina, etc. Sin embargo, es conveniente utilizar el trmino 'mtodo' para que se
distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan
fundamentalmente a la forma de invocarlo (nicamente a travs de un mensaje) y a su campo de accin,
limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.
Si los mtodos son programas, se deduce que podran tener argumentos, o parmetros. Puesto que los
mtodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un mtodo de dos maneras
diferentes:
-Mtodos propios. Estn includos dentro de la cpsula del objeto.
-Mtodos heredados. Estan definidos en un objeto diferente, antepasado de ste (padre,"abuelo", etc.). A
veces estos mtodos se llaman mtodos miembro porque el objeto los posee por el mero hecho de ser
miembro de una clase.
Polimorfsmo
Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es otra cosa que la posibilidad
de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno,
con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases
diferentes. Estos objetos recibiran el mismo mensaje global pero responderan a l de formas diferentes; por
ejemplo, un mensaje "+" a un objeto ENTERO significara suma, mientras que para un objeto STRING
significara concatenacin ("pegar" strings uno seguido al otro)
Demonios
Es un tipo especial de mtodos, relativamente poco frecuente en los sistemas de OOP, que se activa
automticamente cuando sucede algo especial. Es decir, es un programa, como los mtodos ordinarios, pero
se diferencia de estos porque su ejecucin no se activa con un mensaje, sino que se desencadena
autmticamente cuando ocurre un suceso determinado: la asignacin de un valor a una propiedad de un
objeto, la lectura de un valor determinado, etc.
Los demonios, cuando existen, se diferencian de otros mtodos por que no son heredables y porque a veces
estn ligados a una de las propiedades de un objeto, mas que al objeto entero.
CONSIDERACIONES FINALES
Beneficios que se obtienen del desarrollo con OOP
Da a da los costos del Hardware decrecen. As surgen nuevas reas de aplicacin cotidianamente:
procesamiento de imgenes y sonido, bases de datos multimediales, automatizacin de oficinas, ambientes
de ingeniera de software, etc. An en las aplicaciones tradicionales encontramos que definir interfases
hombre-mquina "a-la-Windows" suele ser bastante conveniente.
Lamentablemente, los costos de produccin de software siguen aumentando; el mantenimiento y la
modificacin de sistemas complejos suele ser una tarea trabajosa; cada aplicacin, (aunque tenga aspectos
similares a otra) suele encararse como un proyecto nuevo, etc.
Todos estos problemas an no han sido solucionados en forma completa. Pero como los objetos son
portables (tericamente) mientras que la herencia permite la reusabilidad del cdigo orientado a objetos, es
ms sencillo modificar cdigo existente porque los objetos no interaccionan excepto a travs de mensajes; en
consecuencia un cambio en la codificacin de un objeto no afectar la operacin con otro objeto siempre que
los mtodos respectivos permanezcan intactos. La introduccin de tecnologa de objetos como una
herramienta concepual para analizar, disear e implementar aplicaciones permite obtener aplicaciones ms
modificables, fcilmente extendibles y a partir de componentes reusables. Esta reusabilidad del cdigo
disminuye el tiempo que se utiliza en el desarrollo y hace que el desarrollo del software sea mas intuitivo
porque la gente piensa naturalmente en trminos de objetos ms que en trminos de algoritmos de software.
Problemas derivados de la utilizacin de OOP en la actualidad
Un sistema orientado a objetos, por lo visto, puede parecer un paraso virtual. El problema sin embargo surge
en la implementacin de tal sistema. Muchas compaas oyen acerca de los beneficios de un sistema
orientado a objetos e invierten gran cantidad de recursos luego comienzan a darse cuenta que
han impuesto una nueva cultura que es ajena a los programadores actuales. Especficamente los siguientes
temas suelen aparecer repetidamente:
Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en una forma nica. Involucra la
conceptualizacin de todos los elementos de un programa, desde subsistemas a los datos, en la forma de
objetos. Toda la comunicacin entre los objetos debe realizarse en la forma de mensajes. Esta no es la forma
en que estn escritos los programas orientados a objetos actualmente; al hacer la transicin a un sistema
orientado a objetos la mayora de los programadores deben capacitarse nuevamente antes de poder usarlo.
Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos en un sistema orientado a
objetos, en la prctica existen muchas dependencias. Muchos lenguajes orientados a objetos estn
compitiendo actualmente para dominar el mercado. Cambiar el lenguaje de implementacin de un sistema
orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto de herencia multiple
mientras que SmallTalk no lo soporta; en consecuencia la eleccin de un lenguaje tiene ramificaciones de
diseo muy importamtes.
Determinacion de las clases. Una clase es un molde que se utiliza para crear nuevos objetos. En
consecuencia es importante crear el conjunto de clases adecuado para un proyecto. Desafortunadamente la
definicin de las clases es ms un arte que una ciencia. Si bien hay muchas jerarquas de clase predefinidas
usualmente se deben crear clases especficas para la aplicacin que se este desarrollando. Luego, en 6
meses 1 ao se da cuenta que las clases que se establecieron no son posibles; en ese caso ser necesario
reestructurar la jerarqua de clases devastando totalmente la planificacin original.
Performance. En un sistema donde todo es un objeto y toda interaccion es a travs de mensajes, el trfico de
mensajes afecta la performance. A medida que la tecnologa avanza y la velocidad de
microprocesamiento, potencia y tamao de la memoria aumentan, la situacion mejorar; pero en la situacin
actual, un diseo de una aplicacin orientada a objetos que no tiene en cuenta la performance no ser viable
comercialmente.
Idealmente, habra una forma de atacar estos problemas eficientemente al mismo tiempo que se obtienen los
beneficios del desarrollo de una estrategia orientada a objetos. Deberia existir una metodologa fcil de
aprender e independiente del lenguaje, y facil de reestructurar que no drene la performance del sistema .
Bibliografa consultada
Revista COMPU MAGAZINE, Nmero 51, Octubre '92
Revista COMPU MAGAZINE, Nmero 50, Septiembre '92
(y diversos apuntes conseguidos de distintas publicaciones)

Leer ms: http://www.monografias.com/trabajos/objetos/objetos.shtml#ixzz4roPovyEV

Vous aimerez peut-être aussi