Вы находитесь на странице: 1из 44

U.N.S.J.

- Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica


Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

ndice
Objetivos: 2
Bibliografa: 2
Historia de los lenguajes orientados a objetos 3
2. Caractersticas Generales del Diseo Orientado a Objetos 5
Lenguaje de Modelamiento Unificado (ULM) 7
Elementos bsicos de la orientacin a objetos: 8
3. OBJETOS 8
Caractersticas fundamentales de un objeto 10
Interacciones entre objetos 13
Diagrama de Comunicacin 13
Diagrama de secuencia 13
Fragmentos combinados 15
4. CLASES 19
5. MTODOS Y MENSAJES 23
6. HERENCIA 24
ALUMNO 27
Egresado 27
7. RELACIONES ENTRE CLASES 31
Asociacin: 32
Agregacin: 34
Relacin de Agregacin 35
Relacin de Composicin 36
Diagrama de clases 36
8. LIGADURA 40
9. Conceptos Claves 41
Polimorfismo 41
Abstraccin 42
Persistencia: 42
Ventajas del Diseo Orientado a Objetos 43

Unidad 1: Diseo Orientado a Objetos 1


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

UNIDAD 1: Diseo Orientado a Objetos

Objetivos:
Al trmino de esta unidad se espera:
- Que el alumno distinga las ventajas de la orientacin a objetos, frente a otros tipos de
diseo.
- Que el alumno Interprete los conceptos de encapsulamiento, abstraccin, reusabilidad y
herencia.
- Que el alumno disee y organice adecuadamente una jerarqua de clases, atendiendo a
los distintos tipos de relaciones entre clases.

Bibliografa:
Programacin Orientada a Objetos. Tcnicas Avanzadas de Programacin. Fontela,
Carlos. Buenos Aires. Editorial Nueva Librera. 2003.

Lenguajes de Programacin Principios y Prctica. Louden, Kenneth C. Mexico, D.F.


Editorial Thomson. 2004.

Modelado de objetos con UML / Pierre-Alain Muller. -- Barcelona: Gestin 2000. 1997.

Modelado y diseo orientados a objetos. Rumbaugh, James. y otros. Madrid : Prentice-


Hall, 1997.

Lenguajes de Programacin Diseo e Implementacin. Terrence Pratt Marvin Zelkowitz.


Editorial Prentice Hall. Hispano americana, S.A.

http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-1.pdf

Unidad 1: Diseo Orientado a Objetos 2


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

1. Introduccin
En la dcada actual, las posibilidades del software estn retrasadas respecto de las del
hardware en un mnimo de dos generaciones de procesadores. En general las
herramientas tcnicas y abstracciones del software convencional se convierten
rpidamente en inadecuadas mientras que los sistemas que requieren software son cada
vez ms grandes y mas complejos. Cada vez son mas sofisticadas las exigencias que
deben satisfacer las aplicaciones, las estructuras de datos a utilizar ms complejas y
mayor la base de usuarios que deben acceder a las aplicaciones. Esto ltimo, es decir
la disponibilidad de aplicaciones para una mayor base de usuarios, requiere que el
software sea ms flexible y ms fcil de usar.
Con el tiempo ha ido creciendo el consenso de que el paradigma de orientacin a objetos
puede ayudar a controlar esta complejidad y aprovechar al mximo el entorno de
sistemas en aplicaciones ms tiles.

La tecnologa orientada a objetos nace en los programas y luego se traslada a distintas


reas, principalmente anlisis y diseo. Si bien esta tecnologa es aplicable a Base de
Datos, Hojas de Clculo, Sistemas Operativos, etc., se debe ser muy cuidadoso en el
anlisis de estos productos pues muchas veces lo nico que poseen es una nica clase,
sin soportar los conceptos de orientacin a objetos.

Historia de los lenguajes orientados a objetos

Pascal

Smalltalk C Pascal
orientado
a
objetos

C++

Java C#
Unidad 1: Diseo Orientado a Objetos 3
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Un cierto nmero de lenguajes de programacin ha contribuido a la evolucin de los


actuales lenguajes orientados a objetos. Simula, desarrollado en los aos 60 como
lenguaje para programar simulaciones, contribuy con el concepto de clase y los
mecanismos de herencia. La fuerza principal que impuls el desarrollo comercial de los
lenguajes orientados a objetos fue el proyecto Smalltalk, a principios de los aos 70. Los
objetivos de Smalltalk incluan el concepto de clases y un interfaz grfico. A travs de los
aos fue evolucionando, y en la actualidad se ha convertido en uno de los lenguajes puros
de mayor aplicacin.
A pesar de este movimiento temprano hacia los lenguajes orientados a objetos, solamente
se lograron pequeas incursiones en la comunidad de la programacin general. El
progreso fuera de los lenguajes procedimentales suceda en forma lenta. El progreso
reciente se ha acelerado debido a las disponibilidades de las extensiones orientadas a
objetos de dos lenguajes de mucho uso, C y PASCAL, como as tambin a las
extensiones para otros lenguajes populares como BASIC y COBOL.

Los lenguajes orientados a objetos se dividen en dos grandes grupos: el grupo de


lenguajes puros orientados a objetos y el grupo de lenguajes hbridos orientados a
objetos. En el grupo de los lenguajes puros orientados a objetos se encuentra el
Smalltalk, Eiffel y Java. Este ltimo adquiri mayor notoriedad a partir de su utilizacin en
la generacin de componentes (Applets) de las pginas WEB.
En el grupo de lenguajes hbridos, las construcciones orientadas a objetos se aaden a un
lenguaje procedimental. Los miembros de este grupo incluyen C++ y los diferentes
lenguajes Pascal orientados a objetos. Una gran cantidad de cdigo de programas ya est
escrito en C y Pascal, por lo que aadir tcnicas orientadas a objetos a un programa ya
existente en un lenguaje conocido es mucho mas fcil que volver a escribir una aplicacin
en un lenguaje completamente nuevo.

En general los lenguajes puros orientados a objetos resaltan el prototipo rpido, mientras
que los hbridos ponen el nfasis en la velocidad de ejecucin y facilitan la incorporacin
de extensiones orientadas a objetos para el programador orientado a procedimientos. Los
lenguajes orientados a objetos ms maduros, como Smalltalk, ofrecen tambin robustas
libreras de clases y excelentes conjuntos de herramientas desarrollo. Estas capacidades
se estn incorporando a los lenguajes hbridos.

C# (C-sharp) es un lenguaje creado por Microsoft y luego estandarizado. Est muy


asociado a la tecnologa .NET de Microsoft, pero nada impide que sea implementado en
otras plataformas.
Algunos autores dicen que C# es un clon de Java. De hecho, se parece a un Java con
notacin C++: maneja interfaces, no soporta herencia mltiple, tiene un modelo de

Unidad 1: Diseo Orientado a Objetos 4


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

memoria con referencias, las excepciones y clases derivan de un ancestro comn, la


transformacin de tipos est controlada y soporta multihilos en forma estndar. Adems
Por el resto, es un lenguaje genuinamente orientado a objetos. Sin embargo, su gran
potencia viene de la enorme cantidad de clases que Microsoft ha construido en el marco
de .NET, por lo cual es difcil imaginarlo como un lenguaje independiente de esta
tecnologa.
De todas maneras, .NET es ms una plataforma que un lenguaje, como tambin puede
afirmarse de Java. Como C# es el lenguaje estrella de la plataforma, podemos analizarlo
en conjunto con ella. Debemos decir que es cierto que .NET toma el modelo de Java en
muchos aspectos. Sin embargo, Microsoft ha hecho un esfuerzo importante para que un
programa C# corriendo sobre el marco de trabajo de .NET sea ms rpido que el
programa equivalente en Java corriendo sobre una JVM en el mismo entorno.1

2. Caractersticas Generales del Diseo Orientado a Objetos


Dice Carlos Fntela2: En la programacin imperativa tradicional, los algoritmos se
describen en base a procesos (ya sea en forma secuencial o mediante concurrencia). Por
ejemplo, se pueden escribir en Pascal o C una serie de subprogramas para el manejo de
pantallas, y sern exactamente eso: procedimientos o funciones que describen cmo se
abre una ventana, cmo se la cierra, cmo se la limpia, etc. As, los algoritmos se
expresan mediante procesos y stos como una secuencia de tareas a realizar por la
computadora. Por eso este tipo de programacin se llama procedimental o imperativa.
La programacin orientada a objetos (P00) encara la resolucin de cada problema desde
otra ptica: la ptica del objeto. As, para resolver el caso anterior se define un objeto
pantalla y se definen todas las acciones (denominadas mtodos) que ese objeto puede
realizar (comportamieto), cada vez que se le enva un cierto mensaje o solicitud. Las
nicas acciones que se le pueden hacer a un objeto vienen dadas por los mtodos. Lo
que se define es el comportamiento de los objetos frente a mensajes o solicitudes
provenientes de otros objetos. Incluso los programas se disparan con el envo de un
mensaje a un objeto.
Desde el punto de vista de los objetos, un programa es un conjunto de objetos
colaborando, o bien, un conjunto de objetos enviando mensajes y respondiendo a otros
mensajes.
Dado que esos mtodos son, en la prctica, muy similares a los procedimientos de la
programacin imperativa tradicional y los mensajes se podran pensar como invocaciones
a esos procedimientos, se podra pensar que simplemente se ha inventado un nuevo
nombre para algo que ya exista anteriormente.
Esto es cierto: las ideas de objetos provienen en gran parte de la abstraccin de datos.
Sin embargo, el paradigma de objetos introduce conceptos nuevos. Adems, es una

1
Fontela, Carlos. Programacin Orientada a Objetos Tcnicas Avanzada de Programacin Pg. 142
2
Fontela, Carlos. Programacin Orientada a Objetos Tcnicas Avanzada de Programacin Pg. 27- 28.
Unidad 1: Diseo Orientado a Objetos 5
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

tcnica ms estructurada que los intentos anteriores de estructuracin. Y es ms modular


y abstracta que los intentos previos de abstraccin de datos y ocultamiento de
implementacin.
La P00 es un paradigma de programacin no imperativa, no procedimental. Se basa en
tcnicas previas, como la abstraccin y el ocultamiento de la implementacin, e incorpora
la herencia, el polimorfismo y otras de menor entidad.

En el paradigma de orientacin a objetos los programas se centran en una entidad bsica,


el objeto, el cual combina los datos (atributos del objeto) con los procedimientos
(mtodos) que actan sobre dichos datos. En segundo lugar, y a diferencia de los
programas tradicionales que utilizan procedimientos que actan sobre un conjunto de
datos pasivos, los objetos interactan entre s enviando mensajes. El programador
orientado a objetos puede agrupar caractersticas comunes de un conjunto de objetos en
clases, a travs de un proceso de abstraccin. Los descendientes de estas clases se
construyen por medio del mecanismo de subclasificacin, permitiendo que sean
heredados los mtodos programados anteriormente y debiendo programar solamente las
diferencias.

La Programacin 0rientada a 0bjetos (POO) no se puede desligar de todo el paradigma


de orientacin a objetos. En efecto, no hay que confundir P00 con el uso de un lenguaje
que soporte P00. Para hacer buena P00 hay que desarrollar todo el sistema utilizando el
paradigma, empezando por un anlisis y un diseo orientados a objetos.

En realidad, la orientacin a objetos debera impactar en todas las tareas propias del
desarrollo de software, no slo en la programacin. Esto se debe a que la POO es ms
natural si se parte del anlisis y el diseo con objetos. Adems esta tecnologa incluye
una serie de mejoras que permite resolver problemas que presentaban las antiguas
metodologas.

En general, el desarrollo de software implica, desde una visin orientada a objetos, una
serie de etapas para hacer: requerimientos, anlisis, diseo, implementacin y prueba.
Los conceptos de ingeniera de software y el proceso de desarrollo de software son
analizados en profundidad en asignaturas de aos superiores, siendo el objetivo de esta
asignatura analizar las caractersticas de los lenguajes orientados a objetos y realizar
aplicaciones en un lenguaje particular.

ACTIVIDAD 1:3
a) Realice una sntesis de los conceptos de abstraccin y ocultamiento de informacin y
de cmo fue evolucionando el uso de estos conceptos.

3
Fontela, Carlos. Programacin Orientada a Objetos Tcnicas Avanzada de Programacin Pg. 16 a 23
Unidad 1: Diseo Orientado a Objetos 6
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

b) Teniendo en cuenta que uno de los objetivos de la orientacin a objetos es la calidad


del software, indique pautas para obtener dicha calidad.

Lenguaje de Modelamiento Unificado (ULM)


Para comprender mejor las aplicaciones orientadas a objetos, vamos a incluir algunos
diagramas que nos permiten entender el sistema de software desde distintas perspectivas
y resolver los problemas que se plantean.

