Sei sulla pagina 1di 12

Diseo Orientado a Objetos I.

INTRODUCCIN

M.C. Mario Rossainz Lpez

El reciente aumento de aplicaciones en donde se utiliza la computadora ha sido posible debido a un hardware de bajo costo, por lo cual la demanda de software ha crecido de forma exponencial. Esto implica que son necesarias tcnicas y tecnologa eficientes de Ingeniera de Software para resolver los mltiples problemas que se derivan de las aplicaciones en donde se desarrollan sistemas software de gran tamao. La Ingeniera de Software implica seguir en cualquier proyecto de software una metodologa de desarrollo y la utilizacin de distintas tcnicas y herramientas. Los diferentes procedimientos a seguir en cualquier proyecto de Ingeniera de software son: Definicin de requerimientos, Anlisis, Diseo, Verificacin y Validacin (Pruebas de Calidad del Software), Pruebas y Mantenimiento. El presente documento intenta dar a conocer y describir los conceptos y aspectos fundamentales del diseo orientado a objetos (DOO) dentro del desarrollo de un producto software, as como las tcnicas , metodologas y herramientas actuales de dicho paradigma en la Ingeniera de software. As pues, definimos Diseo de Software como la accin de construir soluciones que satisfagan los requerimientos del cliente. Existen varias etapas en el proceso de diseo de software, a saber son: ? Entendimiento del problema ? ? Identificar una o mas soluciones ? ? Describir abstracciones de la solucin ? ? Repetir el proceso para cada abstraccin identificada hasta que el diseo este ? expresado en trminos sencillos Cualquier diseo debe ser modelado como una grfica dirigida hecha de entidades con atributos los cuales participan en relaciones. El sistema debe estar descrito a distintos niveles de abstraccin y el diseo ocurre en etapas que se traslapan. La primera idea que se tiene al construir una solucin de un determinado problema es un modelo mental que constituye el primer intento de diseo llamado comnmente diseo informal. Este diseo a medida que se va describiendo en papel utilizando tcnicas y procedimientos esquemticos y metdicos va adquiriendo forma hasta constituirse en un diseo formal equivalente. La siguiente figura ejemplifica este hecho:
Info rm a l d es ig n o ut li ne Info rm a l d es ig n M ore f o rm a l d es ig n

F i ni sh e d d es ig n

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

Pues bien, dentro del paradigma de la orientacin a objetos, el diseo OO es con mucho; ms complejo que el diseo estructurado clsico, ya que lo que se busca es crear un diseo genrico y abierto y no cerrado y concreto. El Diseo Orientado a Objetos se define como un diseo de sistemas que utiliza objetos auto-contenidos y clases de objetos.

Caractersticas principales del Diseo Orientado a Objetos: Los objetos son abstracciones del mundo real o entidades del sistema que se administran entre ellas mismas
u uLos

objetos son independientes y encapsulan el estado y la representacin de informacin


uLa

funcionalidad del sistema se expresa en trminos de servicios de los objetos

uLas

reas de datos compartidas son eliminadas. Los objetos se comunican mediante paso de parmetros
uLos

objetos pueden estar distribuidos y pueden ejecutarse en forma secuencial o en paralelo

Ventajas del Diseo Orientado a Objetos:


uFcil de mantener, los objetos representan entidades auto-contenidas

uLos objetos son componentes reutilizables uPara algunos sistemas, puede haber un mapeo obvio entre las entidades del mundo real

y los objetos del sistema

Desarrollo Orientado a Objetos:


u El anlisis, diseo y programacin orientada a objetos estn relacionados pero son

diferentes
u El anlisis orientado a objetos concierne al desarrollo del modelo de objetos del dominio

de la aplicacin
u El Diseo Orientado a Objetos trata del desarrollo del modelo del sistema orientado a

objetos para implementar los requerimientos

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

u La programacin orientada a objetos trata de la realizacin del Diseo Orientado a

Objetos utilizando algn lenguaje de programacin orientada a objetos como C++

Mtodos de Diseo Orientado a Objetos


uAlgunos

mtodos que fueron originalmente basados en funciones (mtodo de Yourdon) han sido adaptadas al diseo orientado a objetos. Otros mtodos como el mtodo de Booch han sido especficamente desarrolladas especficamente para el Diseo Orientado a Objetos
uEl

Diseo Orientado a Objetos es un mtodo de diseo desarrollado para soportar la programacin en Ada.
uJSD

(Jackson system development) tiene una cierta orientacin a objetos pero no contiene informacin sobre estados entidad

Componentes del Diseo Orientado a Objetos


uLa identificacin de objetos, sus atributos y servicios

uLa organizacin de objetos dentro de una jerarqua uLa construccin de descripciones dinmicas de objetos que muestran como se usan los

servicios
uLa especificacin de interfaces de objetos

Objetos, Clases y Herencia:


uLos objetos son entidades en un sistema de software que representan instancias de

entidades del mundo real


uLas clases objetos son templates para objetos. Pueden usarse para crear objetos uLas clases objetos pueden heredar atributos y servicios de otras clases objetos

