1. Metodologías de Análisis y Diseño Unidad I Introducción a la Orientación a Objetos y el Modelado Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática
2. ¿Por qué la Orientación a Objetos? Principalmente porque la mayoría de los sistemas que se están desarrollando hoy en día están adoptando algunas o todas las nociones que involucra la orientación a objetos. Un poco de Historia. AÑOS 80: no se soluciona la “crisis del software” - poca capacidad de estimación - baja calidad de los programas - elevados costes de mantenimiento - duplicación de esfuerzos (ausencia de reutilización) ENFOQUE DE OBJETOS COMO ALTERNATIVA SIMULA (Noruega, 1967): lenguaje de simulación de sucesos SMALLTALK (PARC, años 70): combina el concepto de clase de SIMULA con la capacidad de abstracción funcional del LISP. Años 80 : Interés por las IGU (interfaces gráficas de usuario): su elevada complejidad se compensa con un alto grado de reutilización. Finales 80 y principios 90: interés por los métodos O.O. (diseño, especificación,...) ENFOQUE ESTRUCTURADO
3. ¿Qué es la Orientación a Objetos? Es un enfoque de desarrollo de software que organiza tanto el problema como su solución como una colección de objetos discretos, tanto la estructura de datos como el comportamiento están incluidos en la representación. Una representación orientada a objetos (OO) puede reconocerse por sus siete características: Abstracción, Identidad, Clasificación, Encapsulamiento, Herencia, Polimorfismo y Persistencia. Algunas representaciones solo se basan en un subconjunto de estas características. A estas les llamaremos basadas en objetos.
4. Características - Identidad Se refiere al hecho de que los datos son organizados en entidades discretas y distinguibles. Denominadas objetos. ¿Qué es un objeto? Conceptualmente, un objeto es una cosa con la que se puede interactuar: se le pueden enviar varios mensajes y éste reacciona ante ellos. De está forma , un objeto simple tiene estados y comportamientos asociados. (Grady Booch).
5. Características - Identidad ¿Qué es un objeto? Ejemplo: Sistema para el manejo del dique de un río El Dique es un objeto Cada Objeto posee un nombre, el que lo distingue de otros objetos. ¿Qué es el estado de un objeto? El estado de un objeto lo constituyen todos los datos que encapsula en un momento determinado. Un objeto normalmente tiene un número de lo que se conoce como atributos cada uno de los cuales tiene un valor. En la mayoría de los lenguajes orientados a objetos (LOO), hoy en día el conjunto de atributos de un objeto no puede cambiar durante su vida, pero si sus valores.
6.
7. Características - Identidad ¿Qué es el comportamiento de un objeto? Ejemplo: Comportamientos del Dique Alarma sonora: Avisa a los cercanos que un dique cambia de estado cerrado a abierto. (Para que se alejen) ¿Qué son los mensajes? Los mensajes son el medio a través del cual los objetos interactúan Un mensaje estimula la ocurrencia de cierto comportamiento en el objeto receptor. El comportamiento se realiza cuando se ejecuta una operación.
8. Características - Abstracción Está característica es importante para crear cualquier sistema sea orientado a objetos o no. Ayuda a representar los diferentes puntos de vista incorporados en el sistema que se desarrolla.
9. Características - Clasificación Se permite agrupar objetos que tienen atributos y comportamientos en común (Concepto de clases). GRUPO DE AVIONES GRUPO DE AUTOS
10. Características - Clasificación ¿Qué es una Clase? Una clase describe un conjunto de objetos que tiene un rol o roles equivalentes en el sistema. En los lenguajes O.O basados en clases, cada objeto pertenece a una clase, y la clase de un objeto es quien determina su interfaz. Los atributos que tiene un objeto vienen determinados por su clase, aunque, por supuesto, los valores que toman dichos atributos no están determinados por la clase, pudiendo variar. Los objetos de una misma clase tienen las mismas interfaces.
11. Características - Clasificación ¿Qué es una Clase? Una clase se puede representar usando una caja. Es importante mencionar que la clasificación refleja la perspectiva de la persona o grupo de trabajo que la realizo. Ej.: Se podrían a ver colocado bicicletas y aviones en la clase vehículos de transporte.
12. Características - Clasificación ¿Qué es una Clase? Se dice que un “objeto” es una instancia de una clase. Cada instancia tiene sus propios atributos (es decir, tiene sus propio estado en cualquier instante de tiempo), pero comparte nombre y comportamiento con las otras instancias de la clase. Por lo tanto una clase describe un conjunto de objetos que comparten una estructura común y tienen comportamientos comunes, pero los valores de los atributos nos ayudan a distinguir cada objeto particular.
13. Características - Encapsulamiento Las clases encapsulan los atributos y comportamientos de un objeto, ocultando los detalles de implementación. Es un complemento de la abstracción. ABSTRACCION ENCAPSULAMIENTO Empleado Empleado DNI Nombre Categoría Contratar Pagar Despedir
14. Características - Encapsulamiento La encapsulación no es lo mismo que el ocultamiento de información. El encapsulamiento es una técnica para empaquetar la información de tal forma que se oculte lo que debe ser ocultado y se haga visible lo que está pensando que sea visible.
15. Características - Herencia Las clases pueden ser organizadas jerárquicamente de acuerdo con las semejanzas y diferencias entre ellas. Para construir las jerarquías se comienza definiendo ampliamente una clase para refinarla luego en subclases más especializadas. Una subclase puede heredar la estructura así como el comportamiento y atributos de su superclase. Clase Abstracta, es una clase que no tiene instancias solo subclases.
16. Características - Polimorfismo Cuando el comportamiento se manifiesta de maneras diferentes en diferentes clases o subclases, estamos hablando de polimorfismo. Ej.: Una implementación especifica de una operación para una cierta clase se denomina “método”. En un sistema con polimorfismo, una operación puede tener más de un método que la implemente.
17. Características - Persistencia La capacidad del nombre, estados y comportamientos de un objeto para trascender el espacio o el tiempo. En otras palabras, el nombre, estado y comportamiento de un objeto se conservan cuando el objeto es transformado.
18.
19. Proceso de Desarrollo OO La consistencia a través del proceso es una diferencia clave entre los procedimientos de desarrollo más tradicionales y el proceso de desarrollo OO. Un proceso OO utiliza el encapsulamiento de datos y el comportamiento para formar unidades independientes (objetos). Y estas mismas estructuras semánticas representan el sistema desde los requerimientos a la implementación y prueba de la aplicación. Por lo tanto, la OO es una filosofía de representación de problema solución, y no una representación del ciclo de vida en sí. De está forma, la OO puede aplicarse en cualquiera de los ciclos de vida, desde el modelo en cascada al espiral.
20. Proceso de Desarrollo OO Requerimientos en OO El análisis OO de requerimientos usualmente se realiza en el lenguaje del usuario y discute los conceptos y escenarios probablemente en el dominio de la aplicación. Los conceptos incluyen información, servicio y responsabilidades. El conocimiento del dominio habilita a los desarrolladores para entender el contexto en el cual se usará el sistema y para describir requerimientos de una forma tal que los usuarios los entenderán. Hay que tener claro ,por su puesto, que la definición de requerimientos puede ser independiente de sus representaciones como objetos.
21.
22. Proceso de Desarrollo OO Diseño OO Se considera que el diseño del sistema es una abstracción de alto nivel de lo que será en el futuro el diseño del programa.
23. Proceso de Desarrollo OO Codificación y Prueba OO Una vez hecho el diseño, se describe el sistema a un nivel muy bajo, usando modelos de objetos, atributos y comportamientos. La codificación procede traduciendo los modelos a un lenguaje de programación OO. Este proceso no es trivial, por lo general a los implementadores les resulta necesario refinar las estructuras jerárquicas y efectuar ajustes a medida que los requerimientos crecen y maduran. Las pruebas del sistema siguen el mismo curso (Prueba Unitaria, Integración y del sistema).
24. Proceso de Desarrollo OO Codificación y Prueba OO Acá se muestran los diferentes niveles de abstracción, y su relación con las pruebas. Sistema Subsistema Jerarquía de Clases Clase Niveles de abstracción Prueba del Sistema Prueba Unitaria Prueba de Integración Prueba de Sistema
25.
26.
27.
28.
29.
30.
31.
32. UML: Historia Nov ‘97 UML aprobado por el OMG 1998 1999 2000 UML 1.2 UML 1.3 UML 1.4 2001-2003 UML 2.0 Revisiones menores
33.
34. UML: Aglutinamiento de enfoques UML Rumbaugh Jacobson Meyer Harel Wirfs-Brock Fusion Embly Gamma et. al. Shlaer-Mellor Odell Booch Pre- and Post-conditions State Charts Responsabilities Operation descriptions, message numbering Singleton classes Frameworks, patterns, notes Object life cycles
35.
36.
37.
38.
39. UML: Arquitectura Vista de diseño Vista de procesos Vista de despliegue Vista de implementación Vista de casos de uso Comprende las clases, interfaces y colaboraciones que forman el vocabulario del problema y su solución. Aspectos estáticos : diagramas de clases y objetos. Aspectos dinámicos : diagramas de interacción, de estados y de actividades Comprende los casos de uso que describen el comportamiento del sistema, tal y como es percibido por los usuarios finales, analistas y encargados de pruebas. Aspectos estáticos : diagramas de casos de uso. Aspectos dinámicos : diagramas de interacción, de estados y de actividades Comprende los hilos (threads) y procesos que forman los mecanismos de sincronización y concurrencia del sistema Aspectos estáticos y dinámicos : los mismos que la vista de diseño, pero con énfasis en las clases activas Comprende los componentes y archivos que se utilizan para ensamblar y hacer disponible el sistema físico. Aspectos estáticos : diagramas de componentes. Aspectos dinámicos : diagramas de interacción, de estados y de actividades Contiene los nodos que forman la topología hardware. Aspectos estáticos : diagramas de despliegue. Aspectos dinámicos : diagramas de interacción, de estados y de actividades