Para eso, utilizaremos como notacin a UML ((Unified Modeling Language o Lenguaje de
Modelamiento Unificado).

UML es un lenguaje que permite la visualizacin, especificacin y documentacin de


sistemas. No es una metodologa sino una notacin, que aglutina distintos enfoques de
orientacin a objetos.

UML 2 construido en el estndar altamente exitoso UML 1.x, el cual se ha convertido en


un estndar de la industria, tanto para el modelado, diseo y construccin de sistemas de
software as como tambin ms negocios generalizados y procesos cientficos.
UML 2 define 13 tipos bsicos de diagramas, divididos en dos grupos generales:

1. Diagramas de Modelado Estructurado4


Los diagramas estructurales definen la arquitectura esttica de un modelo. Ellos se usan
para modelar las Cosas que constituyen un modelo los componentes de clases,
objetos, interfaces y fsicos. Adems se usan para modelar las relaciones y dependencias
entre elementos.
- Los diagramas de paquetes se usan para dividir el modelo en contenedores lgicos o
paquetes y describen las interacciones entre ellos a un nivel ms alto.
- Los diagramas estructurales o de clases definen los bloques de construccin bsica de
un modelo: los materiales generales, clases y tipos que se usan para construir un modelo
completo.
- Los diagramas de objetos muestran como las instancias de elementos estructurales se
relacionan y usan en tiempo de ejecucin.
- Los diagramas de estructuras compuestas proveen un medio de ordenar una
estructura de elementos y focalizar en detalles, construcciones y relaciones internas.

4
http://www.sparxsystems.com.ar/resources/uml2_tutorial.html

Unidad 1: Diseo Orientado a Objetos 7


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

- Los diagramas de componentes se usan para modelar estructuras de alto nivel o ms


complejas, usualmente construidas desde una o ms clases, y provee una interfaz bien
definida.
- Los diagramas de despliegue muestran la disposicin de artefactos significativos
dentro de una configuracin real.

2. Diagramas de Modelado de Comportamiento


Los diagramas de comportamiento capturan las variedades de interaccin y el estado
instantneo dentro de un modelo mientras se ejecuta a travs del tiempo.
- Los diagramas de Casos de Uso se usan para modelar las interacciones del
usuario/sistema. Ellos definen el comportamiento, requisitos y restricciones en la forma de
scripts o escenarios.
- Los diagramas de actividades tienen un amplio nmero de usos, desde definir un flujo
de programa bsico, hasta capturar los puntos de decisin y acciones dentro de cualquier
proceso generalizado.
- Los diagramas de mquina de estados son esenciales para el entendimiento de la
condicin momento a momento o estado de ejecucin de un modelo cuando ste se
ejecuta.

- Los diagramas de comunicaciones muestran la red y la secuencia de mensajes de


comunicaciones entre objetos en tiempo de ejecucin durante una instancia de
colaboracin.
- Los diagramas de secuencia estn estrechamente relacionados a los diagramas de
comunicaciones y muestran la secuencia de mensajes pasadas entre los objetos usando
una lnea de tiempo vertical.
- Los diagramas de tiempos fusionan los diagramas de secuencia y estados para
proveer una vista de un estado del objeto a travs del tiempo y los mensajes que
modifican ese estado.
- Los diagramas de descripcin de la interaccin fusionan los diagramas de actividades
y secuencia para permitir que los fragmentos de interaccin sean fcilmente combinados
con los puntos y flujos de decisin.

Elementos bsicos de la orientacin a objetos:

3. OBJETOS
Un objeto es una unidad atmica que encapsula estado y comportamiento. La
encapsulacin en un objeto permite una alta cohesin y un bajo acoplamiento.

Atributos de un objeto: Los atributos describen la abstraccin de caractersticas


individuales que posee un objeto.
Unidad 1: Diseo Orientado a Objetos 8
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Ejemplo: un objeto avin puede tener como caractersticas o atributos a la matrcula, el


nombre del avin, la capacidad de carga y la cantidad de asientos. Matrcula es el nombre
de un atributo cuyo valor puede ser 1553.

Comportamientos: Los comportamientos de un objeto representan las acciones que


pueden ser realizadas por un objeto.

Ejemplo: Un objeto avin puede tener los siguientes comportamientos: aterrizar,


despegar, cambiar de ruta area, pedir informacin a la torre de control, etc.

En general, los objetos pueden caer dentro de las siguientes categoras:

Cosas tangibles: avin, televisor, libro, auto, etc.


Roles representados por personas: alumno, gerente, mdico, paciente, etc.
Organizaciones: empresa, divisin, equipo, etc.
Interacciones que relacionan dos o ms objetos del modelo: Por ejemplo, un objeto
acta de examen, el cual relaciona un objeto materia con un objeto alumno.
Lugares: sala de embarque, muelle de carga, supermercado, etc.

Descripcin de objetos5
Los objetos informticos definen una representacin abstracta de las entidades de un
mundo real o virtual, con el objetivo de controlarlos o simularlos. Esta representacin
abstracta puede ser vista como una especie de espejo informtico, que devuelve la
imagen simplificada de un objeto que existe en el mundo percibido por el usuario. Los
objetos informticos, que llamaremos en adelante objetos, encapsulan una parte del
conocimiento del mundo en el que evolucionan.
En comparacin con el ciclo de vida de los seres vivos, los objetos del mundo real que
nos envuelven nacen, viven y mueren.

En UML, un objeto se representa bajo la forma de un rectngulo; el nombre del objeto se


subraya. El diagrama siguiente representa tres objetos:

Alumno
Profesor

OtroAlumno

5
Modelado de Objetos con UML. Pierre Alain Muller. Pg. 16.
Unidad 1: Diseo Orientado a Objetos 9
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

A menudo es difcil encontrar un nombre para designar cada objeto; por ello es por que la
notacin permite indicar un nombre genrico en lugar de su nombre individual. Este
artificio permite hablar de objetos en trminos generales.

El diagrama siguiente muestra objetos alumnos y profesores. Los dos puntos precisan
que se trata de objetos annimos, de gnero Alumno y Profesor.

:Alumno :Alumno

:Profesor

:Alumno :Profesor

Caractersticas fundamentales de un objeto


La presentacin de las caractersticas fundamentales de un objeto permite responder de
manera ms formal a la cuestin: qu es un objeto?. Todo objeto presenta las tres
caractersticas siguientes: un estado, un comportamiento y una identidad.

Objeto = Estado + Comportamiento + Identidad

El estado
El estado agrupa los valores instantneos de todos los atributos de un objeto, sabiendo
que un atributo es una informacin que cualifica al objeto que la contiene. Cada atributo
puede tomar un valor en un mbito de definicin dado. El estado de un objeto, en un
instante dado, corresponde a una seleccin de valores, entre todos los valores posibles
de los diferentes atributos.

El diagrama siguiente muestra un objeto coche que contiene, en un instante dado, los
valores de sus atributos: marca, patente, cantidad de combustible, temperatura.

Un coche
Ford K
BBA 123
40
80

Unidad 1: Diseo Orientado a Objetos 10


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

El estado evoluciona con el tiempo; as, cuando un coche circula, la cantidad de


combustible disminuye y la temperatura del mismo vara. Ciertos atributos del estado
pueden ser constantes, tal es el caso de la marca y el nmero de patente. Sin embargo,
por regla general, el estado de un objeto es variable y puede verse como la consecuencia
de sus comportamientos pasados.

El comportamiento
El comportamiento describe las acciones y reacciones de ese objeto.
Cada comportamiento se llama operacin. Las operaciones de un objeto se
desencadenan a consecuencia de un estmulo externo, representado en forma de un
mensaje enviado por otro objeto.
Un mensaje, es una solicitud que pide al objeto que se comporte de una manera
determinada.

Todo mensaje est compuesto por la identidad del receptor, el comportamiento a


ejecutar y opcionalmente informacin adicional para realizar el comportamiento.
En el siguiente diagrama, segn el mensaje, se desencadena la Operacin1 o la
Operacin2.

Un mensaje
Otro objeto

Un objeto

Operacin1 Operacin2
{...} {...}

Este diagrama presenta un rectngulo cuya esquina inferior derecha


est plegada: se trata de la representacin de una nota, es decir, de
una informacin de clarificacin opcional expresada en un formato
libre, a fin de facilitar la compresin del diagrama.
Ejemplo:

:Avin

Unidad 1: Diseo Orientado a Objetos


aterrizar 11

:Torre de control Realizar


aterrizaje
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Como veremos ms adelante, las interacciones entre objetos se representan por medio
de diagramas en los que los objetos que interactan estn vinculados entre s por lneas
continuas llamadas enlaces. La presencia de un enlace significa que un objeto conoce o
ve a otro objeto. En el ejemplo anterior, el objeto Torre de Control conoce al objeto Avin.
El estado y el comportamiento estn relacionados ya que el comportamiento en un
instante dado depende del estado actual, y el estado puede ser modificado por el
comportamiento. Solo es posible hacer aterrizar un avin cuando est volando, es decir,
el comportamiento Aterrizar slo es vlido si la informacin En Vuelo es vlida. Tras el

aterrizaje, la informacin En Vuelo pasa a ser no vlida, y la operacin Aterrizar deja de


tener sentido. El ejemplo muestra la relacin entre el estado y el comportamiento.

:Avin
aterrizar En Vuelo

Despegar
ar :Avin
:Torre de control
En tierra

La identidad
Adems de su estado, un objeto posee una identidad que caracteriza su propia existencia.
La identidad permite distinguir los objetos de forma no ambigua, independientemente de
su estado. Ello permite, entre otras cosas, distinguir dos objetos en los que todos los
valores de los atributos son idnticos.

El concepto de identidad se refiere al hecho de que cada objeto es nico en el mundo, por
ms que su conjunto de atributos y sus valores sean exactamente iguales a los de otros
objetos. Por ejemplo, dos autos del mismo modelo, color, motor, salidos de la misma lnea
de produccin el mismo da no dejan de ser dos autos diferentes, por ms que su
conjunto de atributos y sus valores sean iguales. La nica posibilidad de que dos objetos
sean iguales es que sean el mismo objeto.

La identidad es un concepto, no se representa de manera especfica en modelado. Cada


objeto posee una identidad de manera implcita.
En casos como el citado anteriormente, si es necesario diferenciar objetos, a menudo
puede utilizarse un identificador procedente naturalmente del mbito del problema. Este
tipo de identificador, llamado tambin clave natural, puede aadirse al estado de los
objetos para distinguirlos.

Unidad 1: Diseo Orientado a Objetos 12


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Por ejemplo, el DNI puede ser una clave natural para distinguir personas, el nmero de
patente para distinguir automviles, etc.

Interacciones entre objetos


Desde el enfoque del diseo orientado a objetos, una aplicacin se va a modelar como
un conjunto de objetos que interactan entre s para dar solucin al pedido de un usuario.
UML utiliza diagramas para modelar el sistema desde distintos aspectos, separados pero
relacionados, de modo que permiten tener una visin ms clara y detallada del sistema.

Una interaccin expresa el comportamiento que resulta de la comunicacin de un grupo


de objetos. Una interaccin la podemos visualizar segn el punto de vista del tiempo o
segn el punto de vista del espacio.
Las interacciones entre objetos las podemos representar a travs de dos tipos de
diagramas: diagrama de interaccin y diagrama de secuencia.

Diagrama de Comunicacin
Estos diagramas muestran interacciones entre objetos en la estructura espacial esttica
que permite la comunicacin entre objetos. El tiempo no se representa de manera
explcita, por lo tanto los mensajes se numeran para indicar el orden de los envos.

Por ejemplo, sean Cliente, Alquiler, Video, objetos que participan en un sistema de
alquiler de videos. El siguiente un diagrama de comunicacin describe cmo interactan
los objetos para implementar el alquiler de un video.

Componentes: Alquiler de un video


2:Verifica estado

:Video 4:Modifica estado

1:Solicita 3: Registra alquiler


alquilar video
5: Entrega video

:Cliente :Alquiler

Diagrama de secuencia
Estos diagramas muestran interacciones entre objetos segn un punto de vista temporal.
Unidad 1: Diseo Orientado a Objetos 13
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Insiste en la cronologa de los envos de mensajes.

Un objeto se representa por un rectngulo y una barra vertical llamada lnea de vida de
los objetos. El orden de envo de los mensajes est dado por la posicin sobre el eje
vertical.

Ejemplo 1:
El siguiente ejemplo muestra el diagrama de secuencia referido al diagrama de
comunicacin antes expuesto.

:cliente :video :alquiler

Solicita alquilar video


Verifica estado

Registra alquiler

Entrega video Modifica estado

Ejemplo 2:

Para ingresar a la aplicacin web de correo electrnico de Gmail, un usuario debe


loguearse; este proceso implica desplegar una interfaz (formulario web) en el que se
solicita direccin de correo y clave.
El usuario, una vez ingresados estos datos, presiona sobre el botn Entrar, luego los
datos del usuario son verificados y en caso de que los datos ingresados sean vlidos, se
permite ingresar a la aplicacin de correo electrnico que despliega un nuevo formulario
conteniendo las carpetas de correo electrnico.

Unidad 1: Diseo Orientado a Objetos 14


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

:Usuario :Fomulario :Usuarios :Formulario


Entrada Registrados Aplicacion
IngresarDatosUsuario ValidarUsuario(DatosUsuario)
VerificarDatosUsuario

AbrirFormularioMail

AdministrarMails
Salir

Fragmentos combinados6
Existen mecanismos que permiten agregar un grado de lgica de procedimientos a los
diagramas y se denominan fragmentos combinados. Un fragmento combinado es una o
ms secuencias de procesos incluidas en un marco y ejecutadas bajo circunstancias
especficas.
Existen varios fragmentos disponibles, pero para los fines de la asignatura solo resultan
de inters 2 (dos) de ellos:

Fragmento Alternativa (denotado alt): modela la eleccin de una interaccin


entre objetos, a travs de una condicin de guarda, es decir, modela estructuras
condicionales del tipo ifthenelse.

Fragmento de iteracin o bucle (denotado loop): el fragmento incluye un conjunto


de mensajes que se ejecutan mltiples veces, segn lo indique la condicin de
guarda

Ejemplo 3:
Retomando el ejemplo 1, se puede utilizar un fragmento combinado Alternativa para que
el diagrama de secuencia modele la situacin de que el video no est disponible.

6
A partir de UML 2.0
Unidad 1: Diseo Orientado a Objetos 15
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Ejemplo 4:
Este ejemplo representa el caso de una llamada desde un telfono celular a travs de un
nmero de la misma provincia (un nmero de 9 dgitos).

Unidad 1: Diseo Orientado a Objetos 16


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

ACTIVIDAD 2:
Construya el diagrama de secuencia para el siguiente escenario normal de la extraccin
de dinero de un cajero automtico:
El cajero automtico pide al cliente que inserte la tarjeta de dbito.
El cliente inserta la tarjeta de dbito.
El cajero automtico acepta la tarjeta de dbito y lee el nmero de tarjeta y el cdigo del
banco.
El cajero automtico pide la contrasea al cliente.
El cliente teclea la contrasea
El cajero automtico enva el nmero de tarjeta, el cdigo del banco y la contrasea a la
RED
La RED enva el nmero de tarjeta y la contrasea al banco.
El banco notifica la aceptacin a la RED.
La RED notifica la aceptacin al cajero automtico.
El cajero automtico pide al cliente que elija el tipo de transaccin: extraccin de fondos,
depsito, transferencia, informacin, compras on-line.
El cliente selecciona extraccin de fondos.
El cajero automtico pide al cliente que teclee la cantidad.
El cliente teclea la cantidad.
El cajero automtico comprueba que la cantidad est dentro de los lmites generales.
Unidad 1: Diseo Orientado a Objetos 17
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

El cajero automtico genera una transaccin y la enva a la RED.


La RED pasa la transaccin al banco.
El banco aprueba la transaccin.
El banco actualiza la cuenta.
El banco enva a la RED la notificacin de aceptacin y el nuevo saldo de la cuenta.
La RED enva al cajero automtico la notificacin de aceptacin y el nuevo saldo de la
cuenta.
El cajero automtico entrega el dinero al cliente.
El cliente toma el dinero.
El cajero automtico pregunta al cliente si quiere un recibo.
El cliente contesta SI.
El cajero automtico imprime un recibo y pide al cliente que lo tome.
El cliente toma el recibo.
El cajero automtico pregunta al cliente si quiere hacer otra operacin.
El cliente contesta NO.
El cajero automtico expulsa la tarjeta de dbito e indica al cliente que la tome.
El cliente toma la tarjeta de dbito.
El cajero automtico vuelve a la situacin inicial.

b)
Construya el diagrama de secuencia para un escenario de inscripcin a examen a una
materia de un alumno de la carrera LCC utilizando el Sistema de Informacin
Universitaria(SIU).
El alumno debe ingresar a la pgina del SIU http://siu.unsj.edu.ar. Una vez que haya
ingresado a la pgina el sistema le pedir para la identificacin el documento ( D.N.I ) y la
clave (4 ltimas cifras de su D.N.I). En el caso de identificacin y/o clave incorrectas, el
sistema enviar un mensaje de error. Este proceso puede repetirse hasta 3 veces, en el
caso de que esto ocurra la cuenta ser bloqueada y el alumno deber dirigirse al
departamento de alumnos para que el jefe del departamento le restablezca la clave.
En el caso que todos los datos sean correctos, el alumno accede a un men de opciones.
Dentro del men deber seleccionar el tem inscripcin a examen, una vez seleccionado
el tem mencionado, el sistema le muestra un listado con todas las materias que el alumno
an no ha rendido. El alumno seleccionar de la lista la materia que quiere rendir y luego
el sistema har las siguientes validaciones:
Que el alumno haya regularizado la materia que eligi, caso contrario, el sistema enviar
un mensaje de error Materia no regularizada
Que el alumno tenga las correlativas correspondientes aprobadas, caso contrario, el
sistema enviar un mensaje de error indicando el/los nmero/s de las materias
correlativas que le falta rendir.
Que el alumno no adeude libros en biblioteca, caso contrario el sistema enviar un
mensaje de error, Debe libros en biblioteca.
En el caso en que toda la validacin anterior haya sido exitosa, el sistema queda a la
espera de la confirmacin de inscripcin por parte del alumno para lo cual deber hacer
Unidad 1: Diseo Orientado a Objetos 18
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

