Está en la página 1de 13

La programacin por capas es un estilo de programacin en el que el objetivo primordial es la separacin de la lgica de negocios de la lgica de diseo; un ejemplo bsico

de esto consiste en separar la capa de datos de la capa de presentacin al usuario Fuente: Wikipedia.

Preparando nuestro proyecto en capas


Lo primero que tenemos que hacer es crear una carpeta, la llamaremos proyectocapas.

Ahora abrimos el Microsoft Visual Studio 2008 y crearemos nuestro proyecto en C#, llamaremos a este proyecto Presentacion, la cual esta ser la capa de presentacin.

Como observaran en el Explorador de Soluciones (Solution Explorer), solo tenemos Presentacion, entonces ahora tenemos que crear nuestras capas de negocio, entidad y dato.

Para crear nuestras tres capas faltantes, tenemos que agregar nuevas libreras de clase (Class Library), dentro de nuestro proyecto del Visual Studio. Vamos a agregar primero nuestra capa entidad:

Este paso lo repiten para agregar la capa datos y negocio

Ahora como se observa a continuacin en nuestro Explorador de soluciones (Solution Explorer), contiene librera llamada entidad, esta ser nuestra capa de entidad.

Cuando finalicen en agregar las siguientes capas el Explorador de soluciones se debera de mostrar de la siguiente manera:

El orden no importa, solo asegrense de crear primero la capa presentacin. Nota: Si gustan pueden eliminar el archivo clase llamado Class1.cs.

REFERENCIANDO NUESTRAS CAPAS Referencia entidad datos

Aqu se muestra como hacer la referencia:

Estamos haciendo referencia la capa entidad en la capa datos

Este paso lo repiten hasta terminar de referenciar: Referencia entidad y datos negocio Referencia entidad y negocio presentacion.

Como se observa a continuacin la entidad esta dentro de las Regencias de datos.

Una vez terminado de referenciar todas nuestras capas, tenemos que agregar el archivo SQLHelper.cs a la capa de datos. Para esto solo arrastramos el archivo hacia nuestra capa datos.

Listo ahora tenemos todo preparado para empezar a programar en capas.

Consulta en Capas Antes de empezar, crearemos un StoreProcedure que solo realice una lista de todos nuestros empleados de la tabla Employees de la base de datos Northwind.

OJO: Esto el StoreProcedure, deber ser creado en SQL Server.

Capa datos En la capa datos agregamos una clase EmpleadoBD, y agregamos las siguientes lneas de cdigo:
using using using using entidad; System.data.Sqlclient; System.data; Microsoft.ApplicationBlocks.Data;

public class EmpleadoBD { SqlConnection cn=new SqlConnection(Aqui tu cadena de conexion); public DataSet ListarEmpleadoBD() { return SqlHelper.ExecuteDataset(cn,listar_empleado); } }

Capa Negocio En la capa negocio agregamos una clase llamada EmpleadoB, y agregamos las siguientes lneas de cdigo:
using using using using System.Data; System.Data.SqlClient; Datos; Entidad; public class EmpleadoB { datos.EmpleadoBD ObjEmpleado=new datos.EmpleadoBD(); public DataSet ListarEmpleadoB() { return ObjEmpleado.ListarEmpleadoBD(); } }

Capa Presentacin (En el formulario)


using using using using System.Data; System.Data.SqlClient; Negocio; Entidad;

negocio.EmpleadoB objListarEmpleadoB=new EmpleadoB(); private void button1_Click(object sender, System.EventArgs e) { DataSet ds= new DataSet(); ds=objListarEmpleadoB.ListarEmpleadoB(); dataGridView1.DataSource=ds.Tables[0]; ds.Dispose(); }

* Un ejemplo de cmo mostrar tus datos en un comboBox:


{ DataSet ds = new DataSet(); ds = objListarEmpleadoB.ListarEmpleadoB(); comboBox1.DataSource = ds.Tables[0]; comboBox1.DisplayMember = "EmployeeID"; comboBox1.ValueMember = "EmployeeID"; ds.Dispose(); }

