Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pgina 1 de 12
Diseo de Sistemas
Objetivos de la Unidad 1
En esta unidad plantearemos los principios y caractersticas fundamentales del
paradigma Orientado a Objetos.
Veremos una sntesis histrica de la evolucin de mtodos y herramientas del
paradigma orientado a objetos desde su nacimiento hasta nuestros das.
Al finalizar la unidad el alumno conocer:
- Como evolucionaron histricamente las metodologas orientadas a objetos.
- Cuales son los conceptos y principios fundamentales sobre los que se asienta el
paradigma.
- Como funciona y cuales son los elementos esenciales de un sistema orientado a
objetos.
- Una introduccin al proceso de exploracin y bsqueda de objetos.
Recursos adicionales
Bibliografa.
Pgina 2 de 12
Diseo de Sistemas
Pgina 3 de 12
Diseo de Sistemas
Unificado). Al igual que UML, debe su nombre de unificado a que en este proceso se
han fusionado los principales conceptos, tcnicas, y herramientas, y las mejores
prcticas de distintos procesos de desarrollo que evolucionaron anteriormente.
En la unidad 3 del curso estudiaremos este proceso de desarrollo.
A fines de la dcada de los 90, como reaccin a las metodologas clsicas, criticadas
por burocrticas y pesadas, un grupo de metodlogos estableci una nueva filosofa
para el desarrollo de software dando origen a lo que se conocen como Mtodos giles
de los cuales quiz el ms emblemtico es conocido como Programacin Extrema (XP).
Estudiaremos estos mtodos en la unidad 4.
Pgina 4 de 12
Diseo de Sistemas
Pgina 5 de 12
Diseo de Sistemas
Un error comn es pensar que los objetos son simplemente abstracciones de datos como
las entidades de un modelo entidad-relacin, olvidando que un aspecto esencial de los
objetos es su comportamiento, o sea las operaciones que sabe realizar.
Concepto de Mensaje
Los mensajes son el mecanismo por medio del cual se comunican los objetos para poder
interactuar y colaborar unos con otros.
El envo de mensajes implica que hay un objeto emisor y un objeto receptor del
mensaje. El emisor del mensaje debe conocer al receptor para poder enviarle dicho
mensaje. Esto implica lo que denominaremos una relacin de conocimiento. La
recepcin de un mensaje dispara una o ms operaciones en el objeto receptor.
Se puede enviar mensajes a un objeto con diferentes propsitos:
Para indagar el valor de alguno de sus atributos:
por ej. unaCuenta.obtenerSaldo();
Para asignar un valor a alguno de sus atributos:
por ej: unaCuenta.asignarSaldo(1000);
Para solicitar la realizacin de una operacin:
por ej. unaCuenta.depositar(unValor);
Por otra parte los mensajes pueden ser:
Sincrnicos: cuando el objeto emisor queda al aguardo de una respuesta por parte del
receptor para poder continuar con sus acciones.
Asincrnicos: cuando el objeto emisor luego de emitir el mensaje contina sus acciones
sin aguardar ninguna respuesta.
De tiempo lmite: cuando el objeto emisor queda al aguardo de una respuesta por parte
del receptor para poder continuar con sus acciones, pero solo un tiempo prefijado. Si
luego de dicho perodo de tiempo (time-out) no se tiene respuesta, el objeto emisor
contina con sus acciones.
Concepto de Colaboracin
Una colaboracin se produce cuando dos o ms objetos interactan entre si para realizar
una tarea. Ya que un solo objeto no puede realizar todas las tareas del sistema, estas
deben distribuirse entre los distintos objetos que componen el sistema, y al igual que los
empleados de una empresa deben colaborar unos con otros para poder cumplir con las
tareas asignadas, los objetos deben colaborar entre s para cumplir los propsitos del
sistema. Esta interaccin se lleva a cabo a travs del envo de mensajes. Cuando un
objeto no sabe como realizar una tarea por estar fuera del alcance de su
responsabilidad, delega en otro objeto la realizacin de la misma, solicitando esto por
medio del envo de un mensaje.
Pgina 6 de 12
Diseo de Sistemas
Concepto de Responsabilidad
Todo objeto tiene definido un rol dentro del sistema tal como lo tiene un empleado en
una organizacin. Se entiende por responsabilidad que cosas conoce el objeto y que
cosas sabe hacer. O sea podemos hablar de responsabilidad de saber y de hacer.
Determinar correctamente la responsabilidad de un objeto es uno de los aspectos
cruciales para abordar a un correcto diseo.
Concepto de Clase
Otro concepto fundamental de la orientacin a objetos es el concepto de clase.
Podemos ver a este concepto desde dos ngulos.
Por una parte, conceptualmente una clase es un grupo de objetos con propiedades
(atributos) similares, comportamiento comn (operaciones), relaciones comunes entre
objetos, y semntica comn (J.Raumbaugh). En este sentido una clase es un poderoso
mecanismo conceptual para agrupar objetos similares en conceptos finitos.
Por otra parte, una clase es una matriz, un molde que se utiliza para crear objetos del
mismo tipo. Esto es fundamentalmente vlido en el caso de los lenguajes orientados a
objetos basados en clases, tal el caso de Smalltalk y Java.
Principios fundamentales
El paradigma de orientacin a objetos especifica cuatro principios fundamentales que
deben observar los lenguajes y ambientes de software para poder ser consideraros
realmente orientados a objetos:
Abstraccin
La abstraccin es un principio segn el cual la mente se enfoca en los aspectos
importantes de un problema y descarta los irrelevantes, para poder tratar con la
complejidad del mismo. La abstraccin es el principio fundamental para poder construir
modelos, y es el mecanismo principal del cerebro para poder trabajar con problemas
complejos.
El principio de abstraccin no es propio de la orientacin a objetos, por el contrario es
un principio esencial a la actividad de desarrollo de software en tanto actividad de
construccin de modelos, independiente del paradigma que se siga. Sin embargo en el
paradigma orientado a objetos la abstraccin toma un carcter especial, diferente a la
forma en que se desarrollan las abstracciones en los enfoques tradicionales. En estos
ltimos, la realidad es modelada como un conjunto de datos que caracterizan a las
entidades que participan en el problema (archivos o tablas), y abstracciones de
comportamiento (programas) que actan sobre dichas abstracciones de datos. En tanto
en la orientacin a objetos tanto datos como comportamiento son abstrados y
encapsulados en una misma unidad denominada objeto.
Pgina 7 de 12
Diseo de Sistemas
Encapsulamiento
Mecanismo que permite ocultar los detalles de implementacin de un objeto. Permite
empaquetar en una unidad los datos y las funciones que operan sobre dichos datos. El
objeto as solo es conocido y manipulado por la interfase que presenta al medio
ambiente en el cual existe.
Herencia
Es una relacin entre clases de objetos que permite incluir (rehusar) los atributos y
operaciones definidas en otra clase ms general de la cual se hereda o deriva.
Polimorfismo
Polimorfismo es el principio por el cual una misma operacin es resuelta de diferente
forma segn el objeto que recibe el mensaje.
Ms precisamente, polimorfismo es la habilidad de los objetos pertenecientes a
diferentes clases de responder a llamadas a mtodos de mismo nombre, cada uno acorde
a un comportamiento especfico de la clase a la que pertenecen.
Por esto, el programador no necesita conocer el tipo exacto del objeto por anticipado, ya
que el mismo es resuelto en tiempo de ejecucin (esto se llama binding dinmico).
Pgina 8 de 12
Diseo de Sistemas
identificadas
deben
agregarse
las
tarjetas
CRC
Identificando Colaboraciones
Las clases pueden cumplir sus responsabilidades realizando las operaciones por si solas
o colaborando con otras clases.
A.U.S. Gustavo Torossi
Pgina 9 de 12
Diseo de Sistemas
Para encontrar colaboraciones, realizar las siguientes preguntas por cada clase:
- Es la clase capaz de cumplir sus responsabilidades por si mismo? Si no, de
que otra clase necesita colaboracin?
- Qu otra clase necesita utilizar las responsabilidades de esta clase?
Las clases que no participan en ninguna colaboracin son sospechosas y normalmente
se descartan.
Las colaboraciones identificadas pueden agregarse en las tarjetas CRC.
Interfaz
Estas clases representan las interfaces del sistema con los usuarios y con otros sistemas
con los que interacta. Deberan contener la menor cantidad de Lgica del Negocio y
limitarse a la lgica correspondiente al dilogo con los actores. Estas clases de objetos
se corresponden con la Vista y el Controlador del patrn MVC.
En los puntos donde los actores inician o se comunican con los casos de uso, existe a
menudo intercambio de datos. El actor suministra datos al sistema, o el sistema brinda
datos al actor.
Es importante identificar que datos son pasados. Estos datos pueden ser descriptos
utilizando clases de objetos interfase (que se corresponde con pantallas, ventanas,
reportes, etc.). Es necesario identificar clases de objetos interfaces cuyos datos son
suministrados a los actores o recibidos desde ellos.
Como heurstica general se crear:
Durante el anlisis, se crear una clase interfaz por cada vnculo caso de uso- actordispositivo. Esta clase representa la interfase principal del vnculo del actor con el
dispositivo. Por ejemplo un supervisor de almacn puede utilizar una interfase GUI para
controlar movimientos de stock y una impresora para imprimir detalles de movimientos.
Para estas actividades se pueden identificar dos objetos interfaz.
La identificacin y diseo de los componentes de esta interfaz, que tambin son objetos
interfaz (ej. botones, cajas de texto, etc.), se difiere hasta el diseo detallado de la
aplicacin.
Tambin, siguiendo el patrn MVC, se puede asignar una clase interfaz (view) para
cada entidad (model) que participa.
Pgina 10 de 12
Diseo de Sistemas
Objetos interfaz pueden modelar protocolos de comunicacin por capas como el modelo
ISO. Un objeto interfaz se define por cada capa, el cual se comunica solo con objetos de
la capa superior e inferior inmediata.
Se sugiere la siguiente nomenclatura para nominar estas clases: UINombreClase
Objetos Entidad
Estas clases se corresponden con el Modelo del patrn MVC. Estos objetos representan
generalmente la memoria. Encapsulan datos sobre entidades y conceptos del negocio
que deben recordarse, y las reglas del negocio que se aplican a los mismos (ej. Alumno,
Cuenta, Libro, etc.).
En virtud de esto, estas clases requieren de mecanismos de persistencia para almacenar
los datos en algn sistema de almacenamiento, tpicamente mecanismos de mapeo
objeto-relacional para almacenar en bases de datos relacionales.
En la realizacin de los prcticos, se asumir una simplificacin, para lo cual el alumno
se limitar a crear estas clases y simular con constantes los datos que requiriera para
demostrar el programa funcionando.
La nomenclatura utilizada para nominar estas clases ser: ENNombreClase
Objetos de control
Estas clases tienen la funcin primaria de coordinacin del flujo de eventos entre
objetos. No debe confundirse estas clases con la clase Controlador del patrn MVC.
A estas clases tambin se asignan responsabilidades que no son inherentes a alguna
clase entidad o interfaz en particular.
Los objetos de control se vinculan con los actores a travs de objetos interfaz. Los
objetos de control a menudo actan como un conjunto de buffers entre los objetos
entidad y los de control.
Debe tenerse la precaucin de no utilizar objetos de control para separar funciones de
datos, ya que esto va en contra del principio de encapsulamiento de la orientacin a
objetos, y se corre el riesgo de caer en un enfoque procedural clsico.
Como lineamiento general, cuando se disee una realizacin de caso de uso, se asigna
una clase de control como coordinadora primaria del flujo de eventos de dicha
realizacin. Esto no es estrictamente necesario, pero es una prctica recomendable.
La nomenclatura utilizada para identificar estas clases ser: CTNombreClase
Pgina 11 de 12
Diseo de Sistemas
Pgina 12 de 12