doble clic en el nmero de comisin evaluadora. Finalmente, el sistema enva un mensaje


de aceptacin de inscripcin y retorna el nmero de transaccin.

4. CLASES

Una clase es una descripcin de un conjunto de objetos, ya que consta de


comportamientos y atributos que resumen las caractersticas comunes del conjunto.
La clase define el mbito de definicin de un conjunto de objetos. Cada objeto pertenece
a una clase.
La posibilidad de definir clases es una de las ventajas de la orientacin a objetos; definir
clases significa colocar cdigo reutilizable en un depsito comn en lugar de redefinirlo
cada vez que se necesite.

La encapsulacin de una clase permite la cohesin y presenta distintas ventajas bsicas:


Se protegen los datos de accesos indebidos
El acoplamiento entre las clases se disminuye
Favorece la modularidad y el mantenimiento

Ejemplo: si se necesita trabajar con un conjunto de libros, para un sistema que automatiza
una biblioteca, no es necesario definir el comportamiento para cada libro, ser suficiente
con agrupar ese comportamiento en la clase LIBROS.

Se dice que una clase es una especificacin genrica para un nmero arbitrario de
objetos similares. Los objetos que responden a la especificacin de una clase son
llamados instancias de una clase; en nuestro ejemplo cada objeto libro es una instancia
de la clase LIBROS.

LIBROS

cdigo : entero
ttulo: cadena
autor: cadena
Cant-pginas: entero

Cambiarautor;
Mostrardatos;

Unidad 1: Diseo Orientado a Objetos 19


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

La clase tiene como atributos: cdigo del libro, ttulo, autor y cantidad de pginas. Los
comportamientos contemplados para un objeto de esta clase son entre otros: cambiar el
autor y mostrar los datos del libro.

Ejemplo: si se necesita automatizar el manejo de las cajas de ahorro de una entidad


bancaria, tenemos la clase Caja de Ahorro, con las siguientes caractersticas.

CAJA DE AHORRO

Nmero de cuenta: cadena


Saldo: real
Cant-extracciones: entero

depositar;
extraer;
consultarsaldo;

Un objeto de la clase caja de ahorro, puede representarse de la siguiente forma 7:

Una caja :CAJA DE AHORRO


o bien, as:
89789/01 89789/01
1540.50 1540.50
2 2

El siguiente esquema muestra el cambio de estado del objeto, debido a la operacin


extraer.

7
Como explicaremos ms adelante: para distinguir entre una clase (el tipo) y un objeto (una instancia del
tipo), un objeto se muestra subrayado.
Unidad 1: Diseo Orientado a Objetos 20
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

El mensaje Extraer
Estado inicial provoca la ejecucin de
Estado actual
una operacin de la clase
Una caja Una caja
Una caja
89789/01 89789/01
1540.50 1040.50
2 Extraer 3
(500)

Un cliente Se supone que la caja


tiene saldo suficiente
para la extraccin

Ntese la diferencia fundamental entre un objeto y una clase. Un objeto es algo concreto,
puede ser real o abstracto. Una clase es una abstraccin de un concepto que engloba
todos los objetos. LIBRO es una clase mientras Programacin Orientada a Objetos
Tcnicas Avanzada de Programacin es un objeto de la clase LIBRO

Visibilidad de los atributos:


Cmo antes se explicit, los atributos de una clase no deberan ser manipulables
directamente por el resto de objetos, no obstante existen distintos niveles de
encapsulacin tambin llamados niveles de visibilidad.

La visibilidad indica si el atributo y/o comportamiento es visible o puede ser accedido


desde otras clases.
Los tres niveles distintos de visibilidad utilizados son: private, protected y pblic8.

El nivel de visibilidad puede aprecisarse en las representaciones grficas de las clases


mediante los caracteres +, # y -, que corresponden respectivamente a los niveles pblico,
protegido y privado. Los mismos niveles de visibilidad usados para los atributos pueden
aplicarse a los comportamientos.

8
Estos niveles se corresponden con los propuestos por el lenguaje de programacin C++:

Unidad 1: Diseo Orientado a Objetos 21


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Reglas de visibilidad

+ Atributo pblico
# Atributo protegido
- Atributo privado

+ Mtodo pblico
# Mtodo protegido
- Mtodo privado

El nivel ms fuerte es el llamado nivel privado (private). En este caso, la parte privada de
la clase es totalmente inaccesible desde otras clases.
Es posible lograr una visibilidad intermedia, colocando ciertos atributos en la parte
protegida de la clase. Estos son visibles para las subclases. Para las dems clases,
siguen siendo inaccesibles.
El nivel ms bajo se obtiene colocando algunos atributos en la parte pblica de la clase.
Esto equivale a romper la nocin de caja negra y hacer visibles los atributos para todas
las clases.
Un anlisis similar puede realizarse para la visibilidad de los mtodos de una clase.
El diagrama siguiente muestra la representacin de la clase Caja de Ahorro.

CajadeAhorro

-Nmero de cuenta: cadena


-Saldo: real
-Cant-ext: entero

+depositar;
+extraer;
+consultarsaldo;

Cmo vemos, lo conveniente es que los mtodos sean de acceso pblico y los atributos
privados. De este modo se logra el Encapsulamiento, entendiendo por esto a la
conjuncin de la abstraccin y el ocultamiento de la informacin.

