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
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.
Modelado de objetos con UML / Pierre-Alain Muller. -- Barcelona: Gestin 2000. 1997.
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-1.pdf
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.
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
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.
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
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
Para eso, utilizaremos como notacin a UML ((Unified Modeling Language o Lenguaje de
Modelamiento Unificado).
4
http://www.sparxsystems.com.ar/resources/uml2_tutorial.html
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.
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.
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
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
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.
Un mensaje
Otro objeto
Un objeto
Operacin1 Operacin2
{...} {...}
:Avin
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
: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.
Por ejemplo, el DNI puede ser una clave natural para distinguir personas, el nmero de
patente para distinguir automviles, etc.
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.
: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
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.
Registra alquiler
Ejemplo 2:
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:
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).
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
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
4. CLASES
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;
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.
CAJA DE AHORRO
depositar;
extraer;
consultarsaldo;
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)
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
8
Estos niveles se corresponden con los propuestos por el lenguaje de programacin C++:
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
+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.
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.
Caja-de- Ahorro
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.
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
Abstracciones ms generales
Vehculo
Vehculo Vehculo
Terrestre areo
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
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.
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()
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
Por ejemplo:
La siguiente jerarqua de clase modela la impresin de todo documento escrito que emita
el Supermercado EL Torito.
Impresin
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.
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.
PARALELOGRAMO (Dos pares de
lados paralelos)
ROMBO RECTANGULO
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.
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.
Asociacin
Agregacin
Generalizacin / Especializacin / Herencia /
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
Clase de Asociacin:
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.
Alumno Asignatura
inscripcin
-matrcula -cdigo
Solicitud
-matrcula
-cdigo
-fecha_ins
+ ...........
Otro ejemplo:
Paciente
Medico Atencin
-nombre
-nombre -direccin
-direccin 1....* 1...*
Ficha Mdica
+ . + ..
ACTIVIDAD 6
Narrativa
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.
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
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
12
En UML 1 se la denomina Agregacin de contenido por valor
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.
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
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
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.
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.
8. LIGADURA
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 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.
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.
13
Extraido del libro Mtodo de Objetos con UML
:objeto persitente
Almacenamien
to permanente
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.