Capitulo 2 –Análisis y diseño Orientado a Objetos con aplicacionesEl modelo de objetos La tecnología orientada a objetos se apoya en los sólidos fundamentos de la ingeniería, cuyos elementos reciben el nombre de modelo de objetos. El modelo de objetos abarca los principios de abstracción, encapsulamiento, modularidad, jerarquía, tipos, concurrencia y persistencia. El modelo de objetos conjuga todos estos elementos de forma sinérgica. 2.1 La evolución del modelo de objetos: 2.1.1 la topología de los lenguajes de primera y principios de la segunda generación Por topología se entiende los bloques físicos de construcción de ese lenguaje y como esas partes pueden ser conectadas. El bloque básico de construcción es el subprograma Estructura física relativamente plana. Un error en una parte de un programa puede tener un devastador efecto de propagación a través del resto del sistema. Cantidad enorme de acoplamiento entre subprogramas. Aparición de la entropía después de un periodo de mantenimiento. 2.1.2 la topología de los lenguajes de fines de la segunda y principios de la tercera Hallazgo de que los subprogramas podían servir como mecanismos de abstracción. Se asentaron los fundamentos de la programación estructurada. Surgieron los métodos de diseño estructurado (Jackson). 2.1.3 la topología de los lenguajes de finales de la tercera generación. Aparece la compilación de módulos separados. Pocas reglas de consistencia semántica entre las interfaces de los módulos. No brindaban soporte para la abstracción de datos y la comprobación estricta. Muchos errores se descubrían en tiempo de ejecución. 2.1.4 la topología de los lenguajes de programación basados en objetos y orientados a objetos Cuando hablamos de complejidad dijimos que muchas realidades complejas se basan en elementos básicos repetidos. Dichos objetos abstractos son imposibles de modelar mediante las topologías anteriores (Ej Pedido Comprobante Factura). El bloque de construcción básico es la clase u objeto. Un programa orientado a objetos se organiza alrededor de los nombres del dominio del problema. En sistemas grandes existen agrupaciones de abstracciones que se construyen en capas, una sobre la otra. Fundamentos del modelo de objetos El modelo de objetos surgió para ayudar a los desarrolladores a explotar la potencia expresiva de los lenguajes orientados y basados en objetos. Existen límites para la cantidad de complejidad que se puede manejar utilizando solo la descomposición algorítmica; por tanto hay que volverse a la descomposición orientada a objetos. 1 POO, DOO y AOO Los objetos representan componentes de un sistema descompuesto modularmente o bien unidades modulares de representación del conocimiento. POO Es un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas, miembros de una jerarquía de clases unidas mediante relaciones de herencia. DOO Es un método de diseño que abarca el proceso de descomposición orientada a objetos y una notación para describir los modelos, lógico y físico, así como los modelos estáticos y dinámicos de un sistema que se diseña. AOO Es un método de análisis que examina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema 2.2 Elementos del modelo de objetos: Tipos de paradigmas de programación Orientado a procedimientos Orientado a objetos Orientado a lógica Orientados a reglas Orientados a restricciones Algoritmos Clases y Objetos Objetivos a menudo expresados como calculo de predicados. Reglas Si-Entonces(If then) Relaciones invariantes Los cuatro elementos fundamentales del modelo de objetos Abstracción Encapsulamiento Modularidad Jerarquía Elementos secundarios del modelo de objetos Tipos (tipificación) Concurrencia Persistencia Abstracción: Descripción simplificada que enfatiza algunos de los detalles o propiedades de algo. Una abstracción se centra en la visión externa de un objeto, y por tanto sirve para separar el comportamiento esencial de un objeto de su implantación. Encapsulamiento: el encapsulamiento se obtiene mediante la ocultación de información. La estructura de un objeto esta oculta, así como su implantación. Para que la abstracción funcione la implementación debe estar encapsulada. El interfaz de una clase captura su vista externa, mientras que la implementación (implantación) comprende la representación de la abstracción así como los mecanismos que consiguen el comportamiento deseado. Modularidad: crear fronteras bien definidas y documentadas dentro del programa (Ejemplo: las distintas capas de la arquitectura de un sistema). 2 El uso de módulos en los sistemas complejos es imprescindible para reducir la complejidad. Jerarquía: la identificación de jerarquías simplifica en gran medida la comprensión de un problema. Las dos jerarquías mas importantes en un sistema complejo son su estructura de clases (la jerarquía de Clases <<es un>>) y su estructura de objetos (<<es un>>) Ejemplo de jerarquías: Herencia simple: La herencia denota una relación <<es un>>. Implica una jerarquía de generalización especialización, donde un clase hija especializa el funcionamiento de la clase padre, y la ultima generaliza las propiedades y/o funcionamiento de su clase hija. MotorTurboJet (es un) MotorDePropulsion MotorDePropulsion MotorTurboJet Herencia Multiple: Algunas veces una clase se deriva de más de una clase base, este fenómeno se conoce como herencia múltiple. Ej: MarisaRobilotte JuanCarlosMancuso MarianoMancuso Jerarquía de agregación: la agregación permite el agrupamiento físico de estructuras relacionadas lógicamente. 3 Tipos: los objetos de tipos distintos no pueden intercambiarse, como mucho, pueden intercambiarse de formas muy restringidas (casting). C++ posee comprobación estricta de tipos (todas las operaciones son congruentes respecto al tipo) lo que produce que los sistemas desarrollados en este lenguaje posean menor cantidad de errores latentes. Ligadura: este concepto se refiere al hecho de ligar una nombre a su tipo (una variable a su tipo). Hay dos momentos en los que se puede realizar esta en tiempo de compilación o en tiempo de ejecución. Dependiendo de cuando se realice va a ser ligadura estática o ligadura dinámica respectivamente. Concurrencia: un sistema que implique concurrencia puede tener muchos hilos de control (hilos de ejecución) que se encarguen de realizar distintas tareas de forma casi simultanea para el usuario. 4
© Copyright 2024