Unidad 1: Diseo Orientado a Objetos 22


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

5. MTODOS Y MENSAJES
Los objetos tienen la posibilidad de actuar. La accin sucede cuando un objeto recibe un
mensaje, que es una solicitud que pide al objeto que se comporte de manera
determinada. Cada objeto recibe, interpreta y responde a mensajes enviados por otros
objetos.
El conjunto de mensajes al que un objeto puede responder se llama protocolo del objeto.
Los comportamientos u operaciones que caracterizan un conjunto de objetos residen en la
clase y se llaman mtodos. En el ejemplo anterior consultarsaldo (), es un mtodo de la
clase CajadeAhorro.

Los mtodos son el cdigo que se ejecuta para responder a un mensaje, y el mensaje es
la llamada o invocacin a un mtodo.

Los mtodos determinan cmo acta el objeto cuando recibe un mensaje y manipulan los
valores de los atributos del objeto. De esta forma, los mtodos proporcionan la nica
forma de modificar los datos de un objeto. La estructura de un objeto (atributos y
mtodos), est oculta a usuarios del objeto, de manera tal que los mensajes que recibe un
objeto proporcionan la nica forma de conectar al objeto con el mundo exterior. Estas
caractersticas de la orientacin a objetos fomentan la modularidad (ya que es clara la
frontera entre los distintos objetos), explcita la comunicacin entre los distintos objetos y
oculta los detalles de implementacin.

Representacin usando UML


Para representar grficamente clases y objetos utilizaremos la simbologa propuesta por
UML. En UML, una clase es representada por un rectngulo que posee tres divisiones:
Superior: Contiene el nombre de la Clase.
Intermedia: Contiene los atributos que caracterizan a la Clase.
Inferior: Contiene los mtodos, los cuales indican la forma como interacta el objeto con
su entorno.

En UML, un objeto se representa bajo la forma de un rectngulo; el nombre del objeto se


subraya. La primera parte del rectngulo indica el nombre y la segunda los valores
asociados a los atributos.

Unidad 1: Diseo Orientado a Objetos 23


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Caja-de- Ahorro

-Numero de cuenta: entero


-Nombre: cadena
-Saldo: real
-CantExtracciones: entero
+crearunacuenta()
+depositar(monto: real)
+extraer(monto: real);
+consultarsaldo
+mostar_Saldo()

C1 C2
114234 89560
Pablo Perez Carlos Quiroga
1300.00 650.80
5 3

ACTIVIDAD 3
Para la ACTIVIDAD 2 Identifique al menos dos de las clases que intervienen en la
realidad planteada. Usando UML realice el diseo de ellas, indicando a su criterio que
atributos y comportamientos pueden incluir.
Represente en UML al menos dos objetos de cada una de las clases seleccionadas.

6. HERENCIA - Conceptos de Generalizacin y Especializacin9


La generalizacin y la especializacin son puntos de vista centrados en las jerarquas de
clases.

La generalizacin consiste en factorizar los elementos comunes (atributos, mtodos y


restricciones) de un conjunto de clases en una clase ms general llamada superclase.
Como las clases se ordenan segn una jerarqua, una superclase es una abstraccin de
sus subclases.

La generalizacin es un mecanismo complejo porque exige una buena capacidad de


abstraccin. La depuracin de una jerarqua ptima es delicada e iterativa. Los rboles de
clases no crecen a partir de una raz. Por el contrario, se determinan partiendo de las
hojas porque stas pertenecen al mundo real mientras que los niveles superiores son
abstracciones construidas para ordenar y comprender.

9
Modelado de Objetos. op. cit. Pg.46
Unidad 1: Diseo Orientado a Objetos 24
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

La especializacin permite capturar las particularidades de un conjunto de objetos no


discriminados por las clases ya identificadas. Las nuevas caractersticas se representan
por una nueva clase, subclase de una de las clases existentes. La especializacin es una
tcnica eficaz para la extensin coherente de un conjunto de clases.

Una subclase identifica el comportamiento de un conjunto de objetos que hereda las


caractersticas de la clase padre y adicionan algunas especficas que sta no posee.

UML utiliza la flecha para indicar la Especializacin /Generalizacin, esta indica


que una subclase comparte los mtodos y atributos especificados en una Clase Superior,
por ende la Subclase adems de poseer sus propios mtodos y atributos, poseer las
caractersticas y atributos de la Clase Superior.

El ejemplo siguiente muestra una jerarqua de medios de transporte.

Abstracciones ms generales
Vehculo

Vehculo Vehculo
Terrestre areo

Coche Camin Avin Helicptero

La herencia es el mecanismo que permite compartir automticamente mtodos y datos


entre clases y subclases. Los conceptos de Especializacin /Generalizacin se
objetivan a travs de la herencia.
Este mecanismo potente, permite crear nuevas clases a partir de clases existentes
programando solamente diferencias.

Ejemplo: A continuacin se muestra una jerarqua de clases que forma parte de un


Sistema de Administracin de empleados de una universidad.

Unidad 1: Diseo Orientado a Objetos 25


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Empleado

-Nombre: cadena
-DNI: cadena
+Mostar_Datos()

Docente Administrativo
D
-Ttulo: cadena -Categora: entero
Juan Prez -Dedicacin: cadena
11.456.789
Geolgo +Calcular_Incentivo() +Calcular_Bonificacin()
Exclusiva

Las subclases Docente y Administrativo comparten los atributos y mtodos de la clase


superior Empleado. La subclase Docente por ejemplo, agrega atributos y
comportamientos propios.

Clase Abstracta: Una clase es abstracta cuando no existe un objeto que sea instancia di-
recta de ella, pero s existe una subclase de ella que es instanciable.
Generalmente se utilizan para resumir los comportamientos comunes a un conjunto de
subclases. El nombre de las clases abstractas va en cursiva. Por ejemplo, la clase
Empleado de la jerarqua anterior es abstracta.

Clase Concreta: Una clase concreta es aquella que es instanciable, es decir que existe al
menos un objeto de esa clase. La clase Docente es una clase concreta. El objeto D
representa una instancia de la clase Docente que adems de los atributos de la clase
empleado tiene los propios de la clase de la cual es instancia.

Ejemplo: Suponiendo el siguiente diagrama de clases, que responde a un Sistema de


Pedido de Becas, consideremos solamente la jerarqua alumno - egresado.

Unidad 1: Diseo Orientado a Objetos 26


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

ALUMNO
-Nombre: cadena
-Fecha Nac.:cadena
-Fecha Ingr.: cadena

+Mostrar_Datos()
+Mostrar_Edad()
+Mostrar_Indice()

Egresado

-Fecha_egre: cadena
-Prom_Gral: real

+Mostrar_Promedio()
+Mostrar_Indice()
+Mostrar_Fegre()

A partir de la clase Alumno, se ha construido la clase Egresado, con quien comparte


atributos y comportamientos. En esta jerarqua tanto Alumno y Egresado son clases
concretas, pues ambas son instanciables.

La clase Egresado comparte caractersticas de la clase Alumno, contiene por herencia


los atributos Nombre, Fecha Nac y Fecha Ingr, y los mtodos Mostrar_Datos(),
Mostrar_Edad(). Agrega adems caractersticas particulares a travs de los atributos
Fecha_egre y Prom_Gral, y de los mtodos Mostrar_Promedio(), Mostrar_Indice() y
Mostrar_Fegre().

Por otro lado el mtodo Mostrar_Indice(), que calcula el ndice de regularidad, aparece
tanto en la clase superior (Alumno) como en la clase descendiente (Egresado).
Esto se debe a que el cmputo del ndice de regularidad vara segn la clase a la que
pertenezca el objeto que recibe el mensaje. Por lo tanto, si bien el mismo mtodo aparece
Unidad 1: Diseo Orientado a Objetos 27
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

en las dos clases, el mtodo de la clase egresado redefine al de la clase alumno a travs
de un cdigo distinto. Esto es, el mtodo Mostrar_Indice de la clase egresado oculta al
mtodo Mostrar_Indice de la clase alumno.
As, cuando un objeto de la clase egresado recibe el mensaje Mostrar_Indice, ejecuta el
mtodo Egresado.Mostrar_Indice.
Como conclusin podemos decir que, dentro de una jerarqua de clases, la herencia
propaga las caractersticas de la clase superior en sus clases descendientes, de modo
que varias clases pueden compartir una misma descripcin.

Sean:
A1, A2: Alumno; // objetos de la clase Alumno
E: Egresado; // objeto de la clase egresado

Alumno

A1
A2
Ana Perez
12/8/80 Juan Castro
15/3/2000 21/9/82
20/3/2002
Egresado
E
Juan Garca
21/10/83
15/3/1992
15/8/1998
7.50

A1.Mostrar_Edad(): este mensaje produce como respuesta la ejecucin del


