Академический Документы
Профессиональный Документы
Культура Документы
3.1 Introduccin
El diseo orientado al objeto, al igual que otras metodologas de diseo orientadas a
la informacin, crea una representacin del campo del problema del mundo real y lo
hace corresponder con el mbito de la solucin, que es el software.
El diseo orientado al objeto produce un diseo que interconecta objetos de datos
(elementos dato) y operaciones de una forma que modulariza la informacin y el
procesamiento; por el contrario, otros mtodos dejan aparte el procesamiento.
La naturaleza nica del diseo orientado al objeto queda reflejada en su capacidad
de construir sobre tres pilares conceptuales importantes del diseo de software:
Abstraccin
Ocultamiento de informacin
Modularidad
Estos conceptos se explicarn en los siguientes puntos.
El anlisis orientado al objeto (AOO), el diseo orientado al objeto (DOO) y la
produccin orientada al objeto comprenden un conjunto de actividades de Ingeniera del
Software para la construccin del sistema orientado a objetos.
Utilizando el diseo orientado al objeto el diseador puede crear sus propios tipos
abstractos de datos y abstracciones funcionales y hacer corresponder el campo del
mundo real con esas abstracciones creadas por el propio programador. Esta
correspondencia ser la mayora de las veces mucho ms natural, ya que el rango de
tipos abstractos de datos que puede inventar el diseador es virtualmente ilimitado. Ms
an, el diseo del software se desliga de los detalles de representacin, sin que ello
afecte al sistema de software global.
Los objetivos clave del diseo orientado al objeto son:
A. Aumentar la productividad: Segn algunos estudios, el diseo orientado al
objeto logra aumentar la productividad de un desarrollo en un 20 %, lo cual
no es mucho. Sin embargo, sabemos que entre el 75% y el 80% del coste de
un sistema se produce despus del desarrollo inicial. Pues bien, es
precisamente en esta fase donde el diseo orientado al objeto puede
ayudarnos a aumentar de forma espectacular la productividad.
Pgina -102-
MOO:Introduccin
B. Incrementar calidad: Cuando hacemos referencia al trmino calidad no solo
nos estamos refiriendo a la ausencia de errores, sino tambin a otros
aspectos quizs no tan fciles de medir como son la facilidad de uso, la
portabilidad o la facilidad de modificacin.
C. Facilidad de mantenimiento: Debemos partir de la base que es imposible
prever cambios que se producirn en meses o quizs aos posteriores, pero
lo que si podemos hacer es separar las partes del sistema que son
intrnsecamente voltiles de aquellas que pueden ser estables. Los aspectos
ms voltiles podran ser el interface externo, los atributos que describen
tems en el dominio del problema;... Mientras que los ms estables deben ser
las clases.
D. Continuidad en la representacin: Uno de los problemas ms importantes
que presentan las metodologas estructuradas clsicas es el problema de
comunicacin existente entre las fases de Anlisis y Diseo, e incluso
dentro de la primera , entre los DFD (Diagramas de Flujo de Datos) y los
DER (Diagramas Entidad-Relacin).
Las tcnicas orientadas a objetos resuelven este problema, de manera que :
No hay diferencias entre la notacin empleada en el anlisis y la que
se usa en el diseo.
No hay etapa de transicin al diseo.
Es posible intercalar tareas del Anlisis Orientado a Objetos y del
Diseo Orientado a Objetos en el ciclo de desarrollo de la aplicacin.
Sin embargo, anlisis y diseo usan tcnicas diferentes. Mientras que
el AOO utiliza tcnicas que ayudan a identificar y definir clases y
objetos del dominio del problema, el diseo orientado al objeto
emplea tcnicas que ayudan a identificar y definir clases y objetos
que reflejen la implementacin de requerimientos.
La representacin es uniforme desde el AOO hasta el DOO y la
Reusabilidad:
Los nuevos sistemas OO pueden ser creados utilizando
otros Sistemas Orientados a Objetos ya existentes.
Pgina -103-
MOO:Introduccin
3.1.1.1
HISTORIA Y MITOS
3.1.1.2
Pgina -104-
MOO:Introduccin
que la POO ofrece una forma ms natural de expresar o modelar los problemas
del mundo real en un computador.
Otro mito que tampoco es cierto completamente es el de que la POO rompe
completamente con la programacin procedural, no slo no es cierto, sino que
adems de valerse de ella la extiende con los nuevos conceptos que aade.
Otra idea a eliminar es la de que todo LOO necesita de una Librera de Clases a
partir de la cual derivar cualquier clase nueva para trabajar con l, SmallTalk.
Tambin es falso lo que alguna vez se ha dicho como que un LOO no puede
obtenerse como evolucin de uno no OO, slo puede ser LOO uno nuevo
diseado para ello. La mayora de LOO de hoy en da son evoluciones de
lenguajes de 3 generacin corrientes, tales como Pascal, C, etc.
Otro aspecto a desmitificar en programas realizados con tcnicas de POO es el
de que estos no presentan una ejecucin ordenada y clara. La ejecucin de un
programa realizado utilizando POO consiste en el dilogo que se establece entre
los objetos que conforman el problema que se trata de resolver. Este dilogo se
realiza mediante el paso de mensajes entre ellos.
CLASE
Consiste en la descripcin de uno o ms objetos del mundo real en base a una serie
de atributos y servicios.
A estos atributos se les llama tambin variables de instancia, mientras que a los
servicios se les llama mtodos.
Se puede decir que representa al conjunto de objetos que comparten una estructura
y comportamiento comunes.
Una clase debe tener una parte no visible desde el exterior y una parte visible que
es la encargada de acceder a esta parte no visible. En la parte no visible se suelen situar
las variables de instancia mientras que en la visible se colocan los mtodos de instancia.
A las clases cuyas instancias son a su vez clases se les llama metaclases.
No se debe confundir el concepto de clase con el de Tipo Abstracto de Datos. La
diferencia est, segn autores, en que los TAD no soportan herencia, mientras que el
concepto de clase s.
3.1.2.2
OBJETOS
Pgina -105-
MOO:Introduccin
Algo a lo que va dirigido el pensamiento o la accin.
Podemos utilizar como definicin formal del mismo la siguiente:
Un objeto es una entidad real o abstracta con un papel bien definido
en el dominio del problema.
Adems, un objeto se caracteriza porque presenta un estado, un comportamiento y
una identidad propia.
El estado de un objeto representa todas las propiedades, normalmente estticas, del
objeto adems de los valores actuales, normalmente dinmicos, de cada una de estas
propiedades.
Podemos decir que el comportamiento de un objeto es el modo en que ste acta y
reacciona, hablando en trminos de cambios en su estado y paso de mensajes.
3.1.2.3
MENSAJES Y MTODOS
El trmino utilizado para nombrar a la accin que un objeto realiza sobre otro es el
de mensaje y tambin el de operacin.
Podemos decir que lo que un objeto le pide que realice a otro es el mensaje,
mientras que cmo hace el segundo objeto eso que le han pedido sera el mtodo.
Segn diversos autores puede haber hasta cinco tipos distintos de operaciones sobre
un objeto:
Modificadoras.
Selectoras.
Iteradoras.
Constructoras.
Destructoras.
En cuanto a la identidad, sta se define como la propiedad que distingue a un objeto
de otros, y normalmente viene designada por un nombre nico de variable.
ENCAPSULACIN
Pgina -106-
MOO:Introduccin
Los mecanismos clsicos de abstraccin utilizados han sido, y por este orden:
Procedimientos.
Mdulos.
TAD's.
Objetos junto con el paso de mensajes, herencia y polimorfismo.
Segn este criterio, al agrupar las funciones que trabajan con una serie de datos en
la misma entidad que estos, se consigue independizar la implementacin interna de la
misma, de manera que posibles cambios en su interior afectan mnimamente a sus
usuarios.
Trabajando de este modo se consigue minimizar el tiempo empleado en desarrollar
un nuevo sistema.
3.1.3.2
HERENCIA
MOO:Introduccin
Velocidad de ejecucin menor.
Tamao de los programas mayor.
Sobrecarga debida al paso de mensajes.
Aumento de la complejidad de los programas.
3.1.3.3
PASO DE MENSAJES
3.1.3.4
ENLACE DINMICO
Pgina -108-
MOO:Introduccin
Cuando se habla de tipo de un identificador, se debe distinguir entre:
Identificador: Es slo un nombre.
Valor: El contenido de la memoria asociada a un identificador.
Tipo: Depende del lenguaje con el que trabajemos. En unos casos ir asociado
a una variable y significar una cosa, mientras que en otros ir asociado a un
valor y significar otra.
3.1.3.5
POLIMORFISMO
Pgina -109-
MOO:Introduccin
Una vez que se ha definido la clase, se pueden crear instancias de esa clase, como
por ejemplo, el nuevo objeto Mesa (aparece en la figura 2), que es miembro de la clase
Mueble y hereda todos los atributos del mueble.
Cada objeto de la clase mueble puede ser manipulado de muchas formas. Puede ser
vendido y comprado, modificado (quitar una pata o pintarlo de rojo) o movido de un
sitio a otro. Cada uno de esos mtodos u operaciones modifican uno ms atributos del
objeto. Por ejemplo, si el atributo situacin es realmente un elemento de datos
compuesto que est definido como:
situacin = Edificio + piso + habitacin.
entonces, una operacin denominada Mover modificar uno o ms de esos
elementos de datos que componen el atributo situacin. Ms operaciones vlidas sern
las siguientes, comprar, vender, pesar, etc.
Todas la operaciones para la clase Mueble son heredadas por todas las instancias de
la clase.
Pgina -110-
MOO:Introduccin
La figura 2 muestra el esquema que resultara:
IDENTIFICACIN DE OBJETOS
Si miramos alrededor de una habitacin, veremos objetos fsicos que pueden ser
identificados fcilmente pero cuando observamos una aplicacin de Software resulta
ms complicado detectar objetos.
Para identificar objetos debemos hacer lo siguiente:
Examinar la descripcin del problema llevando a cabo un anlisis gramatical de
la descripcin del procesamiento del sistema a construir.
Determinar los objetos subrayando cada nombre y aadindolo en una tabla.
Una vez aislados todos los nombres los objetos pueden ser:
Entidades Externas.- (gente, dispositivos), que producen o consumen
informacin a ser utilizada en el sistema.
Pgina -111-
MOO:Introduccin
Cosas.- (Informes, cartas, seales) que son parte del dominio de
informacin del problema.
Ocurrencias o sucesos.- (Transferencia de una propiedad) que ocurren en
el contexto de operacin del sistema.
Papeles.- que juegan las personas que interactan con el sistema
(vendedor, ingeniero).
Unidades Organizativas.- (divisin, equipo, grupo) que son relevantes para
la aplicacin.
Lugares.- (Muelle descarga) que establecen el contexto del problema y del
funcionamiento general del sistema.
Estructuras.- (sensores, ordenadores) que definen clases de objetos.
3.1.5.2
Objeto potencial
Clasificacin
Sensor
Entidad Externa
ESPECIFICACIN DE ATRIBUTOS
3.1.5.3
Una operacin cambia un objeto de alguna forma. Por tanto una operacin debe
tener "conocimiento" de la naturaleza de los atributos del objeto y debe ser
implementada de forma que se le permita manipular las estructuras de las que hayan
sido derivadas de los atributos.
Las operaciones se pueden dividir en 3 categoras:
Manipular los datos (adiciones, borrados)
Realizar algn Clculo
Monitorizar un objeto frente a la ocurrencia de algn suceso de control.
Pgina -112-
MOO:Introduccin
Para obtener un Conjunto de operaciones el analista lleva a cabo de nuevo un
anlisis gramatical y se aslan los verbos.
Ejemplo: "cada sensor tiene asignado un tipo y un nmero".
Operacin - ASIGNACION
3.1.5.4
op1
op2
op6
op7
op8
op3
op4
op5
op10
op11
3.1.5.5
EJEMPLO
Pgina -113-
MOO:Introduccin
crear_primitiva
poner_posicin
obtener_posicin
sumar_posicin
poner_orientacin
obtener_orientacin
sumar_orientacin
poner_escala
obtener_escala
sumar_escala
poner_color
obtener_color
Como hemos visto en el apartado 3.1.3.3 existen una serie de operaciones que
son las nicas que pueden acceder a los datos privados de los objetos. Tambin
hemos visto que la comunicacin entre objetos se realiza mediante el pase de
mensajes. En los mensajes anteriores observamos que se invocan a cuatro tipos
diferentes de operaciones :
! que invoca a la funcin de crear primitiva.
= que invoca a la funcin de asignar valor
+ que invoca a la funcin que modifica el valor
Pgina -114-
MOO:Introduccin
? que invoca a la funcin que devuelve el valor actual del atributo en
cuestin.
Probar el diseo con guiones
Hacemos corresponder los requisitos con guiones sencillos que muestren cmo
conseguir cada requisito:
Crear primitiva:primitiva nueva!nombre=unaPrimitiva
Mover
:
unaPrimitiva posicin = (1, 2)
Rotar
:
unaPrimitiva orientacin = 30
Escalar
:
unaPrimitiva escala = (10, 1)
Colorear
:
unaPrimitiva color = (1, 0, 0)
Ahora repetimos los cinco pasos para aadir nuevas abstracciones.
Identificar las abstracciones de datos para cada subsistema
La figura 4 muestra este nivel de abstraccin, Polgono, Cnica, Cinta
OBJETO
GEOMETRICO
PRIMITIVA
PRIMITIVA
POLIGONO
CONICA
CINTA
crear_cnica
poner_coeficientes
obtener_coeficientes
MOO:Introduccin
Seis son los coeficientes que especifican una cnica. Observamos, sin embargo,
que los crculos y las elipses tienen parmetros que puede especificar fcilmente
un usuario, cnica - {parbola, elipse, crculo, hiprbola}.
PRIMITIVA
POLIGONO
PARABOLA
CONICA
ELIPSE
CINTA
CIRCULO
HIPERBOLA
Pgina -116-