Gestión de una aplicación completa con .NET Servicio de Informática Tema 1: Análisis y Diseño de la Aplicación Índice de contenido Introducción ....................................................................................................................................1 Diseñador de clases........................................................................................................................1 Creación de nuevos tipos............................................................................................................2 Visualización y modificación de tipos existentes..........................................................................5 Relaciones entre clases...............................................................................................................5 Diseño de la aplicación...................................................................................................................7 Pautas.........................................................................................................................................8 De base de datos a clases..............................................................................................................8 Introducción La fase mas importante del desarrollo software es el diseño. Si realizamos un mal diseño iremos arrastrando los problemas que esto genera a todas las fases del desarrollo, con el resultado de obtener software de mala calidad. En grupos de trabajo grandes es de gran utilidad tener esquemas y estándares de programación comunes, así como clases de utilidad genéricas compartidas por todos los programadores. Esto facilita la reutilización, compartición y comprensión de código. Diseñador de clases Mediante el diseñador de clases de Visual Studio podemos crear nuestro diagrama de clases de forma visual y él nos generará el código automáticamente. Para incluir un diagrama de clases a nuestro proyecto pinchamos con el botón derecho y elegimos Diagrama de clase. (Ilustración 1). Tema 1 / Página 1 Gestión de una aplicación completa con .NET Servicio de Informática Ilustración 1: Agregar diagrama de clase El diagrama de clase nos lo pondrá en la carpeta App_Code, si no le decimos lo contrario (Ilustración 2). Ilustración 2: Insertar en la carpeta App_Code Una vez hecho esto visualizaremos en pantalla la superficie de diseño. Tema 1 / Página 2 Gestión de una aplicación completa con .NET Servicio de Informática Creación de nuevos tipos Podemos crear nuevos tipos arrastrando elementos desde el Cuadro de herramientas a la superficie de diseño, o pinchando con el botón derecho en la superficie de diseño y eligiendo la opción Agregar. Al arrastrar un tipo nos mostrará una ventana para introducir las propiedades de dicho tipo. Como se puede ver en la ilustración 3 al añadir una clase Ilustración 3: Agregar una clase Tendremos en el diseñador de forma gráfica la nueva clase (Ilustración 4) . Ilustración 4: Nueva clase en el diseñador Haciendo click en la flecha que aparece en la parte superior derecha podremos visualizar y modificar las propiedades de la clase como se puede apreciar en la ilustración 5. Tema 1 / Página 3 Gestión de una aplicación completa con .NET Servicio de Informática Ilustración 5: Propiedades de la clase Ahora podemos agregar métodos propiedades y demás pulsando con el botón derecho sobre la clase, seleccionando el menú Agregar y el elemento que queramos insertar (Ilustración 6) Tema 1 / Página 4 Gestión de una aplicación completa con .NET Servicio de Informática Ilustración 6: Agregar elementos a la clase Visualización y modificación de tipos existentes Podemos visualizar los tipos existentes arrastrando elementos desde la Vista de Clases o el Explorador de Soluciones a la superficie de diseño. Tema 1 / Página 5 Gestión de una aplicación completa con .NET Servicio de Informática Relaciones entre clases En el diseñador también se pueden ver, crear y modificar las relaciones entre las diferentes clases de nuestra aplicación. Por ejemplo si arrastramos desde el Explorador de soluciones una clase ClaseExamenTest que es una clase heredada de ClaseExamenes en el diseñador veremos lo que aparece en la ilustración 7. Ilustración 7: Herencia entre clases Si queremos crear una herencia entre clases pincharemos en la flecha que aparece en la parte superior de la clase y lo arrastraremos hasta la clase de la que queremos que herede. Mediante la flecha que aparece a la derecha podemos crear una propiedad que devuelva un objeto de otra clase. Por ejemplo si agregamos una nueva clase llamada ClaseExamenPractico, pinchamos en la flecha de la derecha a arrastramos hasta la clase ClaseExamenTest (Ilustración 8) Tema 1 / Página 6 Gestión de una aplicación completa con .NET Servicio de Informática El código que genera sería public class ClaseExamenPractico { public global::ClaseExamenTest ExamenTest { get { throw new System.NotImplementedException(); } set { } } } Ilustración 8: Relación entre clases Estas propiedades se pueden mostrar como Propiedad o como asociación entre clases (Ilustración 8) o como cualquier otra propiedad. Para alternar entre una vista y otra pulsamos con el botón derecho en la propiedad y elegimos Mostrar como asociación o Mostrar como propiedad según queramos. Tema 1 / Página 7 Gestión de una aplicación completa con .NET Servicio de Informática Diseño de la aplicación El diseño orientado objetos trata de identificar las entidades con identidad y comportamiento propio para agruparlas en clases. No existen recetas fáciles para el análisis de software La correcta definición de los requisitos y su seguimiento en el proceso de desarrollo es uno de los factores fundamentales de la calidad del software En aplicaciones .net además tendremos que tener en cuenta que trabajamos con aplicaciones para Internet, o sea aspx, que son a su vez clases. Con Visual Studio una aplicación .net se parece mucho más a una aplicación que se ejecuta en local que a una aplicación programada con el antiguo asp. Ahora no necesitamos una página aspx para cada operación que queremos realizar, podemos usar un mismo aspx por ejemplo, para mostrar, tratar y almacenar datos. Sin necesidad de ir pasando los datos de una página a otra. Es muy importante analizar antes que queremos que haga cada aspx, sin sobrecargarlos demasiado ni crear aspx innecesarios. Pautas • Identificar y crear las clases de acceso a base de datos necesarias • Identificar las entidades con identidad propia de la aplicación para crear las clases necesarias • Minimizar el código en los aspx. Estos sólo se utilizarán para gestionar el comportamiento de la aplicación mediante los métodos de eventos. Toda la lógica estará agrupada en las clases dentro de la carpeta App_Code. • Utilizar las clases genéricas del Servicio de Informática para el acceso a base de datos, la gestión de errores y la globalización. • Crear los aspx según las entidades lógicas de la aplicación. Por ejemplo si tenemos una aplicación que gestiona alumnos y asignaturas lo más cómodo es crear dos aspx, uno para la gestión de alumnos y otro para la gestión de asignaturas. Es tan mala práctica crear mil aspx (por ejemplo: uno para mostrar la lista de alumnos, otro para el formulario de editar los datos, otro para almacenar los datos en bd …) como meter todo en el Default.aspx • Seguir la guía de estilo de programación en .NET del Servicio de Informática https://aplicacionesua.cpd.ua.es/programacion/verFicha.asp?ficha=660 Tema 1 / Página 8 Gestión de una aplicación completa con .NET Servicio de Informática De base de datos a clases El transformar nuestras tablas de base de datos en un buen esquema de clases nos puede facilitar la implementación de nuestras aplicaciones, aumentando la sencillez, legibilidad y reutilización. Por ejemplo, con un esquema como el de la Ilustración 9: Ilustración 9: Esquema de base de datos Primero localizamos los objetos con los que vamos a trabajar, normalmente aquellos que almacenan datos y no relaciones entre datos. En este esquema Alumnos y Estudios. Para cada uno de estos crearemos una clase. • • ClaseAlumno ClaseEstudio Como variables miembro y propiedades tendremos los campos de la base de datos que necesitamos en nuestra aplicación. Además cada clase tendrás dos métodos para leer y almacenar los datos en la base de datos llamados Carga y Guarda respectivamente. Tema 1 / Página 9 Gestión de una aplicación completa con .NET Servicio de Informática Ilustración 10: De base de datos a clases Ahora analizaremos nuestra aplicación para ver si necesitamos en algún momento una lista de alumnos o estudios. Supongamos que al mostrar los alumnos mostramos todos los estudios que tiene ese alumno, necesitamos una lista de estudios filtrada por alumno. Para ello nos creamos otra clase como la clase base pero en plural, ClaseEstudios, que se encarga de filtrar elementos de la Clase ClaseEstudio. Será una clase estática, y tendrá un método por cada filtro que queramos aplicar. Estos métodos devolverán listas de ClaseEstudio. La declaración de la clase y el método sería: public static class ClaseEstudios { public static List<ClaseEstudio> filtrarAlumno(int expediente) { // Aqui el Codigo throw new System.NotImplementedException(); } } De está forma el código de un aspx sería algo tan sencillo como Tema 1 / Página 10 Gestión de una aplicación completa con .NET Servicio de Informática ClaseAlumno alumno = new ClaseAlumno(); alumno.Carga(expediente); // Tratar datos del alumno alumno.Guarda(); Tema 1 / Página 11