mtodo Alumno.Mostrar_Edad()definido en la clase Alumno. Este mtodo
calcula la edad a partir de la fecha de nacimiento 12/8/80.
A2.Mostrar_Edad(): este mensaje produce como respuesta la ejecucin del
mtodo Alumno. Mostrar_Edad()definido en la clase Alumno. En este caso el
mtodo calcula la edad a partir de la fecha de nacimiento 21/9/82.
E.mostrar_edad(): en este caso el sistema busca el mtodo Mostrar_Edad en la
clase Egresado; como la clase no contiene ese mtodo busca en la clase superior
y, en respuesta al mensaje recibido, ejecuta el cdigo asociado al mtodo. En este
caso el mtodo calcula la edad a partir de la fecha de nacimiento 21/10/83.

Unidad 1: Diseo Orientado a Objetos 28


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Mostrar_Promedio(): este mensaje produce como respuesta la ejecucin del


mtodo E.Mostrar_Promedio() definido en la clase Egresado. Muestra el valor
7.50.

Variables de clase y variable de instancia: Se denominan variables o atributos de


clases a aquellos atributos que tienen el mismo valor para cada objeto de la clase. A los
atributos que no son de clase se los llama de instancia.
El valor de las variables de clase ser el mismo para cualquier instancia de la jerarqua. Si
el valor de la variable de clase es cambiado para una instancia, el mismo cambia para
todas las instancias de la clase y subclase.

Por ejemplo:
La siguiente jerarqua de clase modela la impresin de todo documento escrito que emita
el Supermercado EL Torito.

Impresin

-razon_social= Supermercado EL Torito


-cuit=12-6874158-1

ImpresinFacturas ImpresinRecibos ImpresinNotaCredito

Nro_Factura ................
......................

La jerarqua muestra una clase superior abstracta, que resume las caractersticas
comunes de las subclases.
La clase Impresin posee al menos dos variables de clase, nombre y cuit. Estos
atributos deben estar presentes en cualquier documento escrito de la empresa.
La clase ImpresinFacturas posee al menos tres atributos, dos son variables de clase,
nombre y cuit, y Nro_Factura es variable de instancia.

Unidad 1: Diseo Orientado a Objetos 29


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Tipos de herencia
Existen dos tipos de herencia: herencia simple y herencia mltiple.
Con la herencia simple una subclase puede heredar datos y mtodos de una nica clase y
tambin puede aadir nuevo comportamiento. Son ejemplos de herencia simple, la
jerarqua Alumno-Egresado y la jerarqua Impresin-Factura, antes presentadas.

Con la herencia mltiple una subclase puede adquirir los datos y mtodos de mas de una
clase padre, como lo muestra la siguiente grfica.
El siguiente ejemplo muestra, dentro de los cuadrilteros, una jerarqua que clasifica los
distintos tipos de cuadrilteros trapecios.

TRAPECIO (Un par de lados


paralelos)


PARALELOGRAMO (Dos pares de
lados paralelos)


ROMBO RECTANGULO

(Cuatro lados iguales) (Cuatro ngulos iguales)


CUADRADO

En resumen:
Los elementos del mundo a ser modelado y su comportamiento son transformados en
objetos. Los objetos con comportamientos comunes son organizados en clases. Las
clases se organizan en jerarquas y los mecanismos de herencia proporcionan a cada
subclase los mtodos y datos de la clase padre. Al desarrollar una nueva aplicacin se
consideran las clases provistas o generadas a partir de las cuales se generan las
subclases necesarias.
Unidad 1: Diseo Orientado a Objetos 30
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

ACTIVIDAD 4
Para la narrativa que se plantea a continuacin se pide:
1. Identifique las caractersticas de cada tipo de producto y disee una clase para
cada uno de ellos.
2. Aplique la generalizacin al conjunto de clases del tem anterior, y construya una
jerarqua de clases.
3. Seale clases abstractas y concretas.
4. Represente en UML un objeto de cada clase concreta.

Una fbrica de pastas frescas elabora los siguientes productos:


fideos frescos: comunes y para celacos, por 500grs. y por 1000grs.
ravioles: por 500grs. y por 1000grs. de variedad pollo, ricota y cuatro quesos.
tapas de empanadas: en paquete de 12 y 24 unidades cada uno, de tipo criolla y
hojaldre.
tapas de tarta: en paquete de 2 unidades cada uno, con separador y sin separador.

ACTIVIDAD 5

Narrativa
Al dueo de una fbrica de muebles le resulta relevante las siguientes caractersticas de
cada mueble que fabrica: cdigo de mueble, descripcin y costo de fabricacin.

1. Para la narrativa que se plantea anteriormente disee una clase que describa el
conjunto de muebles que se fabrican.

2. Aplique la especializacin y construya una jerarqua de clases teniendo en cuenta lo


siguiente.

Al dueo de la fbrica tambin le interesa el tipo de madera empleada en los muebles de


madera, y la medida (en pulgadas) del cao empleado en los muebles de cao.

7. RELACIONES ENTRE CLASES


En la primera etapa del DOO, se deciden las caractersticas de cada clase, es decir se
identifican las clases. Una vez realizado esto, se trata de decidir el modo en que las
clases se vinculan otras clases. Aunque algunas clases pueden existir aisladas, la
mayora no puede, y deben cooperar unas con otras.
Las relaciones entre las clases expresan una forma de acoplamiento entre ellas. Segn el
tipo de acoplamiento que presentan las clases podemos distinguir distintos tipos de
relaciones. Entre ellas podemos citar:
Unidad 1: Diseo Orientado a Objetos 31
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Asociacin
Agregacin
Generalizacin / Especializacin / Herencia /

Multiplicidad de las relaciones


En UML la multiplicidad indica el nmero de instancias (cardinalidad) que participan en la
relacin, y se anota en cada extremo de la relacin.
Los valores de multiplicidad ms comunes son:

1 uno y slo uno


0..1 cero o uno
m..n de m a n (m y n enteros naturales)
* de cero a varios
0..* de cero a varios
1..* de uno a varios

Asociacin:
La relacin de asociacin representa una conexin semntica bidireccional entre dos
clases.
Una asociacin es una abstraccin de los vnculos que existen entre objetos instancias de
las clases asociadas.
La asociacin no es contenida por las clases, ni subordinada a las clases asociadas; es el
reflejo de una conexin que existe en el mbito de la aplicacin.
Las asociaciones pueden ir acompaadas de un nombre que permite una mejor legibilidad
del diagrama y se representa por una lnea continua entre las clases asociadas.

Ejemplos:
Un alumno puede inscribirse en varias asignaturas, una asignatura permite la inscripcin
de varios alumnos.

Alumno Asignatura
-matrcula inscripcin -cdigo

+ ............. + .
+ ............. 1..* 1..* +..
...............
+ .............

Un docente puede ser director de tesis de varios alumnos, un alumno puede tener un
solo director
Unidad 1: Diseode tesis a Objetos
Orientado 32
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Docente Alumno

-nombre 1 tesis -matrcula


0..*

Clase de Asociacin:

Las asociaciones tienen especial inters cuando es N a N. Para asociaciones 1 a 1, los


atributos de la asociacin pueden desplazarse a una de las clases que participan.
Cuando la asociacin es de 1 a n, los atributos de la asociacin pueden desplazarse a la
clase de cardinalidad n.

Sin embargo, es comn que algunas asociaciones se transformen en clase para lograr
una mayor legibilidad o debido a la presencia de asociaciones hacia otras clases.
En sntesis, una asociacin puede representarse por una clase, para aadir atributos y
operaciones a la asociacin.
Una clase asociacin se representa de la misma manera que una clase normal,
simplemente est relacionada a la asociacin por una lnea de puntos.

Ejemplo: Para la asociacin entre las clases alumno y asignatura de un sistema de


inscripcin, puede crearse una clase asociacin solicitud- que guarde informacin sobre
las asignaturas en que se inscribe cada uno de los alumnos, la fecha de inscripcin, etc..

Alumno Asignatura
inscripcin
-matrcula -cdigo

+ ............. 1..* -Fecha_Baja:


+ .............Fecha
+ ............. -Fecha_Alta: Fecga
+ .............
-Diagnostico:String

Solicitud
-matrcula
-cdigo
-fecha_ins

+ ...........

Otro ejemplo:

Unidad 1: Diseo Orientado a Objetos 33


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Paciente
Medico Atencin
-nombre
-nombre -direccin
-direccin 1....* 1...*
Ficha Mdica
+ . + ..

ACTIVIDAD 6
Narrativa

El Diario Clarn convoca a un concurso de diseo fotogrfico asistido por computadora.


A tal fin presenta distintos temas en los que se puede trabajar, ofreciendo premios de
$5000, $4000 y $3000 para los tres mejores trabajos que se presentan.
Para el fin de asesorar a los participantes cuenta con un grupo de especialistas, de modo
que cada especialista pueda ser tutor de un nico participante.
No hay restriccin alguna para los participantes.

Indicar las asociaciones que relacionan las clases Premio Participante Tutor y
Tema, que se corresponden con la narrativa.

Agregacin:
Es una forma de asociacin en donde los elementos contienen otros elementos.
As, una agregacin es una asociacin no simtrica (todo/parte) en la que una de las
clases cumple un papel predominante respecto de la otra. Por otra parte la agregacin
declara una direccin a la relacin todo/parte. Grficamente se representa colocando un
rombo del lado de la clase agregado.

Existen dos formas de este tipo de relaciones, la agregacin y la composicin.


