Modelado de Colecciones, Enfoque práctico

Para este artículo les tengo preparado un análisis de modelo pensando comparativamente para resolver problemáticas derivadas de esquemas donde participan colecciones de objetos. Este tipo de escenarios es muy común en el desarrollo de soluciones de software de la actualidad, y existen muchas maneras de modelar variantes, por lo tanto es bueno tener opciones y poder evaluar la mejor solución de un tópico en particular.

Veamos una aproximación interesante con respecto a este tema.

La solución la realicé con las siguientes herramientas:

Herramienta de modelado: Enterprise architect 7.0, herramienta de programación Visual Studio 2005 y lenguaje para el desarrollo: C#.

En primer lugar les voy a exponer la problemática a resolver, tiene que ver con un esquema universitario, donde vamos a trabajar para acotar la solución sobre la entidad estudiante, de esta entidad el sector administrativo desea visualizar los estudiantes según su estado (regular, libre, etc).

Veamos el diagrama de clases y esto nos dará la óptica estática del dominio de la aplicación:


Este diagrama solo es preliminar y utilizado de forma rudimentaria para el análisis de la situación planteada.

La figura anterior nos muestra algunos atributos de la entidad "Estudiante" y además lo que vamos a necesitar para resolver la solicitud, el estado del mismo, expuesto por una enumeración "EstadoAlumno".

Lo que va resultar interesante es el modelado del diseñador para la solución, en este punto les voy a mostrar dos opciones desde una óptica estructural (diagrama de colaboraciones) y una óptica secuencial (diagrama de secuencia):

La primera de las opciones está pensada para la utilización de la lógica de control en el controlador propiamente dicho del esquema de presentación, y con tecnología generic para este punto, veamos el diagrama:


Ahora veamos una segunda opción donde se expone por una clase de tipo colección que posee lógica propia y que se modela de la siguiente forma:


Vemos que los cambios son radicales en cuanto al mecanismo de modelado, pero vemos un esquema comparativo desde una óptica secuencial:


Esta figura anterior muestra el diagrama de secuencia para la primera de las opciones.


Esta figura anterior muestra el diagrama de secuencia para la segunda de las opciones y de paso como ejemplo no está completo, solo analiza el caso de muestra de todos los estudiantes.

Les voy a mostrar las implementaciones en código del segundo de los casos que para el modelado de aplicaciones es más intuitivo y le da más consistencia a nivel general incluso pensando en re usar módulos, segmentos de análisis y diseño.

Veamos en primer lugar la capa de presentación, el Web Form "webestudiantes_2.aspx.cs":


Tenemos cada uno de los botones con las opciones de mostrar los estudiantes en su totalidad y en su modalidad regular, les vuelvo a recordar que esto no es una implementación de producción sino una demo de modelado con esquema de colecciones.

En esta opción y como muestran los modelos anteriormente expuestos el análisis de devolución de alumnos regulares lo realiza la colección de estudiantes, esta colección está heredado de CollectionBase, veamos su implementación:


Finalmente me resta mostrarle la implementación de la clase "Estudiante" que es muy simple, veamos:



De esta forma podemos lograr una consistencia completa desde el modelado de aplicativos implementando automatismos permanentes que nos brindan las herramientas de modelado y la de programación para definir esquemas arquitectónicos de soluciones de software.

Espero les sea útil el análisis expuesto, hasta la próxima….

Comentarios

  1. Nico, Cómo implementarías la clase enum en un diagrama de interacción? Quizás sea trivial por eso no lo modelaste, pero me interesa saber si es posible en tu ejemplo particular.
    Saludos!

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable