You are on page 1of 13

La programación por capas es un estilo de programación en el que el objetivo primordial es la

separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste


en separar la capa de datos de la capa de presentación 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 presentación.

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 librerías 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 continuación en nuestro Explorador de soluciones (Solution
Explorer), contiene librería llamada entidad, esta será nuestra capa de entidad.

Cuando finalicen en agregar las siguientes capas el Explorador de soluciones se debería


de mostrar de la siguiente manera:

El orden no importa, solo asegúrense de crear primero la capa presentación.


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 continuación 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 líneas
de código:

using entidad;
using System.data.Sqlclient;
using System.data;
using 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 líneas de código:

using System.Data;
using System.Data.SqlClient;
using Datos;
using Entidad;

public class EmpleadoB


{
datos.EmpleadoBD ObjEmpleado=new datos.EmpleadoBD();
public DataSet ListarEmpleadoB()
{
return ObjEmpleado.ListarEmpleadoBD();
}
}
Capa Presentación (En el formulario)

using System.Data;
using System.Data.SqlClient;
using Negocio;
using 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 cómo 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 debería de tener el siguiente aspecto al concluir todo.

Cuando ejecutemos nuestro programa, tendrá que visualizar todos los Employees
(empleados) cuando hagamos clic en el botón Listar.
Registro de datos mediante capas

Antes de empezar, debemos crear un Store Procedure en SqlServer, en la cual inserte


información a una tabla usando parámetros. 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 conexión con la base de datos y con el SqlHelper llamaremos al store
procedure (sp_regusuario), para que envié los parámetros la cual vamos a definirlos en
esta capa, recomiendo que el nombre de los parámetros deben ser igual al los atributos
de la clase. Agregamos una clase y la llamamos RegistrarUsu

using Entidad;
using System.Data;
using System.Data.SqlClient;
using 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 Presentación (En el formulario)

using System.Data;
using System.Data.SqlClient;
using Negocio;
using 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 programación en capas, en la cual recalco que no es el


único estilo, existen muchos estilos de cómo programar en capas.
Atte. El Autor.

You might also like