Con la composicin el objeto parte puede pertenecer a un todo nico.
En la relacin de composicin, si muere el objeto que dispara la composicin, los objetos
que lo componen mueren con l.
En la agregacin, pasa lo contrario.

Algunos criterios para detectar agregaciones10:


- Los objetos de una clase estn subordinados a los objetos de otra clase.
- Una accin sobre una clase implica una accin sobre otra clase

10
Modelado de Objetos. op. cit. Pg103
Unidad 1: Diseo Orientado a Objetos 34
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

- Los valores de los atributos de una clase se propagan en los valores de los atributos de
otra clase

En caso de duda son preferibles las asociaciones, ya que en general siempre hay que
elegir una solucin que implique el acoplamiento ms dbil.

Relacin de Agregacin11
Existen aplicaciones en las cuales un objeto contiene como partes a objetos de otras
clases, pero de tal modo que la destruccin del objeto continente no implica la destruccin
de sus partes. En este caso se dice que el objeto continente incluye referencias a objetos
de otras clases. Por consiguiente los tiempos de vida de esos dos objetos no estn tan
estrechamente acoplados, de modo que se pueden crear y destruir instancias de cada
clase independientemente.
La agregacin se representa por una flecha con un rombo sin relleno

Ejemplo:

Orden de 1..*
Pedido
1..*
1..*
Plato
1..*
Bebida
Aterriz
Una orden de pedido incluye aje
uno o ms objetos de Bebida, y uno o ms objeto de Plato.
La destruccin de un objeto Orden de Pedido, no implica la destruccin de los objetos
Bebida o Plato.

Otro Ejemplo:
1..* 1..*
Propietario Propiedad

En el caso de las agregaciones, no hay restricciones en la multiplicidad del agregado. En


este ltimo ejemplo, un propietario puede tener varias propiedades, y una propiedad
puede pertenecer a varios propietarios.

11
En UML 1 se la denomina agregacin de contenido por referencia
Unidad 1: Diseo Orientado a Objetos 35
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Relacin de Composicin 12
Este tipo de agregacin se presenta cuando los atributos de una clase (agregado) hacen
referencia a objetos de otra clase y stos estn fsicamente contenidos por el agregado.
En este caso, la vida de los objetos incluidos depende de la vida del objeto que los
incluye. La composicin se representa con un rombo relleno que apunta al agregado.

Ejemplo:
Avin Agregado
1
AVION

2 2

Alas Hlice
Aterrizaj
e
Por ejemplo un Avin es un objeto compuesto de otros objetos, incluye alas, hlice, tren
de aterrizaje etc. Esto significa que el objeto ala o hlice no existe independientemente de
la instancia de Avin que los contiene. La vida de los objetos Avin y ala o hlice estn
interrelacionadas, de modo que cuando se crea una instancia de Avin se crea una
instancia de la clase ala o hlice, y cuando se destruye un objeto de Avin, por
implicacin se destruyen tambin los correspondientes objetos ala o hlice.

En este caso de agregaciones, la multiplicidad del lado agregado puede tomar el valor 0
o 1. El valor 0 se refiere a un atributo no explicitado.

Diagrama de clases

Un diagrama de clases es un diagrama esttico que describe la estructura de un sistema


mostrando sus clases, atributos y las relaciones entre ellos
Los diagramas de clases son utilizados durante el proceso de anlisis y diseo de los
sistemas.

Ejemplo 1: El siguiente diagrama de clases modela un sistema que registra el


estacionamiento en el garaje Ruta 10, que tiene espacio para estacionar 75 autos.

12
En UML 1 se la denomina Agregacin de contenido por valor

Unidad 1: Diseo Orientado a Objetos 36


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Auto Garage
-Marca 0..* 0..1
-patente -nombre=Ruta 10
-disponibilifdad=75 Lugar
+.......... -libres
-lugares -piso
-zona
+Ocupar() -numero
+Liberar
+.......... + estado()
+..............

En este ejemplo, todos los atributos de la clase Auto, al igual que los de la clase Lugar,
son variables de clase. La clase Garaje tiene dos atributos que son variables de clase:
nombre y disponibilidad.

Ejemplo 2: El siguiente diagrama de clases modela un sistema de facturacin en un


restaurante.

Unidad 1: Diseo Orientado a Objetos 37


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

ACTIVIDAD 7
Indique en el siguiente diagrama de clases, las relaciones que existen entre ellas, y la
multiplicidad de las mismas.

Personal_de_Salud
- ApellidoNombre:
String
- dni: int

Medico Enfermero
- Matricula: int - Turno: String Pabellon
- Especialidad: String - ------
- Numero: int
- Jefe: String

Ficha Paciente

- ObraSocial: String - Nombre: String


Habitacion
- cantidadDias: int
- DNI: int
- numero: int
- piso: int
Planilla
-Fecha_Baja: Fecha
-Fecha_Alta: Fecga
-Diagnostico:String

ACTIVIDAD 8
Para cada una de las siguientes narrativas se pide:
1- Realice en UML el diagrama de clases.
a. Disee las clases con sus respectivos elementos.
b. Relacione las clases segn corresponda
c. Indique la cardinalidad para cada relacin.
2- Indique clases concretas y abstractas.
Unidad 1: Diseo Orientado a Objetos 38
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

3- Identifique variables de clase y de instancia.


4- Realice el diagrama de secuencia para la funcionalidad que se indica en cada
caso.
5- A partir del diagrama de secuencia construido, identifique cada mtodo necesario y
agrguelo en la clase correspondiente.

A) Una institucin dedicada al dictado de cursos de ingls, francs y portugus, desea


mantener la informacin relacionada a los alumnos inscriptos en cada curso y la forma de
pago elegida por cada uno. Ya que en el momento en que el alumno se inscribe en un
curso elige la forma de pago del mismo.
De los cursos es importante conocer informacin respecto al nombre del curso, contenido,
duracin, nivel, fecha de inicio, fecha de fin, matrcula y precio. Tambin la institucin
necesita el D.N.I., apellido y nombre, direccin, telfono y ocupacin de cada alumno.
Las formas de pago propuestas por la institucin son contado efectivo, tarjeta de crdito o
cheque.
En caso de pagar en efectivo, se otorga un descuento cuyo porcentaje es fijo. Si paga con
cheque se debe registrar nmero, fecha y banco del mismo. Y si es con tarjeta la cantidad
de cuotas, nmero de cupn y tarjeta con la que paga.
De cada tarjeta que la institucin recibe conoce el nombre, direccin y porcentaje de
inters que aplica.

Funcionalidad para el diagrama de secuencia


La institucin necesita conocer nombre del alumno y cantidad de cuotas de cada pago
con tarjeta de crdito Nevada.

B) La siguiente es la extraccin del dominio de Becas de una Universidad Nacional. El


Servicio Social de la Universidad, es el ente que articula el otorgamiento de becas
destinadas a promover y facilitar el acceso y permanencia de alumnos de escasos
recursos econmicos a los estudios de grado. Por otro lado, es el encargado de publicar
los distintos tipos de becas que los alumnos pueden percibir si cumplen con los requisitos
que cada una presenta.
El circuito de acciones que se desarrollan para que un alumno acceda a una beca, son las
siguientes: quien solicita algn tipo de beca debe llenar una solicitud, siempre que est en
tiempo para presentarla. Un alumno puede solicitar slo un tipo de beca. Una vez que se
tienen las solicitudes, una asistente social visita a distintos solicitantes, para constatar que
lo presentado es veraz. Hay varios asistentes sociales identificados por su nmero de
legajo, apellido y nombre. Un alumno slo puede ser visitado por un asistente social, y a
su vez un asistente puede visitar a lo sumo una vez al mismo alumno. Luego de realizar la
visita, la asistente social emite un informe con la fecha del informe, DNI del alumno, y
puntaje otorgado. Los datos de los alumnos son DNI, registro, apellido, nombre, domicilio
y unidad acadmica a la que pertenece.
Una beca se otorga a un joven por un perodo de tiempo, pudiendo ser reasignada hasta
3 veces la misma beca.
Unidad 1: Diseo Orientado a Objetos 39
U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

C)
El Departamento de Informtica, quiere organizar un programa de prcticas en Empresas
para los alumnos de las carreras LCC y LSI.
Este programa tiene como objetivo asignar a los alumnos que deseen participar un
proyecto de los ofertados al Departamento de Informtica por las empresas del entorno.
Para ello se dispone de la siguiente informacin:
Cada empresa ha de proporcionar los siguientes datos: nombre de la empresa,
identificacin fiscal, los proyectos que oferta. Cada proyecto queda descrito mediante un
cdigo, ttulo, objetivos, descripcin, horas estimadas de dedicacin al mismo.
Para cada alumno tenemos la siguiente informacin: Nombre, Apellido, D.N.I promedio y
el titulo de los proyectos en los que desea participar ordenados de acuerdo a su inters.
La asignacin de los alumnos a las prcticas en la empresa se realiza, teniendo en cuenta
el promedio y las preferencias que cada uno ha manifestado. De manera que se le asigna
al alumno el proyecto por l elegido en primer lugar, si el proyecto no ha sido previamente
asignado a otro alumno; si ya ha sido asignado previamente, se le intenta asignar al
proyecto elegido por l en segundo lugar, y as sucesivamente hasta tratar toda su lista de
preferencias. Se procede de la misma manera con todos los estudiantes.

