Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
1. El Problema de la Complejidad del Software Los Cinco Atributos de un Sistema Complejo El Rol de la Descomposicin 2. El Modelo Orientado a Objetos La Evolucin del Modelo de Objetos Elementos del Modelo de Objetos Abstraccin Encapsulamiento Modularidad Jerarqua Tipos (Tipificacin) Concurrencia Persistencia Aplicacin del Modelo de Objetos 3. Objetos y Clases: Naturaleza y Relaciones Estado Comportamiento Identidad Relaciones entre Objetos La Naturaleza de una Clase Relaciones entre Clases Relaciones de herencia Relaciones de uso Relaciones de instanciacin Relaciones de metaclases Relaciones entre Clases y Objetos El Rol de Clases y Objetos en Anlisis y Diseo Relaciones de herencia entre clases Relaciones de uso entre clases Relaciones de instanciacin entre clases Metaclases 4. Metodologa de Booch Anlisis Diseo Evolucin Modificacin
Diagramas de Clases Estados y Transiciones de Estado Diagramas de Objetos Diagramas de Mdulos Diagramas de Procesos 6. El Proceso de Desarrollo en la Metodologa de Booch Identificacin de Clases y Objetos Identificacin de la Semntica de las Clases y Objetos Identificacin de las Relaciones entre Clases y Objetos Implementacin de Clases y Objetos 7. Metodologa OMT Anlisis Diseo de Sistemas Diseo de Objetos 8. Modelos OMT Modelado de Objetos Objetos y Clases Diagramas de Objetos Enlaces y Asociaciones Generalizacin y Herencia Modelado Dinmico Sucesos y Estados Operaciones Modelado Funcional Empaquetamiento Fsico Implementacin Diseo de Objetos Diseo de Asociaciones Asignacin de Subsistemas a Procesadores y a Tareas Administracin de Almacenes de Datos Manejo de las Condiciones de Contorno Diseo del Sistema Descomposicin de un Sistema en Subsistemas Modelado Dinmico Modelado Funcional Adicin de Operaciones Iteracin del Anlisis
5. Notacin de Booch
comunicacin ms difcil, particularmente si el equipo est disperso geogrficamente, y esta situacin no es nada excepcional en proyectos muy grandes. Con un equipo de desarrolladores, el reto clave de la direccin es siempre mantener una unidad e integridad en el diseo. La flexibilidad que se puede alcanzar a travs del software. El software ofrece la flexibilidad mxima por lo que un desarrollador puede expresar casi cualquier clase de abstraccin. Esta flexibilidad resulta ser una propiedad que seduce increblemente, sin embargo, porque tambin empuja al desarrollador a construir por s mismo prcticamente todos los bloques fundamentales sobre los que se apoyan estas abstracciones de ms alto nivel. Los problemas de caracterizar el comportamiento de sistemas discretos. En una aplicacin de gran tamao puede haber cientos o hasta miles de variables, as como ms de un posible flujo de control. El conjunto de todas estas variables, sus valores actuales, y la direccin de ejecucin y pila actual de cada uno de los procesos del sistema constituyen el estado actual de la aplicacin. Al ejecutarse el software en computadoras digitales, se tiene un sistema con estados discretos. Todos los eventos externos a un sistema de software tienen la posibilidad de llevar a ese sistema a un nuevo estado, y ms an, la transicin de estado a estado no siempre es determinista.
El Rol de la Descomposicin
Cuando se disea un sistema de software complejo, es esencial descomponerlo en partes ms y ms pequeas, cada una de las cuales se puede refinar entonces de forma independiente. De este modo se satisface la restriccin fundamental que existe sobre la capacidad de canal de la comprensin humana: para entender un nivel dado de un sistema, basta con comprender unas pocas partes (no necesariamente todas) a la vez. Descomposicin Algortmica. La mayora de los informticos han sido adiestrados en el dogma del diseo estructurado descendente (top-down), y por eso suelen afrontar la descomposicin como una simple cuestin de descomposicin algortmica, en la que cada mdulo del sistema representa un paso importante de algn proceso global. Descomposicin Orientada a Objetos. En esta descomposicin, se ve el mundo como un conjunto de agentes autnomos que colaboran para llevar a cabo algn comportamiento de nivel superior. Cada objeto en esta solucin contiene su propio comportamiento nico, y cada uno modela a algn objeto del mundo real. Desde esta perspectiva, un objeto no es ms que una entidad tangible que muestra un comportamiento bien definido. Los objetos hacen cosas, y se les pide a ellos que realicen lo que hacen envindoles mensajes. Puesto que esta descomposicin est basada en objetos y no en algoritmos, se le llama descomposicin orientada a objetos.
Lenguajes de Primera Generacin (1954-1958) FORTRAN I ALGOL 58 Flowmatic IPL V Expresiones matemticas. Expresiones matemticas. Expresiones matemticas. Expresiones matemticas.
Lenguajes de Segunda Generacin (1959-1961) FORTRAN II ALGOL 60 COBOL Lisp Subrutinas, compilacin separada. Estructura en bloques, tipos de datos. Descripcin de datos, manejo de archivos. Procesamiento de listas, punteros, recoleccin de basura.
Lenguajes de Tercera Generacin (1962-1970) PL/1 ALGOL 68 Pascal Simula FORTRAN + ALGOL + COBOL. Sucesor riguroso del ALGOL 60. Sucesor sencillo del ALGOL 60. Clases, abstraccin de datos.
El Hueco Generacional (1970-1980) Se inventaron muchos lenguajes diferentes pero pocos perduraron.
En generaciones sucesivas, el tipo de mecanismo de abstraccin que admita cada lenguaje fue cambiando. Los lenguajes de la primera generacin se utilizaron principalmente para aplicaciones cientficas y de ingeniera, y el vocabulario de estos dominios de problema fue matemtico casi por completo. As, los lenguajes como FORTRAN I se desarrollaron para que el programador pudiera escribir frmulas matemticas, liberndole de esta forma de algunas de las complicaciones del lenguaje ensamblador o del lenguaje mquina. Esta primera generacin de lenguajes de alto nivel represent por lo tanto un paso de acercamiento al espacio del problema, y un paso de alejamiento de la mquina que haba debajo. Entre los lenguajes de segunda generacin, el nfasis se puso en las abstracciones algortmicas. Por esta poca, las mquinas eran cada vez ms y ms potentes, y el abaratamiento en la industria de las computadoras signific que poda automatizarse una mayor variedad de problemas, especialmente para aplicaciones comerciales. En este momento, lo principal era decirle a la mquina lo que deba de hacer: lee primero esta fichas personales, ordnales despus, y a continuacin imprime este informe. Una vez ms, esta nueva generacin de lenguajes de alto nivel acercaba a los desarrolladores un paso hacia el espacio del problema y los alejaba de la mquina subyacente. A finales de los sesenta, especialmente con la llegada de los transistores y la tecnologa de circuitos integrados, el coste del hardware de las computadoras haba cado de forma dramtica, pero su capacidad de procesamiento haba crecido casi exponencialmente. Ahora podan resolverse problemas mayores, pero eso exiga la manipulacin de ms tipos de datos. As, los lenguajes como ALGOL 60 y posteriormente Pascal evolucionaron soportando abstraccin de datos. El programador poda describir el significado de clases de datos relacionadas entre s (su tipo) y permitir que el lenguaje de programacin apoyase estas decisiones de diseo. Esta generacin de lenguajes acerc de nuevo el software un paso hacia el dominio del problema, y lo alej otro paso de la mquina. Los setenta ofrecieron un frenes de actividad investigadora en materia de lenguajes de programacin, con el resultado de la creacin de literalmente dos millares de diferentes lenguajes con sus dialectos. En gran medida, la tendencia a escribir programas ms y ms grandes puso de manifiesto las deficiencias de los lenguajes ms antiguos; as, se desarrollaron muchos nuevos mecanismos lingsticos para superar estas limitaciones. Slo algunos de estos lenguajes han sobrevivido (acaso ha visto libros recientes sobre los lenguajes Fred, Chaos o Tranquil?); sin embargo, muchos de los conceptos que introdujeron encontraron su camino en sucesores de los lenguajes anteriores. As, hoy en da existen Smalltalk (un sucesor revolucionario de Simula), Ada (un sucesor del ALGOL 68 y Pascal, con contribuciones de Simula, Alphard y CLU), CLOS (que surgi del Lisp, LOOPS y Flavors), C++ (derivado de un matrimonio entre C y Simula), y Eiffel (derivado de Simula y Ada).
Lo que resulta de mayor inters para nosotros es la clase de lenguajes que suelen llamarse basados en objetos y orientados a objetos. Los lenguajes de programacin basados en y orientados a objetos son los que mejor soportan la descomposicin orientada a objetos del software.
10
Modularidad El acto de fragmentar un programa en componentes individuales puede reducir su complejidad en algn grado... Aunque la fragmentacin de programas es til por sta razn, una justificacin ms poderosa para esta fragmentacin es que crea una serie de fronteras bien definidas y documentadas dentro del programa. Estas fronteras o interfaces, tienen un incalculable valor cara a la comprensin del programa. En algunos lenguajes, como Smalltalk, no existe el concepto de mdulo, y as la clase es la nica unidad fsica de descomposicin. En muchos otros, incluyendo Object Pascal, C++, CLOS y Ada, el mdulo es una construccin adicional del lenguaje y, por lo tanto, justifica un conjunto separado de decisiones de diseo. en estos lenguajes, las clases y los objetos forman la estructura lgica de un sistema; si se sitan estas abstracciones en mdulos para producir la arquitectura fsica del sistema. Especialmente para aplicaciones ms grandes, en las que puede haber varios cientos de clases, el uso de mdulos es esencial para ayudar a manejar la complejidad. Jerarqua Frecuentemente un conjunto de abstracciones forma una jerarqua, y la identificacin de esas jerarquas en el diseo simplifica en gran medida la comprensin del problema. Se define la jerarqua como sigue: La jerarqua es una clasificacin u ordenacin de abstracciones. Las dos jerarquas ms importantes en un sistema complejo son su estructura de clases (la jerarqua tipo de) y su estructura de objetos (la jerarqua parte de). Herencia. La herencia es el jerarqua tipo de ms importante y, como se ha visto anteriormente, es un elemento esencial de los sistemas orientados a objetos. Bsicamente, la herencia define una relacin entre clases, en la que una clase comparte la estructura de comportamiento definida en una o ms clases (lo que se denomina herencia simple o herencia mltiple, respectivamente). La herencia representa as una jerarqua de abstracciones, en la que una subclase hereda de una o ms superclases. Tpicamente, una subclase aumenta o redefine la estructura y el comportamiento de sus superclases. Agregacin. Mientras estas jerarquas tipo de denotan relaciones de generalizacin/especializacin, las jerarquas parte de describen relaciones de agregacin. En trminos de su jerarqua tipo de, una abstraccin de alto nivel est generalizada, y una abstraccin de bajo nivel est especializada. Por lo tanto se dice que una clase Planta est a nivel ms alto de abstraccin que una clase Flor. En trminos de su jerarqua parte de, una clase est a nivel ms alto de abstraccin que cualquiera de las clases que constituyen su implementacin. Tipos (Tipificacin)
ELEMENTOS DE ANALISIS Y DESARROLLO ORIENTADOS A OBJETOS 11
Los tipos son la puesta en vigor de la clase de los objetos, de modo que los objetos de tipos distintos no pueden intercambiarse o, a lo ms, pueden intercambiarse slo de formas muy restringidas. Los tipos permiten expresar las abstracciones de manera que el lenguaje de programacin en el que se implementan puede utilizarse para apoyar las decisiones de diseo. Wegner observa que este tipo de apoyo o refuerzo es esencial para la programacin a gran escala. Se considera esto un elemento menor, debido a que un lenguaje puede ser fuertemente tipificado, dbilmente tipificado, o incluso sin tipos, y an as ser llamado basado en objetos u orientado a objetos Concurrencia La programacin orientada a objetos se centra en la abstraccin de datos, encapsulamiento y herencia, la concurrencia se centra en la abstraccin de procesos y la sincronizacin. El objeto es un concepto que unifica estos dos puntos de vista distintos: cada objeto (extrado de una abstraccin del mundo real) puede representar un hilo separado de control (una abstraccin de un proceso). Tales objetos se llaman activos. En un sistema basado en diseo orientado a objetos, se puede conceptualizar el mundo como un conjunto de objetos cooperativos, algunos de los cuales son activos y sirven as como centros de actividad independiente. Partiendo de esta concepcin, se define la concurrencia como sigue: La concurrencia es la propiedad que distingue un objeto activo de uno que no est activo. Persistencia La persistencia es la propiedad de un objeto por la que su existencia trasciende el tiempo (es decir, el objeto contina existiendo despus de que su creador deja de existir) y/o el espacio (es decir, la posicin del objeto vara con respecto al espacio de direcciones en el que fue creado).
12
Una cosa tangible y/o visible. Algo que puede comprenderse intelectualmente. Algo hacia lo que se dirige un pensamiento o accin. Se aade a la definicin informal la idea de que un objeto modela alguna parte de la realidad y es, por tanto, algo que existe en el tiempo y el espacio. Los objetos del mundo real no son el nico tipo de objeto de inters en el desarrollo del software. Otros tipos importantes de objetos son invenciones del proceso de diseo cuyas colaboraciones con otros objetos semejantes sirven como mecanismos para desempear algn comportamiento de nivel superior Un objeto tiene estado, comportamiento e identidad; la estructura y comportamiento de objetos similares estn definidos en su clase comn; los trminos instancia y objeto son intercambiables.
Estado
El estado de un objeto abarca todas las propiedades (normalmente estticas) del mismo ms los valores actuales (normalmente dinmicos) de cada una de esas propiedades. Una propiedad es una caracterstica inherente o distintiva, un rasgo o cualidad que contribuye a hacer que un objeto sea nicamente ese objeto y no otro. Todas las propiedades tienen algn valor. Este valor puede ser una mera cantidad, o puede denotar a otro objeto.
Comportamiento
Ningn objeto existe de forma aislada. En vez de eso, los objetos reciben acciones, y ellos mismos actan sobre otros objetos. As puede decirse que El comportamiento es cmo acta y reacciona un objeto, en trminos de sus cambios de estado y paso de mensajes. En otras palabras, el comportamiento de un objeto representa su actividad visible y comprobable exteriormente Una operacin es una accin que un objeto efecta sobre otro con el fin de provocar una reaccin. El estado de un objeto representa los resultados acumulados de su comportamiento.
Identidad
13
La identidad es aquella propiedad de un objeto que lo distingue de todos los dems objetos. La mayora de los lenguajes de programacin y de bases de datos utilizan nombres de variables para distinguir objetos temporales, mezclando la posibilidad de acceder a ellos con su identidad. La mayora de los sistemas de bases de datos utilizan claves de identificacin para distinguir objetos persistentes, mezclando el valor de un dato con la identidad. El fracaso en reconocer la diferencia entre el nombre de un objeto y el objeto en s mismo es fuente de muchos tipos de errores en la programacin orientada a objetos.
14
En conjunto, se llama a esas clases y objetos las abstracciones clave del problema, y se denomina a esas estructuras cooperativas los mecanismos de la implementacin. Durante estas fases del desarrollo, el inters principal del desarrollador debe estar en la vista externa de estas abstracciones clave y mecanismos. Esta vista representa el marco de referencia lgico del sistema y, por tanto, abarca la estructura de clases y la estructura de objetos del mismo. En las etapas finales del diseo y entrando ya en la implementacin, la tarea del desarrollador cambia; el centro de atencin est en la vista interna de estas abstracciones clave y mecanismos, involucrando a su representacin fsica. Pueden expresarse estas decisiones de diseo como parte de la arquitectura de mdulos y la arquitectura de procesos del sistema.
16
Un conjunto es un ejemplo de una clase contenedora, la cual es una clase cuyas instancias son colecciones de otros objetos. Las clases contenedoras pueden denotar colecciones homogneas, indicando que todos los objetos en la coleccin son de la misma clase, o bien pueden representar colecciones heterogneas, en las cuales los objetos pueden ser de diferentes clases a pesar de que deben todas compartir alguna superclase comn.
Metaclases
Las tres formas de relaciones de clases discutidas anteriormente (herencia, uso, e instanciacin) cubren en su conjunto todas las formas importantes de relaciones de clases que la mayora de los desarrolladores necesitan. Sin embargo, considerando slo un paso ms all la idea del modelo de objetos, descubriremos otra posible forma de relacin. Se ha dicho que cada objeto es una instancia de alguna clase. Qu pasara si se trata a una clase como un objeto que pudiera ser manipulado? Para hacer esto, debemos preguntar, cul es la clase de una clase? La respuesta es simple, una metaclase. Dicho de otra manera, una metaclase es una clase cuyas instancias son clases.
17
4. Metodologa de Booch
Anlisis Anlisis
Diseo Diseo
Evolucin Evolucin
Mantenimiento Mantenimiento
Figura: Diseo Orientado a Objetos en el Ciclo de Vida del Desarrollo de Software. La Figura Diseo Orientado a Objetos en el Ciclo de Vida del Desarrollo de Software muestra el ciclo de vida para el desarrollo de un diseo orientado a objetos. Aqu se observa que el diseo no es una fase monoltica aislada; sino slo un paso dentro del proceso incremental del desarrollo iterativo de un sistema, cuyas etapas se retroalimentan.
Anlisis
Las Actividades del Anlisis. El Anlisis es la fase que rene por primera a los usuarios y a los desarrolladores de un sistema, a travs de un vocabulario comn surgido del dominio del problema. El propsito del anlisis es proporcionar una descripcin de un problema. La descripcin debe ser completa, consistente, legible y disponible a las diversas partes interesadas y, comprobable en la realidad. Los productos del anlisis se utilizan a menudo para articular las funciones de un sistema. As pues, funcin, no se refiere a una abstraccin algortmica. Ms bien, en el contexto de anlisis de requerimientos, una funcin denota un nico comportamiento claro y demostrable.
18
Diseo
Iniciando el Proceso de Diseo. Cundo se comienza a disear? Realmente, el diseo puede comenzar tan pronto como se tenga algn modelo formal o informal (posiblemente incompleto) del problema a ser resuelto. Si se comienza a el diseo muy pronto, probablemente no se sepa lo suficiente del problema para realizar cambios de diseo inteligentes. Pero s el diseo se comienza muy tarde, se corre el riesgo de desperdiciar recursos en el anlisis al hacerlo muy detalladamente, lo cual puede abrumar al diseador con un torrente de detalles innecesarios extras. Por estas razones, se sugiere la estrategia de analizar un poco, disear un poco. De esta manera, cada intento en el diseo puede ayudar a enfocar el proceso de anlisis hacia aspectos del sistema que son importantes para la elaboracin de una solucin. Disense nicamente las abstracciones clave y lo mecanismos importantes, a fin de obtener un bosquejo que sea suficiente para la implementacin, y djense para fases posteriores los aspectos de la solucin que tengan poco o nada que ver con en el comportamiento observable del sistema. Divdase un gran problema en subproblemas, de tal forma que los especialistas en un dominio particular puedan llevar a cabo el proceso de diseo. Dentro de un gran sistema, se deben identificar los aspectos que sean claramente problemas de red, o problemas de bases de datos o problemas de interfaz de usuarios. Por regla general se detiene el proceso de diseo cuando las abstracciones clave son lo suficientemente simples para no requerir mayor descomposicin (pero que pueden ser compuestas a partir de componentes de software reusables ya existentes).
Evolucin
Las actividades de Evolucin. La evolucin de un sistema en el ciclo de vida del desarrollo de software orientado a objetos combina los aspectos tradicionales de codificacin, prueba e integracin. El resultado de un diseo orientado a objetos, es que nunca se dar un evento big-bang de la integracin del sistema. En vez de ello, el proceso de desarrollo resulta en la produccin incremental de una serie de prototipos que eventualmente evolucionan en la implementacin final. Tipos de cambios evolutivos. En la prctica, pueden esperarse las siguientes formas de cambios para un diseo, durante la evolucin de un sistema: Adicin de una nueva clase Cambio de la implementacin de una clase Cambio de la representacin de una clase Reorganizacin de la estructura de una clase Cambio de la interfaz de una clase
Modificacin
ELEMENTOS DE ANALISIS Y DESARROLLO ORIENTADOS A OBJETOS 19
Un programa que se usa en un entorno del mundo real necesariamente ha de cambiar o se volver cada vez menos til (ley del cambio continuo). A medida que cambia un programa en evolucin, su estructura se vuelve ms compleja a pesar de los esfuerzos activos que se realicen para evitar este fenmeno (ley de la complejidad creciente).
20
5. Notacin de Booch
Disear no es el acto de dibujar un diagrama; un diagrama simplemente captura un diseo. Sin embargo, es importante disponer de una notacin expresiva y bien definida. En primer lugar, una notacin estndar hace posible que una persona pueda formular un diseo y que despus lo comunique. Es imposible capturar todos los sutiles detalles de un sistema complejo de software en un solo tipo de diagrama. Se debe entender tanto la estructura, como la funcin de los objetos involucrados. Y comprender la estructura taxonmica de las clases, los mecanismos de herencia usados, el comportamiento individual de los objetos y el comportamiento dinmico del sistema como un todo.
Diagramas de Clases
Un diagrama de clase se utiliza para mostrar la existencia de clases y sus relaciones en el diseo lgico de un sistema. Un solo diagrama de clase representa toda o parte de la estructura de clases de un sistema. Usualmente, para un pequeo sistema, un solo diagrama de clases es suficiente, pero en el diseo de la mayora de los sistemas se requiere una serie de dichos diagramas, para documentar su estructura de clases. Los tres elementos ms importantes de la estructura de clases son las clases, las relaciones de clases y las utileras de clases (para lenguajes que soportan la declaracin de subprogramas libres). Clases. La Figura Icono para una Clase muestra el icono que utilizamos para representar una clase en un diagrama de clases. Por razones histricas, su forma es la de una mancha amorfa; que algunos llaman nube. Este icono representa una abstraccin con algunos lmites frgiles. Las lneas punteadas que forman el contorno del icono indican que los clientes generalmente operan slo sobre instancias de una clase, y no en la clase misma. El nombre de la clase es requerido y se coloca dentro de la nube.
name
21
x x
x uso (para interfaz) x uso (para implementacin) instancia (tipo compatible) instancia (nuevo tipo) herencia (tipo compatible) herencia (nuevo tipo) metaclase indefinada 0 cero 1 uno * cero o ms + uno o ms ? cero o ms n n
label
Figura: Iconos para Relaciones de Clases y Cardinalidad Relaciones de Clases. Se puede obtener una primera conceptualizacin de una jerarqua de clases mediante la inclusin de una relacin indefinida. Los iconos para cada forma de relacin de clase se enlistan en la figura Iconos para Relaciones de Clases y Cardinalidad. Cada relacin puede incluir una etiqueta (que puede omitirse) para documentar el nombre o rol de la relacin. Si se utiliza una etiqueta el smbolo debe aplicarse para indicar la direccin en que debe ser leda la etiqueta. Una relacin de uso es indicada por una lnea doble con un crculo que se coloca en un extremo para designar la clase que utiliza los recursos de otra. Por ejemplo, si utilizamos una lnea doble para indicar una relacin entre clases A y B y despus colocar un crculo cerca de la clase A, indicamos que la interfaz de A utiliza los recursos de la clase B. Si utilizamos un crculo relleno estamos indicando entonces que la implementacin de A utiliza los recursos de la clase B. Durante las primeras etapas del diseo, usualmente es suficiente mostrar slo las relaciones de interfaz. Un desarrollador puede considerar adems mostrar las relaciones de implementacin , slo al momento de tomar las decisiones de implementacin. En alguna circunstancias, especialmente en el modelado de las clases que forman parte de una base de datos, resulta de gran utilidad mostrar la cardinalidad entre las clases que se utilizan una con otra. La figura Iconos para Relaciones de Clases y Cardinalidad tambin
22
ilustra los iconos que se utilizan para expresar cardinalidad, que estn derivados de los smbolos utilizados para escribir expresiones regulares para la herramienta greep de Unix. Por ejemplo, si entre las clases A y B, colocamos el smbolo 1 cerca de A y el smbolo + cerca de B, significa que para cada instancia de A, pudiramos tener una o ms instancias de B, y que para cada instancia de B, existe exactamente una instancia de A. Si es necesario, podemos tambin formar aserciones de cardinalidad ms complicadas usando operaciones de relacin =, <>, <, >, <=, y >=. Una relacin de clase en donde una clase A instanca a una clase B se indica mediante una lnea punteada, con una flecha apuntando a la clase que se est instanciando (en este caso, B). Esta forma de relacin es significativa nicamente para lenguajes que soportan alguna forma de clases parametrizadas o mecanismos genricos. Una relacin de herencia se parece a una relacin de instanciacin, pero en ella se utiliza una lnea continua. En la prctica, las relaciones de herencia son las ms comunes, seguidas por las relaciones de uso. Por convencin, generalmente no se muestra la herencia de una clase desde la clase base ms alta, tal como Tobject de Object Pascal, a menos que exista una razn justificable para hacerlo. Las clases que aparecen solas son usualmente consideradas como ancestros directos de esta clase base. Si las instancias de la subclase no son de tipo compatible con las instancias de la superclase (o, en trminos de Ada, si se tiene un tipo derivado), entonces se coloca una lnea perpendicular a travs de la lnea de relacin, opuesta a la flecha. El icono para una relacin de metaclase utiliza una lnea gris. En algunos lenguajes, tal como Smalltalk, cada clase tiene una metaclase, pero generalmente se elige documentar slo aquellas metaclases que adicionan su propio comportamiento de dominio especfico. Una relacin indefinida, representada por una lnea gris punteada sin punta de flecha, es utilizada por el diseador para indicar que existe alguna forma de relacin de clase, pero que la decisin acerca de la forma precisa de dicha relacin ser tomada posteriormente. Utileras de Clases. El icono para una utilera de clase se ilustra en la figura Icono para una Utilera de Clase. Es similar al icono de una clase, pero se distingue por que tiene una sombra. El icono de utilera de clase representa tambin, un subprograma libre o una coleccin de stos. Si el lenguaje de implementacin no permite estas construcciones, el icono puede ser omitido. El nombre de la utiliera de clase es requerido, y se coloca dentro de la nube, si el nombre es particularmente largo, tambin puede ser elidido, o el icono puede amplificarse. Cada nombre de utilera de clase debe ser nico dentro de la categora de clase. Pueden expresarse relaciones de clase que involucren utileras de clase, pero por lo general, solamente se aplican las relaciones de uso e instanciacin.
name
23
Figura: Icono para una Utilera de Clase Categoras de Clases. Un tpico diagrama de clases puede contener de una a varias docenas de clases en cualquier parte. El intentar poner todas estas clases en un slo diagrama puede resultar abrumador. Para resolver este problema, se requieren medios para organizar las clases en porciones significativas, lo que conduce a la idea de categora de clase. Cada categora de clase denota otro diagrama de clases, de ese modo, si se selecciona alguna de las categoras de clase desde este diagrama de mas alto nivel, y se observa a detalle su implementacin, posiblemente se encontrar otro diagrama de clases consistente de clases, relaciones y utileras de clases, o para problemas mucho muy grandes, otro diagrama de clases conteniendo otras categoras de clase, que en su momento representan otros diagramas de objetos. Visibilidad de la Categora de Clase. Dado que una categora de clase representa el nombre de un espacio encapsulado, algunas de las entidades que incluye pueden ser visibles fuera de la categora de clase, y otras pueden ser importadas desde otras categoras de clase visibles. Para designar la visibilidad de una entidad nombrada, contenida en una categora de clase, pueden utilizarse iconos especiales. Un nombre sin adorno representa una entidad que es privada a la categora clase; que no debe de ser referenciada por nada fuera de dicha categora.
Nombre: Documentacin: Visibilidad: Cardinalidad: Jerarqua: Superclase: Metaclase: Parmetros Genricos: Interfaz | Implementacin (Pblica/Protegida/Privada): Usos: Campos: Operaciones: Mquina de estado finito: Concurrencia: Complejidad del espacio: Persistencia: identificador texto exportada / privada / importada 0/1/n nombre de clase lista de parmetros lista de nombres de clases lista de declaraciones de campos lista de declaraciones de operaciones diagrama de transicin de estados secuencial / bloqueada / activa texto esttica / dinmica
Figura: Plantilla para una Clase. Una plantilla de clase representa todos los aspectos importantes de una clase. En la prctica, no puede esperarse que un desarrollador complete todo su contenido, a menos que, por supuesto, sea importante mostrar este nivel de detalle.
24
Tanto las plantillas de clase como las de utileras de clase, pueden incluir listas de operaciones. Para un diseo menos riguroso, basta simplemente establecer el nombre de la operacin, sus parmetros y su significado (utilizando un texto de forma libre).
25
TemperatureChange
TemperatureChange
Plant
StartGrowingCycle
Day
Sunset Sunrise
Night
StopGrowingCycle
StopGrowingCycle
Harvest
Diagramas de Objetos
Un diagrama de objetos es utilizado para mostrar la existencia de objetos y sus relaciones en el diseo lgico de un sistema. Un diagrama de objetos representa toda o parte de la estructura de objetos de un sistema; tpicamente el diseo de un sistema requiere un conjunto de diagramas de objetos. El propsito de cada diagrama de objetos es ilustrar la semntica de los mecanismos clave en el diseo lgico. Por ello, se utilizan los diagramas de objetos para capturar la semntica dinmica de operaciones y mquinas de estado finito. Un diagrama de objetos puede tambin representar la captura de un momento en un lapso de tiempo de un evento de otro modo transitorio. Existen relaciones importante entre los diagramas de clases y los diagramas de objetos, paralelas a la interaccin entre clases y objetos. Especficamente, cada objeto en un diagrama de objetos denota alguna instancia (especfica o arbitraria) de una clase. Adicionalmente las operaciones utilizadas en un diagrama de objetos deben ser consistentes con las operaciones definidas en las clases asociadas.
26
Diagramas de Mdulos
Un diagrama de mdulos se utiliza para mostrar la asignacin de objetos y clases a mdulos en el diseo fsico de un sistema; un diagrama de mdulos representa toda o parte de la arquitectura de mdulos de un sistema
27
Gardening Control
PlanningControls
GreenhouseSensors GreenhouseActuators
28
Diagramas de Procesos
Muchos de los grandes sistemas requieren del diseo de ms de un nico programa monoltico; algunas veces se deben disear sistemas compuestos de mltiples programas, ejecutndose sobre una coleccin distribuida de computadoras, los que requieren decisiones de diseo muy diferentes a aquellas asociadas con la identificacin de clases y objetos. Por esta razn , se utilizan diagramas de proceso para visualizar y entonces razonar sobre el problema de la asignacin de procesos a los procesadores en el diseo fsico de un sistema. Un diagrama de proceso representa toda o parte de la arquitectura de procesos de un sistema, un diseo incluye tpicamente un slo diagrama, aunque algunos sistemas particularmente complejos, pueden requerir de varios. Conexiones. Los procesadores y los dispositivos deben comunicarse. Es posible establecer conexiones de dispositivo a procesador, de un procesador a procesador, o de un dispositivo a dispositivo. Una conexin usualmente representa algn enlace de hardware directo (tal como un cable RS232, una conexin Ethernet, o un cable de fibra ptica) aunque tambin puede representar enlaces menos directos, tales como los enlaces satelitales. Usualmente se considera a las comunicaciones como bidireccionales, aunque si una conexin particular es unidireccional, se puede adicionar una flecha para indicar la direccin. Cada conexin puede incluir una etiqueta (que se puede omitir), para documentar el nombre de la conexin.
29
30
Productos En un extremo del espectro, puede ser suficiente el simplemente enlistar los nombres de las clases y objetos significativos, usando nombres adecuados que impliquen su semntica. Llamaremos a esto simplemente enlistar cosas. Algunas de las cosas en esta lista pueden resultar ser clases, algunas objetos y otras simplemente atributos de objetos. En el otro extremo del espectro, se puede especificar formalmente el significado de estas abstracciones y mecanismos, escribiendo las apropiadas plantillas de clases y objetos.
Actividades El tercer paso constituye en gran parte una extensin de las actividades del anterior. Aqu, se establece exactamente cmo interctan las cosas dentro del sistema. De acuerdo con las abstracciones clave, esto significa que se deben establecer las relaciones de uso, de herencia y otras formas de relaciones entre las clases. Para los objetos implementacin, esto significa que se deben establecer la semnticas esttica y dinmica de cada mecanismo. Hay dos actividades relacionadas que obligan a refinar los primeros productos en un diseo. Primero, se deben descubrir patrones: patrones entre clases, que llevan a reorganizar y simplificar la estructura de clases del sistema, y patrones entre colecciones cooperativas de objetos, que llevan a generalizar los mecanismos ya considerados en el diseo. Esta parte del proceso de diseo, requiere de todas las habilidades creativas del diseador, los aciertos en esta parte, diferencian los buenos diseos de los malos. Segundo, se deben hacer decisiones de visibilidad: esto es, cmo una clase ve a otra, cmo se ven los objetos unos con otros, e igualmente importante, que clases y objetos no se ven entre s. Esto ayuda a efectuar inteligentes decisiones de empaquetamiento en el diseo de la arquitectura de mdulos del sistema. El descubrimiento de patrones y la toma de decisiones de visibilidad llevan tambin al refinamiento de los protocolos de varias clases de los pasos anteriores, de modo que finalizaremos con abstracciones y mecanismos comunes definidos en un solo sitio. Productos Los productos de esta etapa incluyen la conclusin de la mayora de los modelos lgicos del diseo. Aqu se refinan los diagramas de clase de los pasos anteriores, tomando en cuenta los patrones descubiertos y las decisiones de visibilidad efectuadas. Tambin se completarn de los diagramas de objetos que documentan los mecanismos esenciales en nuestra solucin. En la prctica este enfoque para crear tales diagramas es muy claro. Utilizando la notacin de las secciones anteriores, se dibujan primero los objetos que se sabe cooperan de cierta forma. Despus, se seleccionan pares de objetos y se pregunta si hay relaciones entre ellos. Si la respuesta es afirmativa, entonces se formulan las dos siguientes preguntas: cmo se relacionan estos objetos? y qu mensajes intercambian? Esto generalmente lleva a refinar el protocolo de las correspondientes clases, y este refinamiento a su vez puede conduce a la identificacin de nuevos patrones. Es por esto que el proceso de diseo orientado a objetos es iterativo.
32
El cuarto paso no es necesariamente el ltimo. Este paso involucra dos actividades: tomar decisiones de diseo concernientes a la representacin de las clases y objetos inventados y, la asignacin de clases y objetos a mdulos, y de programas a procesos. Este es el punto en el proceso de diseo en donde primero se efecta una observacin hacia dentro de cada clase y modulo, para decidir cmo ha de ser implementado su comportamiento. Aunque las abstracciones clave y mecanismos son triviales, es en este punto cuando se debe volver al primer paso y aplicar este proceso nuevamente, hasta la observacin interna de las clases y mdulos existentes. De esta forma, se repite el proceso de diseo, pero esta vez enfocndose en un nivel de abstraccin ms bajo. Significa esto que el diseo orientado a objetos es un proceso top-down? Todava la respuesta sigue siendo no exactamente. En la prctica, se disean primero las abstracciones clave y los mecanismos de ms alto nivel, involucrando aquellas clases y objetos que son parte directa del vocabulario del dominio del problema. Sin embargo, a cualquier nivel de diseo, frecuentemente se debe saltar hacia abstracciones clave y mecanismos de un nivel ms bajo, pues sirven como clases y objetos primitivos sobre los cuales se pueden componer clases y objetos de nivel ms alto. Esto nuevamente ilustra que el diseo orientado a objetos involucra un proceso de round-trip gestalt design. Productos En este paso del proceso de diseo, se establece la interfaz concreta de cada clase y objeto importante en un nivel dado de abstraccin. Los productos entonces, incluyen el refinamiento de la estructura de clases del sistema, y de forma particular la parte completa de implementacin de cada plantilla de clase importante. La misma forma de completitud se aplica a los diagramas de mdulos y si la arquitectura del sistema lo demanda, a los diagramas de procesos.
33
7. Metodologa OMT
El Modelado y Diseo Orientado a Objetos constituye una nueva forma de pensar acerca de problemas empleando modelos que se han organizado tomando como base conceptos del mundo real. La construccin fundamental es el objeto que combina las estructuras de datos con los comportamientos en una entidad nica. Los modelos orientados a objetos son tiles para comprender problemas, comunicarse con expertos en esa aplicacin, modelar empresas, preparar documentacin y disear programas y bases de datos. OMT, la Tcnica de Modelado de Objetos se extiende desde el anlisis hasta la implementacin pasando por el diseo. OMT presenta un enfoque orientado a objetos hacia desarrollo del software basado en modelar objetos del mundo real y utilizar as el modelo para construir un diseo independiente del lenguaje que estar organizado en torno a esos objetos. Se describe una notacin grfica para expresar modelos orientados a objetos. Los objetos del dominio de la aplicacin y del dominio de la computadora se pueden modelar, disear e implementar utilizando los mismos conceptos y la misma notacin orientada a objetos. Esta misma notacin sin solucin de continuidad se utiliza desde el anlisis hasta la implementacin, pasando por el diseo, de una forma tal que la informacin aadida en una fase de desarrollo no necesita perderse, ni ser traducida, para la prxima fase.
Anlisis
El objetivo del anlisis es desarrollar un modelo de lo que va a hacer el sistema. El modelo se expresa en trminos de objetos y de relaciones, flujo dinmico de control y transformaciones funcionales. El proceso de captura de requisitos y de consultas con el solicitante debera extenderse a lo largo de todo el anlisis. Los pasos son los siguientes: 1. Se escribe o se obtiene una descripcin inicial del problema (definicin del problema) 2. Se construye un Modelo de Objetos. 3. Se desarrolla un Modelo Dinmico. 4. Se construye un Modelo Funcional. 5. Se verifican, iteran y refinan los tres modelos.
Diseo de Sistemas
Durante el diseo de sistemas se escoge la estructura de alto nivel del sistema.
Documento de Diseo de Sistema = estructura de la arquitectura bsica del sistema y decisiones estratgicas de alto nivel.
Diseo de Objetos
34
Durante el diseo de objetos, se elabora el modelo de anlisis y se proporciona una base detallada para la implementacin. Se toman las decisiones que sean necesarias para construir un sistema sin descender a los detalles particulares de un lenguaje o sistema de base de datos individual. El diseo de objetos seala el comienzo de un desplazamiento con respecto a la orientacin a la computadora que es necesaria para una implementacin prctica.
Documento de Diseo = Modelo de Objetos Detallado + Modelo Dinmico Detallado + Modelo Funcional Detallado
35
Subclase - 1
Subclase - 2
Parte 1-Clase
Parte 2-Clase
Parte 1-Clase
Parte 2-Clase 36
Instancias de Objetos:
(Nombre de clase)
Exactamente una Muchas (cero o ms) Opcional (cero o ms) Una o ms Especificadas numricamente
37
8. Modelos OMT
Modelado de Objetos
El modelado de objetos captura la estructura esttica del sistema, mostrando los objetos del sistema, las relaciones entre ellos, y los atributos que caracterizan a cada clase. Se har hincapi en construir un sistema en torno a los objetos y no en torno a la funcionalidad, porque el modelo de objetos se corresponde con el mundo real de manera ms fiel y, por tanto, es ms flexible frente al cambio. Los modelos de objetos proporcionan una representacin grfica intuitiva del sistema y son valiosos para comunicarse con el cliente y para documentar la estructura del sistema.
Objetos y Clases
El propsito del modelado de objetos es describir objetos. Se definir un objeto como un concepto, abstraccin o cosa con lmites bien definidos y con significado a efectos del problema que se tenga entre manos. Los objetos tienen dos propsitos: promover la comprensin del mundo real y proporcionar una base prctica para la implementacin por computadora. La descomposicin de un problema en objetos depende del juicio y de la naturaleza del problema. No existe una nica representacin correcta. Una clase de objetos describe un grupo de objetos con propiedades (atributos) similares, con relaciones comunes con otros y con una semntica comn. Es frecuente utilizar la abreviatura clase en lugar de decir clase de objetos. Cada objeto conoce su clase. La mayora de los lenguajes de programacin orientados a objetos puede determinar la clase del objeto en el momento de la ejecucin. La clase del objeto es una propiedad implcita de s mismo.
Diagramas de Objetos
Los diagramas de objetos proporcionan una notacin grfica formal para el modelado de objetos, clases y sus relaciones entre s, son tiles, tanto para el modelado abstracto como, para disear programas reales. Los diagramas de objetos son concisos, fciles de entender y funcionan bien en la prctica. Un diagrama de clases es un esquema, patrn o plantilla para describir muchas instancias de datos posibles. Los diagramas de clases describen clases de objetos.
38
Un diagrama de instancias describe la forma en que un cierto conjunto de objetos se relacionan entre s. Un diagrama de instancias describe instancias de objetos. Los diagramas de instancias son tiles para documentar casos prcticos (sobre todo los escenarios) y para describir ejemplos. Un diagrama de clases dado se corresponde con un conjunto infinito de diagramas de instancia.
Persona
(Persona)
Clase
Objetos
Un atributo es un valor de un dato que est almacenado en los objetos de una clase. Cada atributo tiene un valor para cada instancia del objeto. Los atributos debera ser valores puros de datos y no objetos. Los atributos se enumeran en la segunda parte del cuadro de clase. El nombre de cada atributo puede ir seguido por detalles opcionales, tales como el tipo y el valor por omisin. El tipo ir precedido por dos puntos. El valor por omisin ir precedido por un signo igual. En algunas ocasiones puede uno decidir omitir los atributos en los cuadros de clase. Depende del nivel de detalle deseado en el modelo de objetos. Los cuadros de clase tienen una lnea entre el nombre de la clase y los atributos. Los cuadros de objetos no tienen esta lnea para distinguirlos todava ms de los cuadros de clase.
Persona nombre:cadena edad:entero (Persona) Juan Garca 24 (Persona) Mara Prez 52
Una operacin es una funcin o transformacin que se puede aplicar o que puede ser aplicada por los objetos de una clase. Todos los objetos de una clase comparten las mismas operaciones. Todo objeto conoce su clase, y por tanto, la implementacin correcta de la operacin.
ELEMENTOS DE ANALISIS Y DESARROLLO ORIENTADOS A OBJETOS 39
Una misma operacin puede aplicarse a muchas clases distintas. Tal operacin ser polimrfica: esto es, una misma operacin adopta distintas formas en distintas clases.
Persona nombre edad cambiar de trabajo cambiar de direccin Archivo nombre de archivo tamao en bytes ltima actualizacin imprimir Objeto geomtrico color posicin mover (delta: Vector) seleccionar (p: Punto): Boolean rotar (ngulo)
Enlaces y Asociaciones
Un enlace es una conexin fsica o conceptual entre instancias de objetos. Un enlace es una instancia de una asociacin. Una asociacin describe un grupo de enlaces con estructura y semntica comunes. Las asociaciones son inherentemente bidireccionales. El nombre de una asociacin binaria suele leerse en un cierto sentido, pero la asociacin binaria se pude recorrer en ambas direcciones. La direccin implicada por el nombre es la direccin hacia adelante; la direccin opuesta es la direccin hacia atrs.
Pas nombre
Tiene-como-capital
Tiene-como-capital
Tiene-como-capital
Diagrama de instancias
Tiene-como-capital
La multiplicidad especifica el nmero de instancias de una clase que pueden estar relacionadas con una nica instancia de una clase asociada. La multiplicidad limita el nmero de objetos relacionados.
40
En el caso ms general se puede especificar la multiplicidad mediante un nmero o mediante un conjunto de intervalos, tal como puede ser 1 (uno exactamente), 1+ (uno o ms), 3-5 ( entre tres y cinco, ambos inclusive), y 2,4,18 (dos, cuatro o bien dieciocho). Existen terminadores de lnea especiales que indican ciertos valores frecuentes de multiplicidad. Un crculo negro es el smbolo OMT que denota muchos, lo cual quiere decir cero o ms. Un circulo blanco indica opcional, lo cual quiere decir cero o uno. Una lnea sin smbolos de multiplicidad denota una asociacin uno-a-uno. En el caso general, la multiplicidad se escribe junto al final de la lnea, por ejemplo, 1+ para indicar uno o ms. La distincin de multiplicidad ms importante es la existente entre uno y muchos. Una agregacin es la relacin parte-todo o una-parte-de en la cual los objetos que representan los componentes de algo se asocian a un objeto que representa el ensamblaje completo. Definimos la relacin de agregacin como aquella que relaciona una clase ya ensamblada con una clase componente. Un ensamblaje con muchas clases de componentes se corresponde con muchas relaciones de agregacin. Definimos cada emparejamiento individual como una agregacin para que sea posible especificar la multiplicidad de cada componente dentro del ensamblaje. Esta definicin hace hincapi en que la agregacin es una forma especial de asociacin.
Documento
Prrafo
Frase
41
El modelo de objetos debera hacer fcil identificar visualmente los niveles de una jerarqua de partes.
Microcomputadora
Monitor
Ratn
Teclado
Generalizacin y Herencia
La Generalizacin es la relacin entre una clase y una o ms versiones refinadas de esa Chasis CPU RAM Ventilador misma clase. La que se est refinando se denomina la superclase y cada versin refinada se denomina subclase. La generalizacin y la herencia son transitivas a travs de un nmero arbitrario de niveles. Los trminos ascendente y descendente hacen alusin a la generalizacin de clases a travs de niveles mltiples. Una instancia de una subclase es simultneamente una instancia de todas sus clases antecesoras. El estado de una instancia incluye un valor para todos y cada uno de los atributos de todas sus clases antecesoras. Toda operacin aplicable a una clase antecesora podr ser aplicada a una instancia suya. Toda subclase hereda, no solamente todas las caractersticas de sus antecesoras sino que adems aade sus propios atributos y operaciones especficos.
42
La notacin para la generalizacin es un tringulo que conecta una superclase con sus subclases. La superclase se conecta mediante una lnea a la parte superior del tringulo. Las subclases se conectan mediante lneas a una barra horizontal asociada a la base del tringulo. Por comodidad, se puede invertir el tringulo y se pueden conectar las subclases tanto a la parte superior de la barra como a la parte inferior pero, si es posible, la superclase debera dibujarse en la parte superior y las subclases en la parte inferior.
Intercambiador de calor rea superficial dimetro del tubo longitud del tubo presin del tubo presin superficial
...
tipo de bomba
Bomba de diafragma
Bomba de pistn longitud del pistn dimetro del pistn nmero de cilindros tipo de tanque
...
...
43
Las palabras que se escriben al lado de los tringulos en un diagrama, tales como, tipo de equipo, tipo de bomba y tipo de tanque son discriminadores. Un discriminador es un atributo de enumeracin de tipo que indica qu propiedad del objeto est siendo abstrada por una relacin de generalizacin en particular. Solamente se debe discriminar una propiedad de cada vez. El discriminador es, simplemente, un nombre para la base de la generalizacin.
Modelado Dinmico
Los aspectos del sistema que estn relacionados con el tiempo y con los cambios constituyen el modelo dinmico, por contraste con el modelo esttico o de objetos. El control es aquella parte del sistema que describe las secuencias de operaciones que se producen en respuesta a estmulos externos, sin tener en cuenta los que hagan las operaciones, aquello a lo que afectan, ni la forma en que sean implementadas.
Sucesos y Estados
Los valores de los atributos y de los enlaces mantenidos por un objeto son lo que se denomina su estado. A lo largo del tiempo, los objetos se estimulan unos a otros, dando lugar a una serie de cambios en sus estados. Un estmulo individual proveniente de un objeto y que llega a otro es un suceso. La respuesta a un suceso depende del estado del objeto que lo recibe, y puede incluir un cambio de estado o el envo de otro suceso al remitente o a un tercer objeto. La trama de sucesos, estado y transiciones de estados para una clase dad se puede abstraer y representar en forma de un diagrama de estados. Un diagrama de estados es una red de estados y sucesos, del mismo modo que un diagrama de objetos es una red de clases y de relaciones. El modelo dinmico consta de mltiples diagramas de estados, con un diagrama de estados para cada clase que posea un comportamiento dinmico importante, y muestra la trama de actividad para todo el sistema. Un suceso es una transmisin de informacin de direccin nica entre un objeto y otro. Un escenario es una secuencia de sucesos que se produce durante una ejecucin concreta de un sistema. El mbito de un escenario es variable, puede incluir a todos los sucesos del sistema, o puede incluir solamente aquellos sucesos que afecten a ciertos objetos del sistema, o que sean generados por ellos. Un escenario puede ser el registro histrico de la ejecucin de un sistema, o de un experimento imaginario de la ejecucin de un sistema propuesto. Un diagrama de estados relaciona sucesos y estados. Cuando se recibe un suceso, el estado siguiente depende del actual, as como del suceso: un cambio de estado causado por un suceso es lo que se llama una transicin. Un diagrama de estados es un grafo cuyos nodos son estados, y cuyos arcos dirigidos son transiciones rotuladas con nombres de sucesos. Los estados se representan como cuadros redondeados que contienen un nombre opcional. Las transacciones se representan en forma de flechas desde el estado receptor hasta el estado de
ELEMENTOS DE ANALISIS Y DESARROLLO ORIENTADOS A OBJETOS 44
destino: el rtulo de la flecha es el nombre del suceso que de lugar a la transaccin. Todas las transiciones que salgan de un estado deben de corresponder a sucesos distintos. Un diagrama de estados describe el comportamiento de una sola clase de objetos. Dado que todas las instancias de una clase tienen el mismo comportamiento (por definicin), todas ellas comparten el mismo diagrama de estados, por cuanto todas ellas comparten las mismas caractersticas de clase.
Operaciones
Una descripcin conductista de un objeto debe especificar lo que hace el objeto como respuesta a los sucesos. Las operaciones asociadas a estados o a transiciones se efectan en respuesta a los correspondientes estados o sucesos. Una actividad es una operacin cuya realizacin requiere un cierto tiempo. Toda actividad est asociada a un estado. La notacin hacer: A dentro del cuadro de un estado indica que la actividad A comienza al entrar en ese estado y finaliza al salir de l. Una accin es una operacin instantnea que va asociada a un suceso. Una accin representa a una operacin cuya duracin es insignificante en comparacin con la resolucin del diagrama de estados. La notacin para una accin que afecta a una transicin es una barra (/) y el nombre (o descripcin), despus del nombre del suceso que la produce.
en reposo
Men visible
45
Modelado Funcional
El modelado funcional muestra la forma en que se derivan los valores producidos en un clculo a partir de los valores introducidos, sin tener en cuenta el orden en el cual se calculan los valores. Consta de mltiples diagramas de flujo de datos, que muestran el flujo de valores desde las entradas externas, a travs de las operaciones y almacenes internos de datos hasta las salidas externas, tambin incluye restricciones entre valores dentro del modelo de objetos. Un diagrama de flujo de datos (DFD) muestra las relaciones funcionales entre los valores calculados por un sistema, incluyendo los valores introducidos, los obtenidos, y los almacenes internos de datos. Un diagrama de flujo de datos contiene procesos que transforman datos, flujos de datos que los trasladan, objetos actores que producen y consumen datos, y de almacenes de datos que los almacenan de forma pasiva. Un proceso transforma valores de datos. Los procesos del ms bajo nivel son funciones puras, sin efectos laterales. Los procesos se dibujan en forma de elipses que contienen una descripcin de la transformacin, normalmente su nombre. Cada proceso tiene un nmero fijo de flechas de entrada y salida de datos, cada una de las cuales lleva un valor de un tipo dado. Las entradas y salidas se pueden rotular, para mostrar su papel en el clculo, pero es frecuente que baste el tipo de valor asociado al flujo de datos.
dividiendo
cociente
divisin entera
divisor resto
Un flujo de datos conecta la salida de un objeto o proceso con la entrada de otro objeto o proceso. Representa un valor de datos intermedio dentro de un clculo que no es modificado por el flujo de datos. Los flujos de datos se dibujan como flechas entre el productor y el consumidor de ese valor de datos. La fecha est rotulada con una descripcin de los datos, normalmente su nombre o su tipo. El mismo valor se puede enviar a varios lugares; esto se denota mediante una bifurcacin con varias flechas que emerjan de ella.
ELEMENTOS DE ANALISIS Y DESARROLLO ORIENTADOS A OBJETOS 46
Un actor es un objeto activo que controla el grafo de flujo de datos produciendo o consumiendo valores. Los actores estn asociados a las entradas y salidas del grafo del flujo de datos. En cierto sentido, los actores yacen en la frontera del grafo, pero hacen que concluya el flujo de datos como fuentes y sumideros de datos, as que en algunos casos se denominan terminadores. Los actores se representan como rectngulos para mostrar que son objetos. Las flechas entre el actor y el diagrama son las entradas y salidas del diagrama. Un almacn de datos es un objeto pasivo dentro de un diagrama de flujo de datos que almacena datos para su posterior utilizacin. A diferencia de los actores, no generan ninguna operacin por s mismos, sino que se limitan a responder a solicitudes de almacenamiento y acceso a datos. Los almacenes de datos se dibujan en forma de un par de lneas paralelas que contienen el nombre del almacn. Las flechas de entrada indican informacin u operaciones que modifican los datos almacenados: esto incluye la adicin de elementos, modificacin de valores, o el borrado de elementos. Las flechas de salida indican informacin que se ha extrado del almacn. Esto incluye recuperar todo el valor o bien alguno de sus componentes.
47
Cuenta
saldo Retirada de fondos
Cliente
Tabla peridica
pesos atmicos
elemento
hallar peso
peso atmico
48
Empaquetamiento Fsico
Los programas constan de unidades fsicas discretas que se pueden editar, compilar, importar o en general manipular. En algunos lenguajes, como C y Fortran, las unidades son archivos fuente. En Ada, el package * es una estructura explcita del lenguaje para crear mdulos. Los lenguajes orientados a objetos tienen distintos grados de empaquetamiento. En todo proyecto de envergadura, una cuidadosa descomposicin de la implementacin en paquetes (sea cual fuere su forma) resulta importante para permitir que distintas personas puedan trabajar cooperativamente en el programa. El empaquetamiento implica los asuntos siguientes: Ocultar la informacin interna a los ojos del exterior Coherencia de entidades Construccin de mdulos fsicos
Implementacin
La escritura de cdigo es una extensin del proceso de diseo. La escritura de cdigo debera de ser sencilla, casi mecnica, porque ya deberamos de haber tomado todas las decisiones difciles durante el diseo. Ciertamente, hay que tomar decisiones mientras se escribe el cdigo, pero cada una de ellas debera de afectar solamente a una pequea parte del programa, de tal manera que fuera fcil cambiarlas. Con todo, el cdigo de programa es la personificacin ltima de al solucin del problema, as que la forma en que se escriba ser importante para la mantenibilidad y la extensibilidad. La manera ms fcil de implementar un diseo orientado a objetos conlleva el uso de un lenguaje orientado a objetos, pero incluso los lenguajes orientados a objetos ofrecen distintos grados de apoyo para los conceptos orientados a objetos. Cada lenguaje supone un compromiso entre potencia conceptual, eficiencia y compatibilidad con los trabajos anteriores. An cuando tengamos que utilizar un lenguaje que no sea orientado a objetos, el diseo orientado a objetos resulta beneficioso. Los conceptos orientados a objetos se pueden hacer corresponder con las estructuras de un lenguaje no orientado a objetos. No es tanto un problema real de potencia - en todo caso, los lenguajes de programacin acaban por convertirse en cdigo mquina - como una cuestin de expresividad. El uso de un lenguaje que no sea orientado a objetos exige mayor cuidado y disciplina a la hora de mantener la estructura orientada a objetos del programa, y el programador no puede obtener ayuda del lenguaje para hallar las fallas.
Diseo de Objetos
49
Durante el diseo de objetos, se ejecuta la estrategia seleccionada durante el diseo del sistema y se rellenan los detalles. Despus del anlisis, se tienen los modelos de objetos, dinmico y funcional, no obstante el primero es el entorno principal alrededor del que se construye el diseo. El modelo de objetos procedente de un anlisis puede no mostrar operaciones. El diseador debe transformar las acciones y actividades del modelo dinmico y los procesos del modelos funcional en operaciones asociadas a las clases del modelo de objetos. Al efectuar esta transformacin, comienza el proceso consistente en hacer corresponder la estructura lgica del modelo de anlisis en una organizacin fsica de un programa. Cada operacin especificada en el modelo funcional debe ser formulada como un algoritmo. El anlisis de especificaciones dice lo que hace la operacin desde el punto de vista de sus clientes y los algoritmos muestran cmo se hace. Un algoritmos se pude subdividir en llamadas a operaciones ms sencillas, y as sucesivamente, hasta que las operaciones del nivel ms bajo sean suficientemente sencillas para implementarlas directamente sin ms refinamiento.
Diseo de Asociaciones
Las asociaciones son el pegamento de nuestro modelo de objetos, y proporcionan vas de acceso entre objetos siendo entidades conceptuales tiles para el modelado y el anlisis. Durante la fase del diseo de objetos hay que formularse una estrategia para implementar las asociaciones habidas en el modelo de objetos. Se puede seleccionar una estrategia global para implementar todas las asociaciones uniformemente, o bien seleccionar una tcnica particular para cada asociacin, teniendo en cuenta la forma en que ser utilizada en la aplicacin. Para tomar decisiones inteligentes acerca de las asociaciones, se necesita analizar primero la forma en que sern utilizadas. Hasta el momento se ha supuesto que las asociaciones son inherentemente bidireccionales, lo cual es sin duda cierto, en el sentido abstracto. Pero si algunas asociaciones de la aplicacin slo se van a recorrer en una direccin, se puede simplificar su implementacin. Hay que ser consciente, sin embargo, de que los requisitos de la aplicacin podran cambiar, con lo que sera necesario despus de una nueva operacin que necesite recorra la asociacin en sentido inverso. Hay que ocultar la implementacin, empleando operaciones de acceso para recorrer la asociacin y para actualizarla. Esto permitir cambiar de decisin con un esfuerzo mnimo.
50
51
Modelado Dinmico
El modelo dinmico muestra la forma en que el comportamiento del sistema y de los objetos de que consta va variando con el tiempo. Comience el anlisis dinmico buscando los sucesos que son estmulos y respuestas visibles externamente. Despus hay que resumir las secuencias de sucesos admisibles para todos los objetos que tengan un diagrama de estados. La ejecucin de algoritmos no es relevante durante el anlisis si no hay manifestaciones visibles externamente; los algoritmos son una parte de la implementacin.
52
Modelado Funcional
El modelo funcional muestra la forma en que se calculan los valores, sin tener en cuenta las secuencias, decisiones o estructura de los objetos. El modelo funcional muestra qu valores dependen de qu otros valores, y las funciones que los relacionan. Los diagramas de flujo de datos resultan tiles para mostrar dependencias funcionales. Las funciones se expresan de diferentes formas, incluyendo el lenguaje natural, las ecuaciones matemticas y el pseudocdigo. Los procesos de un diagrama de flujo de datos se corresponden con actividades o acciones de los diagramas de estados de las clases. Los flujos de un diagrama de flujo de datos se corresponden con objetos o con valores de atributos de un diagrama de objetos. Lo mejor es construir el modelo funcional despus de haberlo hecho con los modelos de objetos dinmico.
Adicin de Operaciones
Nuestro estilo de anlisis orientado a objetos hace mucho menos hincapi en la definicin de operaciones que las metodologas de programacin ms tradicionales, orientadas a objetos pero basadas en la programacin. La lista de operaciones que pueden resultar tiles es inacabable, y resulta difcil saber cundo tienen qu dejar de aadir.
53