1.5. Papel de Clases y Objetos en El AyD OO
1.5. Papel de Clases y Objetos en El AyD OO
1.5. Papel de Clases y Objetos en El AyD OO
Durante el análisis y las primeras etapas del diseño, el desarrollador tiene dos tareas principales:
* Identificar las clases y objetos que forman el vocabulario del dominio del problema.
* Idear las estructuras por las que conjuntos de objetos trabajan juntos para lograr los
comportamientos que satisfacen los requerimientos del problema.
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 implantación. Durante estas fases del
desarrollo, el interés principal del desarrollo debe estar en la vista externa de estas abstracciones
clave y mecanismos.
Esta vista representa el marco de referencia lógico del sistema y, por tanto, abarca la estructura
de clases y la estructura de objetos del mismo. En las etapas finales del diseño y entrando ya en
la implantación, la tarea del desarrollador cambia: el centro de atención está en la vista interna
de estas abstracciones clave y mecanismos, involucrando a su representación física. Pueden
expresarse estas decisiones de diseño como parte de la arquitectura de módulos y la arquitectura
de procesos del sistema.
La experiencia de algunos analistas nos lleva a aplicar en primer lugar el criterio orientado a
objetos porque esta aproximación es mejor a la hora de servir de ayuda para organizar la
complejidad innata de los sistemas de software, al igual que ha servido de ayuda para describir
la complejidad organizada de sistemas complejos tan diversos como los computadores, plantas,
galaxias o grandes instituciones sociales.
Los sistemas orientados a objetos son también más resistentes al cambio y por lo tanto están
mejor preparados para evolucionar en el tiempo, porque su diseño está basado en formas
intermedias estables.
El modelo de objetos ha influido incluso en las fases iniciales del ciclo de vida del desarrollo del
software. El análisis orientado a objetos (AOO) enfatiza la construcción de modelos del mundo
real utilizando una visión del mundo orientado a objetos:
El análisis orientado a objetos 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.
Básicamente los productos del análisis orientado a objetos sirven como modelos de los que se
puede partir para un diseño orientado a objetos; los productos del diseño orientado a objetos
pueden utilizarse entonces como anteproyectos para la implementación completa de unos
sistemas utilizando métodos de programación orientado a objetos, de esta forma se relacionan
AOO, DOO y POO.
El diseño orientado a objetos es el método que lleva a una descomposición orientado a objetos.
Ofrece un rico conjunto de modelos que reflejan la importancia de plasmar explícitamente las
jerarquías de clases y de objetos de los sistemas que diseña.
El análisis orientado a objetos (AOO) se basa en conceptos sencillos, conocidos desde la infancia
y que aplicamos continuamente: objetos y atributos, él todo y las partes, clases y miembros.
Puede parecer llamativo que se haya tardado tanto tiempo en aplicar estos conceptos al
desarrollo de software. Posiblemente, una de las razones es el éxito de los métodos de análisis
estructurados, basados en los conceptos de flujo de información, que monopolizaron el análisis
de sistemas de software durante los últimos veinte años.
El AOO ofrece un enfoque nuevo para el análisis de requisitos de sistemas software. En lugar de
considerar el software desde una perspectiva clásica de entrada - proceso - salida, como los
métodos estructurados clásicos se basan en modelar el sistema mediante los objetos que forman
parte de el y las relaciones estáticas o dinámicas entre estos objetos.
Este enfoque pretende conseguir modelos que se ajusten mejor al problema real a partir del
conocimiento del llamado dominio del problema.
UN PUNTO DE VISTA:
Desde el punto de vista de los análisis antes mencionados hablamos del AOO y el AEO, podemos
decir que el AOO concibe una abstracción mayor que el AEO, que modela los sistemas desde un
punto de vista más próximo a su implementaron en un ordenador (entrada/proceso/salida).
La ventaja del AOO es que se basa en la utilización de objetos como abstracciones del mundo
real. Esto nos permite centrarnos en los aspectos significativos del domino del problema (en las
características de los objetos y las relaciones que se establecen entre ellos) y este conocimiento
se convierte en la parte fundamental del análisis del sistema software que será utilizado luego
en el diseño y la implementación.
En el AOO los objetos encapsulan tanto atributos como procedimientos (operaciones que se
realizan sobre los objetos), e incorpora, además, conceptos como los polimorfismos o la herencia
que facilitan la reutilización de código.
Podemos concluir entonces que el AOO puede facilitar mucho la creación de prototipos, y las
técnicas de desarrollo evolutivo de software. Los objetos don inherentemente reutilizables, y se
puede crear un catálogo de objetos que podemos usar en sucesivas aplicaciones. De esta forma,
podemos obtener rápidamente un prototipo del sistema, que pueda ser evaluado por el cliente,
a partir de los objetos analizados, diseñados e implementados en aplicaciones anteriores. Y lo
que es más importante, dada la facilidad de reutilización de estos objetos, el prototipo puede ir
evolucionando hacia convertirse en el sistema final, según vamos refinando los objetos de
acuerdo a un proceso de especificación incremental.
Comunicación
El concepto OO es más simple y esta menos relacionado con la informática que el concepto de
flujo de datos. Esto permite una mejor comunicación entre el analista y el experto en el dominio
del problema.
Consistencia
Los objetos encapsulan tanto atributos como operaciones. Debido a esto, el AOO reduce la
distancia entre el punto de vista de los datos y el punto de vista del proceso, dejando menos lugar
a inconsistencias disparidades entre ambos modelos.
Resistencia al cambio
Los cambios en los requisitos afectan notablemente a la funcionalidad de un sistema por lo que
afectan mucho al software desarrollando con métodos estructurados. Sin embargo, los cambios
afectan en mucha menos medida a los objetos que componen o maneja el sistema, que son
mucho más estables. Las modificaciones necesarias para adaptar una aplicación basada en
objetos a un cambio de requisitos suelen estar mucho más localizadas.
Reutilización
Aparte de la reutilización interna, basada en la expresión explícita de características comunes, el
paradigma 00 desarrolla modelos mucho más próximos al mundo real, con lo que aumentan las
posibilidades de reutilización. Es probable que en futuras aplicaciones nos encontremos con
objetos iguales o similares a los de la actual.
EL MODELO DE OBJETOS
Quede claro que el diseño orientado a objetos es fundamentalmente diferente a los enfoques de
diseño estructurado tradicionales; requiere un modo distinto de pensar acerca de la
descomposición y produce arquitecturas software muy alejadas del dominio de la cultura del
diseño estructurado.
Además, conviene mencionar que se observa que la mayoría de los programadores trabajan en
un lenguaje y utilizan solo un estilo de programación. Programan bajo un paradigma apoyado por
el lenguaje que usan. Frecuentemente, no se les han mostrado vías alternativas para pensar
sobre un problema, y por lo tanto tiene dificultades para apreciar las ventajas de elegir un estilo,
más apropiado para el problema que tienen entre manos.
No hay un estilo de programación que sea el mejor para todo tipo de aplicaciones. Por ejemplo,
la programación orientada a reglas sería la mejor para el diseño de una base de conocimiento, y
la programación orientada a procedimientos seria la más indicada para el diseño de operaciones
de cálculo intensivo. Por experiencia de algunos estudiosos de la materia, el estilo orientado a
objetos es él más adecuado para él más amplio conjunto de aplicaciones; realmente, este
paradigma de programación sirve con frecuencia como el marco de referencia arquitectónico en
el que se emplean otros paradigmas.
Cada uno de estos estilos de programación se basa en su propio marco de referencia conceptual.
Cada uno requiere una actitud mental diferente, una forma distinta de pensar en el problema.
Para todas las cosas orientadas a objetos, el marco de referencia conceptual es el modelo de
objetos.
Los métodos de diseñó estructurado surgieron para guiar a los desarrolladores que intentaban
construir sistemas complejos utilizando los algoritmos como bloques fundamentales para su
construcción. Análogamente los métodos de diseño orientados a objetos han surgido para
ayudar a los desarrolladores a explotar la potencia expresiva de los lenguajes de
programación basados en objetos y orientados a objetos, utilizando las clases como bloques
básicos de construcción.
Desgraciadamente, hoy en día la mayoría de los programadores han sido educados formal e
informalmente solo en los principios del diseño estructurado.
En el modelo de objetos es necesario estudiar los principios fundamentales en los que se basa el
análisis orientado a objetos, es decir:
· Abstracción
· Encapsulación
· Modularidad
· Jerarquía
· Concurrencia
Ninguno de estos principios es nuevo por sí mismo. Lo importante del modelo de objetos es el
hecho de conjugar todos estos elementos en forma sinérgica.
Al decir fundamentales, quiere decir que un modelo que carezca de cualquiera de estos
elementos no estará orientado a objetos.
Otros elementos que podrían llamarse secundarios, que quiere decir, que cada uno de ellos es
una parte útil del modelo de objetos, pero no esenciales son:
· Tipos
· Persistencia
A partir de los elementos antes mencionados, trataremos de mostrar, mediante una definición
en primer lugar de cada uno de ellos, cual es la asociación con el sistema solar y el sistema celular,
esto quiere decir que asociaremos estos elementos bases de la llamada teoría de los objetos con
el macrocosmo y el microcosmo, dictando sus características fundamentales para el
entendimiento claro de este. A la vez, también definiremos las desigualdades u oposiciones de
estos elementos con los sistemas antes mencionados.