Objetos:

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

? Un objeto es una entidad que tiene un estado y un conjunto definido de ? operaciones que operan sobre este estado. ? El estado se representa mediante un conjunto de atributos del objeto. ? ? Las operaciones asociadas con el objeto proveen servicios a otros objetos ? (clientes) que requieren estos servicios cuando necesitan realizar alguna actividad de cmputo. ? Los objetos se crean de acuerdo a una definicin de la clase objeto. ? ? La definicin de la clase objeto sirve como template para los objetos. Esta ? incluye las declaraciones de todos los atributos y servicios los cuales deben estar asociados con un objeto de esta clase.

Objeto FOCO: Datos: filament o, bombilla, rosca


Operaciones: EncenderFoco()

LA CLASE TRANSPORTES

Comunicacin entre Objetos:

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

uConceptualmente los objetos se comunican mediante paso de mensajes. uMensajes

El nombre del servicio requerido por algn objeto que llama. Copias de la informacin requerida para ejecutar el servicio y el nombre de quien tiene esta informacin.
uEn la practica, los mensajes se implementan a menudo mediante llamadas de

procedimientos Nombre = nombre de procedimiento. Informacin = lista de parmetros.

Herencia:

uLos objetos son miembros de clases que define tipos de atributos y operaciones

uLas clases pueden organizarse en jerarquas de clases donde una clase se deriva de

una clase existente (super-clase)


uUna sub-clase hereda los atributos y operaciones de su super-clases y puede a adir

nuevos mtodos o atributos propios

Animal

Mamfero

Reptil...

Canino

Felino...

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

Herencia y Diseo Orientado a Objetos


uExisten distintos puntos de vista de la herencia respecto al Diseo Orientado a Objetos.

? Punto de vista 1. Identificar la jerarqua de herencias es una parte fundamental del ? diseo orientado a objetos. Obviamente esto solo puede implementarse utilizando lenguajes de programacin orientados a objetos.
? ?

Punto de vista 2. La herencia es un concepto til para implementacin que permite reusar los atributos y las operaciones. La identificacin de la jerarqua de herencias en la fase de diseo pone muchas restricciones en la implementacin.

Identificacin de Objetos:
uLa identificacin de objetos es la parte ms difcil del diseo orientado a objetos

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

uNo hay una formula mgica para la identificacin de objetos. Se base en la experiencia y

el conocimiento del dominio de los diseadores del sistema


ula identificacin de objetos es un proceso iterativo. Es difcil que salga bien la primera

vez

En Resumen:

uEl diseo orientado a objetos es un diseo con ocultamiento de informacin. La

representacin puede cambiarse sin cambios muy extensos.


uUn objeto tiene un estado privado con un constructor asociado y operaciones de acceso.

Los objetos proveen servicios (operaciones) a otros objetos.


uLa identificacin de objetos es un proceso difcil. La identificacin de sustantivos y verbos

en lenguaje natural es til para identificar objetos

uLas interfaces de objetos deben ser precisamente definidas. Un lenguaje de

programacin como Ada, C++ o JAVA puede usarse para esto


uDocumentacin til para el diseo orientado a objetos incluyen, grficas de jerarqua de

objetos y diagramas de interaccin de objetos.


uLos objetos puede implementarse como entidades secuenciales o concurrentes.

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

II. DISEO DE SISTEMAS ORIENTADOS AOBJETOS:


El diseo Orientado a Objetos (DOO) difiere considerablemente del diseo estructurado ya que en DOO no se realiza un problema en trminos de tareas (subrutinas) ni en trminos de datos, sino (como ya se vio en la introduccin) se analiza el problema como un sistema de objetos que interactan entre s. Un problema desarrollado con tcnicas orientadas a objetos requiere, en primer lugar saber cuales son los objetos del programa. Como tales objetos son instancias de clases, la primera etapa en el desarrollo orientado a objetos requiere de la identificacin de dichas clases (atributos y comportamiento), as como las relaciones entre stas y su posterior implementacin en un lenguaje de programacin. Existen numerosos mtodos de diseo orientado a objetos: Booch, Yourdon-Coad, Martn, Shlaer & Mellor, Rumbaugh, por citar algunos. Pero en general como ocurre en cualquier proyecto estructurado, un proyecto software OO se compone de las siguientes etapas: ?? Anlisis Orientado a Objetos (AOO) ?? Diseo Orientado a Objetos (DOO) ?? Programacin Orientada a Objetos (POO) Aunque no siempre estn bien delimitadas las etapas de anlisis y diseo en la OO, se pueden sintetizar de alguna forma las ideas claves de las distintas tecnologas existentes dentro del desarrollo orientado a objetos al que denominaremos diseo. El mtodo de Booch considera que las etapas del proceso en un desarrollo orientado a objetos son: 1. Identificar las claves y objetos en un nivel dado de abstraccin 2. Identificar la semntica de estas clases y objetos 3. Identificar las relaciones entre clases y objetos 4. Especificar la interfaz y la implementacin de estas clases y objetos Estas etapas suelen seguirse por la mayora de los mtodos de diseo OO existentes. De hecho, para los sistemas orientados a objetos se define el siguiente diseo en pirmide que contempla el mtodo de Booch.

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