Funcionalidad para el diagrama de secuencia


Construya el diagrama de secuencia que refleje la asignacin de un alumno a un
proyecto.

8. LIGADURA
Cuando una beca es reasignada se registra la fecha de reasignacin, justificacin de la
misma y asistente social que la autoriza.
Toda beca se sabe siempre a quin es otorgada.

Funcionalidad para el diagrama de secuencia


El Servicio Social de la Universidad necesita conocer nombre, apellido y DNI de los
alumnos a los que no se les puede reasignar una beca.

8. LIGADURA

Mtodos estticos y Mtodos Virtuales

La ligadura representa, generalmente una conexin entre un objeto y sus propiedades


(atributos y comportamientos). Si la propiedad es un mtodo, la ligadura es la conexin
entre la llamada al mtodo (mensaje) y el cdigo que se ejecuta tras la llamada. Desde
el punto de vista de los atributos, la ligadura es el proceso de asociar al nombre del
atributo con un valor.

Unidad 1: Diseo Orientado a Objetos 40


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Como vimos, el momento en que un atributo o funcin se asocia con sus valores o
funciones se denomina tiempo de ligadura. La ligadura se clasifica segn sea el tiempo
o momento de la ligadura: Esttica y Dinmica.

La ligadura esttica se produce durante la compilacin, mientras que la ligadura


dinmica ocurre durante la ejecucin. Un atributo que se liga estticamente es un atributo
esttico, mientras que un atributo que se liga dinmicamente es un atributo dinmico.
En la ligadura esttica todas las referencias se determinan en tiempo de compilacin, el
compilador y el enlazador definen directamente la posicin fija del cdigo que se ha de
ejecutar en cada llamada. Los mtodos que se vinculan tempranamente o durante la
compilacin se denominan mtodos estticos. Esto es, el enlace entre el objeto receptor
del mensaje y el mensaje se realiza en tiempo de compilacin.

En la ligadura dinmica supone que el cdigo a ejecutar en respuesta a un mensaje no


se determinar hasta el momento de la ejecucin. Los mtodos que se vinculan
tardamente o dinmicamente se denominan mtodos virtuales. Hay lenguajes como
Java, SmallTalk que toman la ligadura dinmica por omisin, otros, como C++, requieren
que el programador especifique el mtodo como virtual explcitamente.

La ligadura dinmica tiene como ventajas un alto grado de flexibilidad, ahorro de lneas
de cdigo, y como desventaja es menos eficiente que la ligadura esttica pues consumen
ms recursos.

9. Conceptos Claves

Polimorfismo
El polimorfismo puede definirse como la capacidad que tienen objetos de clases
diferentes de una jerarqua, a responder de forma distinta a una misma llamada de un
mtodo.
La idea es que los objetos de distintas clases derivadas de otra puedan ser tratados
de la misma manera. Esto es, se le apliquen los mismos mtodos aunque las
implementaciones particulares sean diferentes. Estos mtodos tienen la misma semntica
y distinta implementacin.
Como se infiere, el polimorfismo est asociado a la vinculacin tarda o vinculacin en
tiempo de ejecucin.

El polimorfismo fomenta la extensibilidad, software escrito para invocar comportamiento


polimrfico se escribe en forma independiente del tipo de los objetos a los cuales los
mensajes son enviados. Por lo tanto, nuevos tipos de objetos, que pudieran responder a

Unidad 1: Diseo Orientado a Objetos 41


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

mensajes existentes, pueden ser agregados en dicho sistema sin modificar el sistema
base.

Encapsulamiento
Trmino formal que describe al conjunto de mtodos y de datos de un objeto de manera
tal que el acceso a los datos se permite solamente a travs de los mtodos propios del
objeto.
La comunicacin entre los distintos objetos se realiza solamente a travs de mensajes
explcitos.

Abstraccin
La orientacin a objetos fomenta que los programadores y usuarios piensen en las
aplicaciones en trminos abstractos.
A partir de un conjunto de objetos, se piensa en los comportamientos comunes de los
mismos para situarlos en superclases, las cuales constituyen un depsito para elementos
comunes y reutilizables.

Persistencia:
La persistencia se refiere a la permanencia de un objeto, es decir, al tiempo en que se le
asigna espacio y permanece accesible. Cuando un objeto ya no es necesario, es
destruido, y el espacio que este ocupaba es recuperado. La recuperacin automtica del
espacio de memoria se denomina recoleccin de basura.
Algunos autores estudian la posibilidad de que haya una continuidad de la existencia de
un objeto luego de la ejecucin de un programa, por ejemplo almacenndolo en una base
de datos. Si bien hoy existen Bases de Datos Orientadas a Objetos, en la prctica estas
bases de datos se basan en otros modelos como el relacional.

La persitencia de los objetos13


La persistencia designa la capacidad de un objeto de trascender el tiempo o el espacio.
Un objeto persistente conserva su estado en un sistema de almacenamiento permanente,
de modo que es posible parar el proceso que lo ha creado sin perder la informacin
representada por el objeto (pasivacin del objeto). En adelante, el objeto puede ser
reconstruido (activacin del objeto) por otro proceso y se comportar exactamente como
en el proceso inicial. Los objetos no persistentes se llaman transitorios o efmeros. De
modo predetermiando, los objetos no se consideran como persistentes.

13
Extraido del libro Mtodo de Objetos con UML

Unidad 1: Diseo Orientado a Objetos 42


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

:objeto persitente

Almacenamien
to permanente

En conjunto, los lenguajes orientados a objetos no proponen soporte directo para


asegurar la persistencia de los objetos. Es una lstima, y ello obliga a recurrir a artificios
externos para asegurar la persistencia de los objetos. Los fabricantes de bases de datos
proporcionan soluciones para guardar objetos, bien totalmente orientadas a objetos, o
bien hbridas.

Ventajas del Diseo Orientado a Objetos


Un lenguaje de programacin que soporta el paradigma de orientacin a objetos beneficia
al desarrollador de software proporcionando una forma natural de modelar un fenmeno
del complejo mundo real. Programar no significa solamente escribir lneas de cdigo, sino
desarrollar modelos utilizando clases.
Con la programacin orientada a objetos los programas tienen menos lneas de cdigo.
Las bibliotecas de clases predefinidas que contienen los lenguajes maduros como el
Smalltalk aumentan las ventajas de utilizar lenguajes orientados a objetos, ya que la
tarea de programar consiste en gran parte en encontrar dentro de las bibliotecas las
clases y mtodos adecuados y combinarlos convenientemente.
Otra ventaja de la programacin orientada a objetos la representa la herencia, ya que
subclases pueden heredar o redefinir estructuras de datos y mtodos de clases
existentes. Los objetos posibilitan integrar los datos y los mtodos que actan sobre
dichos datos, lo que simplifica el mantenimiento del programa y sus posibles
actualizaciones. Por el contrario en los lenguajes tradicionales siempre existe la
posibilidad de que una actualizacin de una subrutina provoque efectos no deseados en
subrutinas relacionadas.
Un problema potencial de los lenguajes orientados a objetos es que el programador debe
conocer una extensa biblioteca de clases, pero este tiempo est compensado con el
tiempo ahorrado en la reutilizacin de cdigo, en lugar de tener que volverlo a crear.

Unidad 1: Diseo Orientado a Objetos 43


U.N.S.J. - Facultad de Ciencias Exactas, Fsicas y Naturales - Departamento de Informtica
Asignatura: PROGRAMACION ORIENTADA A OBJETOS - 2011

Booch define la diferencia entre programar en forma tradicional (programacin


procedimental) y programar con objetos (programacin orientada a objetos), de la
siguiente manera:
Lea las especificaciones del software que desea desarrollar. Subraye los verbos si desea
cdigo procedimental o los nombres (sustantivos), si desea cdigo orientado a objetos.
(1)

Conclusiones
La programacin orientada a objetos es producto de un proceso evolutivo permanente de
los lenguajes de programacin, esto significa que no se descartan viejos conceptos sino
que se van incorporando algunos nuevos. Conceptos como los de abstraccin y
encapsulamiento, pilares de la POO, ya fueron incorporados por el Diseo Modular,
mientras que el concepto de herencia surge en esta nueva metodologa.

En este nuevo paradigma de orientacin a objetos, los objetos y las clases son los
pilares y los mtodos, los mensajes y la herencia son mecanismos primarios. Hasta
ahora la creacin de un programa consista en la definicin de procesos que actuaban
sobre un conjunto independiente de datos.

En la POO los objetos son mdulos autocontenidos que hacen referencia tanto a los
datos como a los procedimientos que actan sobre dichos datos. Los procedimientos de
un objeto se llaman ahora mtodos y representan el comportamiento del mismo. Las
caractersticas comunes de un conjunto de objetos que tienen un mismo comportamiento
se agrupan en una clase, a partir de ella pueden crearse nuevas clases (subclases) que
heredan los mtodos y los atributos de la clase superior, permitindole al programador
programar solamente las diferencias.

Unidad 1: Diseo Orientado a Objetos 44