programacion en capas

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.

Upload: diego-leonardo-vargas-catano

Post on 23-Jun-2015

2.511 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programacion en Capas

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.

Page 2: Programacion en Capas

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.

Page 3: Programacion en Capas

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

Page 4: Programacion en Capas

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.

Page 5: Programacion en Capas

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.

Page 6: Programacion en Capas

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.

Page 7: Programacion 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();

}

}

Page 8: Programacion en Capas

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

{

}

Page 9: Programacion en Capas

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.

Page 10: Programacion en Capas

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;

}

}

Page 11: Programacion en Capas

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;

Page 12: Programacion en Capas

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");

}

}

Page 13: Programacion en Capas

* 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.