Beruflich Dokumente
Kultur Dokumente
Aplicacin Agenda Objetivos Crear una aplicacin orientada a objetos basada en componentes en una arquitectura en capas. La aplicacin ser una agenda de contactos en las que se podrn administrar los mismos y asignarles citas. Nota: El presente ejercicio esta preparado para ser realizado en Visual Studio versin 2005 aunque tambin puede realizarse con otras versiones del mismo incluida Visual C # Express Edition. El motor de base de datos a utilizar ser SQL Server y aunque puede ser usado la versin 2000 los ejemplos estarn basados en la versin 2005 (tambin es posible usar versin Express de 2005 que es de uso gratuito) Arquitectura La aplicacin esta dividida en capas funcionales, estas son conceptuales y permiten dividir la aplicacin en sectores mantenibles por funcionalidad. Cada capa tiene asociado fsicamente al menos un componente y en ocasiones varias capas pueden residir en uno solo. La aplicacin estar dividida en las siguientes capas: 1. Capa de Datos 2. Capa de Negocios 3. Capa de Presentacin 4. Componentes Transversales: estos se utilizaran en todas las capas y sern de utilidad para diferentes funcionalidades. En nuestro caso tendremos los siguientes componentes: a. Entidades: compuesto por objetos utilizados para pasar informacin entre las diferentes capas. Tendrn mtodos para funcionalidad bsica y propiedades para administrar su estado. b. Configuracin: permite obtener los datos de configuracin de manera centralizada entre ellos la cadena de conexin a la base de datos.
Capa de Negocios
Capa de Datos
Utilizando la divisin en capas organizaremos la implementacin de la aplicacin dividiendo nuestro trabajo en las siguientes secciones siguiendo el mismo orden de secuencia para crearlos: 1. Crear y configurar Base de Datos 2. Codificar Componentes Transversales 3. Codificar Capa de Datos 4. Codificar Capa de Negocio 5. Codificar Capa de Presentacin 1. Seccin: Crear y configurar Base de Datos La base de datos a utilizar es muy simple, solo contiene 2 tablas y estar implementado sobre un motor de base de datos SQL Server.
1) Crear la base de datos en SQL Server. Nota: Para poder crear la base de datos se debera tener una cuenta de usuario de SQL que tenga privilegios de creacion de base datos asi tambien como de tablas y procedimientos almacenados. Nombre de la base de Datos: Agenda
Crear directorio para la solucion: dejar tildado NOTA: De esta manera se crea un directorio de solucion con el nombre de la aplicacin Agenda que contendra todos los proyectos de la aplicacin y creara el primero de ellos llamado Entidades.
Nombre del Proyecto (Name): Entidades Ubicacin de la solucin (Location): C:\Proyectos\ Nombre de la Solucion (Solution Name): Agenda
2) Una vez creado el proyecto y cada vez que agregemos uno nuevo, habra que
cambiar el Root Namespace al componente para organizar logicamente las clases. Para ello abra la solapa Application de las propiedades del proyecto y modifique los siguientes datos y luego guarde los cambios: A) Assembly Name: Agenda.Entidades B) Root Namespace: Agenda.Entidades
corresponderan con una tabla de la base de datos y representan un registro de ella. Cada campo de la tabla se representa como una propiedad de la clase. Ademas para agrupar varios registros utilizaremos colecciones genericas con lo cual tendremos una clase que represente una entidad y otra clase asociada que represente un conjunto de esas entidadades. Las clases a crear seran: Clase Funcion Contacto Representa un contacto en la aplicacin y se corresponde con un registro de la tabal Contactos. Contactos Representa una coleccin de objetos Contacto y se utiliza para devolver los resultados desde la base de datos. Cita Representa una cita en la aplicacin y se corresponde con un registro de la tabal Cita. Citas Representa una coleccin de objetos Cita y se utiliza para devolver los resultados desde la base de datos. Estas clases solo contienen propiedades y alguna funcionalidad basica ya que solo almacenan informacion. Otros componentes manipularan estos objetos y los relacionaran como corresponda, de acuerdo a sus necesidades. Para cada una de las clases antes mencionada crearemos un archivo de clase de la siguiente forma: A) Posicionar cursor sobre proyecto Entidades y presionar boton derecho. B) Del menu contextual elegir opcion Add / New Item (de igual manera se puede hacer desde menu Project / Add new Item (Ctrl+Shif+A). C) Del dialogo Add New Item Project Name seleccionar tipo de archivo Class y agregarle el nombre a la clase que haremos que coincida con la clase que codificaremos en su interior. En nuestro ejemplo comencemos con Cita.
D)
Note la extension .CS que es la abreviacion de C# (C sharp), dado que podriamos haber iniciado el proyecto en cualquier lenguaje, esto va a estar relacionado con el. Por ejemplo si seria Visual Basic Net el usado seria la extension .VB. Una vez creada la clase agreguemos 3 regiones con el objetivo de lograr una mejor organizacin y legibilidad del codigo. Luego en los ejercicios siguientes agregaremos el codigo dentro de cada una de las regiones. Cada region comienza con #region y finaliza con #endregion. En este caso las regiones seran: (1) Propiedades (2) Constructores (3) Metodos
B) Region Propiedades
C) Region Constructores
D) Region Metodos
B) Region Constructores
C) Region Metodos
NOTA: En caso que la clase inicial Class1.cs (creada por defecto al crear el proyecto) siga existiendo, eliminarla.
11)
Modificar el nombre de la clase y el archivo que la contiene por: ConfigManager 12) Agregar referencias al proyecto de los siguientes assemblies que seran necesarios: System.Configuration
14)
El codigo generado toma algunos elementos que es conveniente repasar su funcion y utilizacion: A) Static: modificador que convierte el metodo en estatico (o de clase), es decir que puede llamarse sin necesidad de instanciarlo la clase. B) AppDomain: objeto en el que la aplicacin esta corriendo; es un aislamiento que genera en CLR para que no se interfieran las aplicacciones entre si. En este caso obtenemos el directorio en donde se encuentra para poder buscar el archivo de configuracion de la aplicacin. C) Configuration, ConfigurationManager, WebConfiguration: son algunas de las clases para manipular archivos de configuracion en .Net. El funcionamiento de esta clase es sencillo, se utiliza el metodo GetValue() para obtener un valor del archivo de configuracion, el cual es obtenido por el metodo privado GetConfiguration() segn el contexto en el que estemos trabajando. Con este componente terminado, nuestra solucion debera quedar asi:
3. Seccin: Codificar Capa de Datos En esta seccin se creara el componente de acceso a datos que ser el nico que conocer como manipular los datos y transformar registros en objetos y viceversa. Duracin Aproximada 60 minutos Pasos
1) Crear un nuevo proyecto en la solucion en base a lo siguiente: A) Seleccionar en Project Type lenguaje Visual C# B) Seleccionar Class Library
C) Completar los siguientes datos: Ubicacin de la solucin (Location): C:\Proyectos\Agenda Mofificar en las propiedades de la solapa Application del proyecto: A) Assembly Name: Agenda.Datos B) Root Namespace: Agenda.Datos Este componente necesitara acceder al archivo de configuracion y ademas necesitara transformar todo registro recuperado de la base de datos en objeto y viceversa. Para lograr acceder a los componentes que tienen dicha funcionalidad deberemos agregar las referencias a dichos componentes Configuracion y Entidades. A) Posicionarse en el Explorador de Solucion en la carpeta References del proyecto Datos. B) Seleccionar del menu contextual la opcion Add Reference. C) Dado que los componentes se encuentran en la misma solucion seleccionar la solapa Projects. D) Seleccionar el componente a agregar y presionar Ok E) Repetir los pasos anteriores por cada uno de los componentes.
2) 3)
5)
defecto por el de Contactos, y ademas agregar al inicio del namespace de dicha clase Agenda para que pertencezca al espacio de nombre de la aplicacin. La clase Contactos creada contendra metodos para cada operacin que puede realizar, los cuales corresponderan con cada procedimiento almacenado (Store Procedure) creado en la base de datos. Nomenclatura: Utilizar nombre de la accion a realizar. Por ejemplo para dar de alta un Contacto tendremos:
6)
Procedimiento Almacenado: ContactosAdd Agregar el siguiente codigo dentro de la clase Contactos para el metodo: Add
10)
11)
La clase Citas creada contendra metodos para cada operacin que puede realizar, los cuales corresponderan con cada procedimiento almacenado (Store Procedure) creado en la base de datos. Nomenclatura: Utilizar nombre de la accion a realizar.
12)
Add
Clase de Datos: Citas Metodo: Add Tabla asociada: Citas Procedimiento Almacenado: CitasAdd Agregar el siguiente codigo dentro de la clase Citas para el metodo:
13)
14)
15)
16)
17)
Otra clase que deberemos crear dentro de este proyecto es la clase General que contendra metodos para cada operacin que puede realizar. Nomenclatura: Utilizar nombre de la accion a realizar.
18)
19)
4. Seccin: Codificar Capa de Negocio En esta seccin se creara la capa de Negocios que se encargara de interactuar con la capa de datos para recuperar y enviar datos a la misma para que dicha realice su funcin sobre la base de datos. Manipulara los datos meditante los objetos que soporta el componente Entidades. Duracin Aproximada 60 minutos Pasos
1) Crear un nuevo proyecto en la solucion en base a lo siguiente: A) Seleccionar en Project Type lenguaje Visual C# B) Seleccionar Class Library
C) Completar los siguientes datos:
2) Una vez creado el proyecto y cada vez que agregemos uno nuevo, habra que
cambiar el Root Namespace al componente para organizar logicamente las clases. Para ello abra la solapa Application de las propiedades del proyecto y modifique los siguientes datos y luego guarde los cambios: A) Assembly Name: Agenda.Negocio B) Root Namespace: Agenda.Negocio
4)
5)
Clase de Datos: Contactos Metodo: Add Clase asociada: Contactos (Proyecto Datos) Metodo de Clase asociada: Add
10)
11)
La clase Citas creada contendra metodos para cada operacin que puede realizar. Nomenclatura: Utilizar nombre de la accion a realizar.
12)
Add
Clase de Datos: Citas Metodo: Add Clase asociada: Citas (Proyecto Datos) Metodo de Clase asociada: Add Agregar el siguiente codigo dentro de la clase Citas para el metodo:
13)
14)
15)
16)
17)
Agregar el siguiente codigo dentro de la clase Citas para el metodo sobrecargado que toma adema el rango de fechas: GetAll
18)
2)
Company: Agenda - Software SRL Product: Agenda Copyright: Copyright Software SRL 2008 Assembly Version: 1 0 0 - 0 File Version: 1 0 0 0
las opciones del menu contextual (al presionar boton derecho del raton sobre el proyecto) la opcion Set as StarUp Project. Nota: esto con el agregado de lo configurado en el punto anterior como objeto de incio de dicho proyecto nos permitira que inicie la aplicacin con este formulario una vez que corramos la misma.
5) Agregar referencias a los componentes: Entidades: (para utilizar los objetos con estado y para el envio de
informacion)
Negocio: (para obtener la funcionalidad de la aplicacin) NOTA: Nunca tiene referencia directa al componente Datos.
8) Abrir la clase Program y modificar el codigo de tal forma que quede como
el siguiente:
NOTA: Esta clase contiene el metodo Main() que sera el primero en ejecutarse al ejecutarse la aplicacin y el mismo se encargara de correr el formulario principal, en nuestro caso frmMain.
NOTA: Este codigo solo contiene una Enumeracion que utilizaremos para diferencias 2 posibles estados de los formularios Cita y Contacto y poder distinguir entre los estados de Alta y Edicion.
10)
Agregaremos el resto de formularios a traves de los siguientes pasos estando posicionados sobre el proyecto Agenda usando datos de tabla que se encuentra debajo. Al final obtendremos el siguiente resultado:
Propiedades Comunes Name: [prefijo] frm + [NombreFormulario] (ejemplo: frmContacto) MinimizeBox: false MaximizeBox: false 11) Agregar las siguientes regiones al formulario principal frmMain:
12)
Agregar al formulario principal frmMain los siguientes controles a travez de la caja de herramientas (ToolBox) arrastrando y soltando cada uno de los sig. Controles: (ver imagen siguiente para distinguirlos)
B) C) D) 13)
Nombre: sttMain
Agregar al formulario frmContacto lo detallado a continuacion: Ventana de Alta y Edicion de Contactos [frmContacto]
A) GroupBox: Name: grpDatosContacto Location: 12, 12 Text: Datos del B) Label Name lblId lblApellido lblNombre lblEmpresa lblCargo lblTelefono lblTelefonoMovil lblEmail lblDomicilio lblLeyenda C) TexBox Name txtId txtApellido txtNombre txtEmpresa txtCargo txtTelefono txtTelefonoMovil txtEmail txtDomicilio D) Button Name btnAceptar btnCancelar Text Aceptar Cancelar Location 280, 300 368, 300 Size 75, 23 75, 23
Size: 430, 260 Contacto Text Id Apellido Nombre Empresa Cargo Telefono Telefono Movil Email Domicilio * Campo obligatorio Location 25, 30 25, 56 25, 25, 25, 25, 25, 25, 25,
14)
Agregar al formulario frmCita lo detallado a continuacion: Ventana de Alta y Edicion de Citas [frmCita]
A) GroupBox:
Text: Datos de la Cita B) Label Name Text lblId Id lblTema Tema lblFecha Fecha lblEstado Estado lblResultado Resultado lblLeyenda * Campo obligatorio
15)
Agregar al formulario frmCitas lo siguiente: Ventana de Busqueda de Citas para un Contacto dado [frmCitas]
16)
Agregar codigo al formulario frmContacto.La imagen que se muestra a continuacion muestra las propiedades, metodos y eventos necesarios. A continuacion se muestra el codigo detallado de cada uno ellos.
Region:
Region: Metodos de Controles Nota: el codigo de cada metodo a se encuentra a continuacion. Nota: el codigo que no se muestra en la imagen intentar completarlo siguiendo la funcionalidad requerida con la ayuda del profesor.
17)
Nota: el codigo que no se muestra en la imagen intentar completarlo siguiendo la funcionalidad requerida con la ayuda del profesor.
18)
Nota: el codigo que no se muestra en la imagen intentar completarlo siguiendo la funcionalidad requerida con la ayuda del profesor.
19)
Region: Constructores
Metodo: CargarGrilla
Metodo: IsItemSelected
Metodo: Nuevo
Metodo: Editar
Metodo: Eliminar
Metodo: VerCitas