Capa Entidad En esta capa no hacemos nada por ahora, si gustan le agregan una clase llamada EmpleadoE
public class EmpleadoE { }

Nuestro proyecto debera de tener el siguiente aspecto al concluir todo.

Cuando ejecutemos nuestro programa, tendr que visualizar todos los Employees (empleados) cuando hagamos clic en el botn Listar.

Registro de datos mediante capas


Antes de empezar, debemos crear un Store Procedure en SqlServer, en la cual inserte informacin a una tabla usando parmetros. El Store procedure se llama: sp_regusuario

Capa Entidad En esta capa agregamos una clase y la llamamos regusuario y luego vamos a definir primero los atributos de la clase y luego vamos a encapsularlos.
public class regusuario { //atributos de una clase private string mcodigo; private string mnombre; private int medad; private int mtelefono; private string mclave; //implementar el encapsulamiento public string codigo { get { return this.mcodigo; } set { this.mcodigo = value; } } public string nombre { get { return this.mnombre; } set { this.mnombre = value; } }

public int edad { get { return this.medad; } set { this.medad = value; } } public int telefono { get { return this.mtelefono; } set { this.mtelefono = value; } } public string clave { get { return this.mclave; } set { this.mclave = value; } } }

Capa Datos Aqu haremos la conexin con la base de datos y con el SqlHelper llamaremos al store procedure (sp_regusuario), para que envi los parmetros la cual vamos a definirlos en esta capa, recomiendo que el nombre de los parmetros deben ser igual al los atributos de la clase. Agregamos una clase y la llamamos RegistrarUsu
using using using using Entidad; System.Data; System.Data.SqlClient; Microsoft.ApplicationBlocks.Data;

public class RegistrarUsu { SqlConnection cn = new SqlConnection("tu cadena de conexion");


public Boolean registrarusuarioBD(Entidad.regusuario objmanusuario)

{ string codigo; string nombre; int edad; int telefono; string clave; codigo = objmanusuario.codigo; nombre = objmanusuario.nombre; edad = objmanusuario.edad; telefono = objmanusuario.telefono;

clave = objmanusuario.clave; try { SqlHelper.ExecuteNonQuery(cn,"sp_regusuario", codigo, nombre, edad, telefono, clave); return true; } catch { return false; } } }

Capa Negocio Aqu agregamos una clase y la llamamos NEmpleado, en la cual vamos a crear un objeto (objregusu) haciendo referencia de la capa Datos de la clase RegistrarUsu.
public class NEmpleado { Datos.RegistrarUsu objregusu = new Datos.RegistrarUsu();
public Boolean registrarusuario(Entidad.regusuario objmanusuario)

{ if (objregusu.registrarusuarioBD(objmanusuario)) { return true; } else { return false; } } }

Capa Presentacin (En el formulario)


using using using using System.Data; System.Data.SqlClient; Negocio; Entidad; private void button2_Click(object sender, EventArgs e) {
Entidad.regusuario objmantenimiento = new Entidad.regusuario();

objmantenimiento.codigo = textBox1.Text; objmantenimiento.nombre = textBox2.Text; objmantenimiento.edad = int.Parse(textBox3.Text); objmantenimiento.telefono = int.Parse(textBox4.Text); objmantenimiento.clave = textBox5.Text; if (objListarEmpleadoN.registrarusuario(objmantenimiento)) {
MessageBox.Show("Guardo con Exito", "Registro y listar");

this.listarusuario(); } else {
MessageBox.Show("Error", "Registro y listar");

} }

* El listarusuario() es un listar datos en un GridView; por lo cual estos pasos estan explicados esta en el tema anterior (consulta en capas).
public void listarusuario() { DataSet ds = new DataSet(); ds = objListarEmpleadoN.ListarEmpleadoN(); dataGridView1.DataSource = ds.Tables[0]; ds.Dispose(); }

Este manual demuestra un estilo de programacin en capas, en la cual recalco que no es el nico estilo, existen muchos estilos de cmo programar en capas. Atte. El Autor.

También podría gustarte