OOAD - Paradigma orientado a objetos
Una breve historia
El paradigma orientado a objetos tomó su forma a partir del concepto inicial de un nuevo enfoque de programación, mientras que el interés por los métodos de diseño y análisis llegó mucho más tarde.
El primer lenguaje orientado a objetos fue Simula (simulación de sistemas reales) que fue desarrollado en 1960 por investigadores del Norwegian Computing Center.
En 1970, Alan Kay y su grupo de investigación en Xerox PARK crearon una computadora personal llamada Dynabook y el primer lenguaje de programación puro orientado a objetos (OOPL), Smalltalk, para programar Dynabook.
En la década de 1980, Grady Booch publicó un artículo titulado Object Oriented Design que presentaba principalmente un diseño para el lenguaje de programación Ada. En las siguientes ediciones, amplió sus ideas a un método de diseño completo orientado a objetos.
En la década de 1990, Coad incorporó ideas de comportamiento a los métodos orientados a objetos.
Las otras innovaciones importantes fueron las técnicas de modelado de objetos (OMT) de James Rumbaugh y la ingeniería de software orientada a objetos (OOSE) de Ivar Jacobson.
Análisis orientado a objetos
El análisis orientado a objetos (OOA) es el procedimiento para identificar los requisitos de ingeniería de software y desarrollar especificaciones de software en términos del modelo de objetos de un sistema de software, que comprende objetos que interactúan.
La principal diferencia entre el análisis orientado a objetos y otras formas de análisis es que en el enfoque orientado a objetos, los requisitos se organizan en torno a objetos, que integran tanto datos como funciones. Están modelados a partir de objetos del mundo real con los que interactúa el sistema. En las metodologías de análisis tradicionales, los dos aspectos, funciones y datos, se consideran por separado.
Grady Booch ha definido OOA como "El análisis orientado a objetos es un método de análisis que examina los requisitos desde la perspectiva de las clases y los objetos que se encuentran en el vocabulario del dominio del problema" .
Las tareas principales en el análisis orientado a objetos (OOA) son:
- Identificando objetos
- Organizar los objetos creando un diagrama de modelo de objetos
- Definición de las partes internas de los objetos o atributos de los objetos.
- Definición del comportamiento de los objetos, es decir, acciones de los objetos.
- Describir cómo interactúan los objetos
Los modelos comunes utilizados en OOA son casos de uso y modelos de objetos.
Diseño orientado a objetos
El diseño orientado a objetos (OOD) implica la implementación del modelo conceptual producido durante el análisis orientado a objetos. En OOD, los conceptos del modelo de análisis, que son independientes de la tecnología, se asignan a las clases de implementación, se identifican las restricciones y se diseñan las interfaces, lo que da como resultado un modelo para el dominio de la solución, es decir, una descripción detallada de cómo el sistema debe construido sobre tecnologías concretas.
Los detalles de implementación generalmente incluyen:
- Reestructurar los datos de la clase (si es necesario),
- Implementación de métodos, es decir, estructuras y algoritmos de datos internos,
- Implementación de control y
- Implementación de asociaciones.
Grady Booch ha definido el diseño orientado a objetos como “un método de diseño que abarca el proceso de descomposición orientada a objetos y una notación para representar modelos tanto lógicos y físicos como estáticos y dinámicos del sistema en diseño” .
Programación orientada a objetos
La programación orientada a objetos (OOP) es un paradigma de programación basado en objetos (con datos y métodos) que tiene como objetivo incorporar las ventajas de la modularidad y la reutilización. Los objetos, que suelen ser instancias de clases, se utilizan para interactuar entre sí para diseñar aplicaciones y programas informáticos.
Las características importantes de la programación orientada a objetos son:
- Enfoque de abajo hacia arriba en el diseño de programas
- Programas organizados en torno a objetos, agrupados en clases.
- Centrarse en los datos con métodos para operar sobre los datos del objeto
- Interacción entre objetos a través de funciones
- Reutilización del diseño mediante la creación de nuevas clases agregando características a las clases existentes
Algunos ejemplos de lenguajes de programación orientados a objetos son C ++, Java, Smalltalk, Delphi, C #, Perl, Python, Ruby y PHP.
Grady Booch ha definido la programación orientada a objetos como “un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada una de las cuales representa una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas mediante relaciones de herencia ” .