RESPONSABILIDADES DEL DISEO

DISEO DE MENSAJES

DISEO DE CLASES Y OBJETOS

DISEO DE LOS SUBSISTEMAS


EL DISEO ORIENTADO A OBJETOS EN PIRMIDE

La capa del subsistema.- Contiene una representacin de cada uno de los subsistemas que le permiten al software conseguir los requisitos definidos por el cliente e implementar la infraestructura tcnica que los soporta. La capa de clases y Objetos.- Contiene las jerarquas de clase que permiten crear el sistema usando generalizaciones y especializaciones mejor definidas. Esta capa tambin contiene representaciones de diseo para cada objeto.

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

La capa de mensajes.- Contiene los detalles que le permiten a cada objeto comunicarse con sus colaboradores. Esta capa establece las interfaces externas e internas para el sistema. La capa de responsabilidades.- Contiene las estructuras de datos y el diseo algortmico para todo los atributos y operaciones de cada objeto. Esta pirmide de diseo se centra entonces en el diseo de un producto o sistema especfico.

II.1. EL ENFOQUE CONVENCIONAL Y EL ENFOQUE OO Los enfoques convencionales para el diseo del software aplican notaciones y heursticas diferentes para establecer correspondencias entre el modelo de anlisis y el diseo. Si recordamos la ingeniera de software clsica (imperativa), veremos que cada elemento del modelo de anlisis convencional tiene correspondencia con una o ms capas del modelo de diseo tal como lo ilustra la siguiente figura:

Transformacin Anlisis a Diseo en Ingeniera clsica

b a d g e

f c El modelo de Anlisis

El modelo de Diseo

10

Diseo Orientado a Objetos

M.C. Mario Rossainz Lpez

a.- Descripcin de los objetos de datos b.- Especificacin del proceso c.- Especificacin de control d.- Diagrama Entidad-Relacin e.- Diagrama de flujo de datos D.- Diseo Procedimental D.- Diseo Procedimental A.- Diseo de Datos B.- Diseo Arquitectnico C .- Diseo de Interfaz

f.- Diagrama de transicin de estado g.- Diccionario de datos

D.- Diseo Procedimental A.- Diseo de datos

Al igual que el diseo de software convencional, el DOO aplica diseo de datos (cuando se representan atributos), diseo de interfaces (cuando se presenta el intercambio de mensajes) y diseo procedimental (en el diseo de operaciones), no obstante el diseo arquitectnico es diferente. La arquitectura de diseo OO se centra ms en las colaboraciones entre los objetos que con el flujo de control de datos. De esta manera las capas de la pirmide se renombran para reflejar de forma ms exacta la naturaleza del DOO. La siguiente figura muestra ahora la correspondencia entre el AOO con las correspondientes capas de la pirmide de diseo OO.

Transformacin Anlisis a Diseo en Ingeniera OO

a b e

El modelo de Anlisis OO 11

El modelo de Diseo OO

Diseo Orientado a Objetos a.- Atributos, operaciones, colaboradores

M.C. Mario Rossainz Lpez D.- Responsabilidades en el diseo B.- Diseo de clases y objetos

b.- Tarjetas ndice CRC

D.- Responsabilidades en el diseo B.- Diseo de clases y objetos


C.- Diseo de mensajes

c.- Modelo Objeto-Relacin

d.- Modelo Objeto Relacin

A.- Diseo de Subsistemas

II.2.- EL DISEO:
Bertrand Meyer sugiere los siguientes criterios para poder juzgar la capacidad que pose un mtodo de diseo en poder lograr ciertos elementos importantes tales como la modularidad: Descomponibilidad.- Facilidad con la cual un mtodo de diseo ayuda al diseador a descomponer un gran problema en subproblemas ms sencillos de resolver. Componibilidad.- Grado con el cual un mtodo de diseo asegura que los componentes de un programa (mdulos), una vez diseados y construidos, pueden reusarse para crear otros sistemas. Comprensibilidad.- Facilidad de comprensin de un componente de programa sin referencia a otra informacin o mdulos. Continuidad.- Facilidad de hacer pequeos cambios en un programa y hacer que estos se manifiesten por s mismos en cambios correspondientes solamente en no o unos pocos mdulos ms. Proteccin.- Caracterstica arquitectnica que reducir la propagacin de efectos colaterales si ocurre un error en un mdulo dado. stos criterios y principios de diseo presentados por Meyer pueden aplicarse a cualquier mtodo de diseo (incluyendo diseo estructurado), no obstante el mtodo de diseo orientado a objetos alcanza cada uno de los principios de manera ms eficiente que otros enfoques y el resultado final es una arquitectura modular que permite cumplir con todos los principios de modularidad de una manera ms eficiente.

12

Potrebbero piacerti anche