VENTAS 2. Creación de Clases en C#
Una vez definida la base de datos, ahora procedemos a crear las clases, para evitar que tu aplicación sufra retrasos y estar tratando de averiguar como empezaras la programación, deberás tener presente las siguientes recomendaciones:- Primero, debes crear por cada tabla de SqlServer una clase que coincida con los campos y nombre de la tabla.
- Segundo, debes agregar las clases adicionales que usaras y tienen una relación directa con estas tablas, por ejemplo las herencias, las interfaz y otras.
1. Agregando Clases Padre o Principales
Una clase que uso constantemente es una que me simplifica las operaciones de acceso y ejecución de ordenes de SqlServer desde C#, a esta la llamo la clase CDatos.
El código de CDatos ha sido mejorado respecto al anterior ya que ahora este no provocará caída de la aplicación, sino nos enviara un mensaje en caso de EjecutarComando y un valor nulo en caso de EjecutarConsulta, este tiene el siguiente código:
El código de CDatos ha sido mejorado respecto al anterior ya que ahora este no provocará caída de la aplicación, sino nos enviara un mensaje en caso de EjecutarComando y un valor nulo en caso de EjecutarConsulta, este tiene el siguiente código:
Código Fuente de la Clase CDatos |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace AppVenta { public class CDatos { string cadenaDeConexion = @"Data Source=(local);Initial Catalog=bdVentas;Integrated Security=True"; public string Mensaje; public bool EjecutarComando(string textoSql) { try { //Para la cadena de conexión string sCnn = cadenaDeConexion; //Creamos la conexión SqlConnection cnn = new SqlConnection(sCnn); //Texto del comando insert string iTexto = textoSql; //Creamos el comando con su texto y conexión SqlCommand cmd = new SqlCommand(iTexto, cnn); cmd.CommandType = CommandType.Text; //abrimos la conexión y ejecutamos el comando cnn.Open(); //Ejecutamos el comando sql cmd.ExecuteNonQuery(); //Cerramos la conexión cnn.Close(); //Agregamos el Mensaje de Correcto Mensaje = "Comando realizado con exito..."; return true; } catch { Mensaje = "0: Error en Conexión con la base de datos o el comando de SqlServer"; return false; } } public DataTable EjecutarConsulta(string textoSQL) { try { //Creamos la cadena de conexion string sCnn = cadenaDeConexion; //Creamo el comando de sql para listar string sSel = textoSQL; //Creamos el adaptador que capturara los datos SqlDataAdapter da = new SqlDataAdapter(sSel, sCnn); //Creamos un data table que contendra los datos DataTable dt = new DataTable(); //Llenamos el data table con el adaptador da.Fill(dt); //Colocando Mensaje Mensaje = "Comando realizado con éxito..."; return dt; } catch { Mensaje = "0: Error en Conexión o Consulta de SqlServer..."; return null; } } } } |
Interfaz
Una interfaz es una forma de acceder a una clase, cuando uno desea acceder a los datos u operaciones de una clase, puede hacer lo mediante la interfaz, la ventaja de una interfaz es que varios objeto pueden usar una interfaz y así puede generalizarse la solución de un problema para varias clases y programarlas en conjunto.También crearemos una interfaz que nos permitirá generalizar el código y hacer las operaciones de insertar, modificar y eliminar de forma similar para evitar desorden a la hora de codificar estos métodos, las interfaz también permiten la re utilización del código, esta interfaz es la siguiente:
Código Fuente de la Interfaz IMantenimiento |
using System;
using System.Collections.Generic;using System.Linq; using System.Text; namespace AppVenta { public interface IMantenimiento { bool Insertar(); bool Modificar(); bool Eliminar(); } } |
2. Creación de Clases
Ahora necesitamos crear las clases que corresponden a las tablas de la base de datos, primero hemos desarrollado las clases anteriores ya que estas clases dependen de la clase CDatos y de la interfaz CMantenimiento.
Código de la clase CProducto |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LogicaVenta { public class CProducto : CDatos, IMantenimiento { private int idProducto; public int IdProducto { get { return idProducto; } set { idProducto = value; } } private string nombre; public string Nombre { get { return nombre; } set { nombre = value; } } private string descripcion; public string Descripcion { get { return descripcion; } set { descripcion = value; } } private double precioUnitario; public double PrecioUnitario { get { return precioUnitario; } set { precioUnitario = value; } } private string observacion; public string Observacion { get { return observacion; } set { observacion = value; } } public bool Insertar() { throw new NotImplementedException(); } public bool Modificar() { throw new NotImplementedException(); } public bool Eliminar() { throw new NotImplementedException(); } } } |
Código de la clase CCLiente |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LogicaVenta { class CCliente : CDatos, IMantenimiento { int idCliente; public int IdCliente { get { return idCliente; } set { idCliente = value; } } string nombre; public string Nombre { get { return nombre; } set { nombre = value; } } string direccion; public string Direccion { get { return direccion; } set { direccion = value; } } string telefono; public string Telefono { get { return telefono; } set { telefono = value; } } string observacion; public string Observacion { get { return observacion; } set { observacion = value; } } public bool Insertar() { throw new NotImplementedException(); } public bool Modificar() { throw new NotImplementedException(); } public bool Eliminar() { throw new NotImplementedException(); } } } |
Código de la clase CDetalle |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LogicaVenta { class CDetalle : CDatos, IMantenimiento { int fkVenta; public int FkVenta { get { return fkVenta; } set { fkVenta = value; } } int fkProducto; public int FkProducto { get { return fkProducto; } set { fkProducto = value; } } int cantidad; public int Cantidad { get { return cantidad; } set { cantidad = value; } } double precioUnitario; public double PrecioUnitario { get { return precioUnitario; } set { precioUnitario = value; } } public bool Insertar() { throw new NotImplementedException(); } public bool Modificar() { throw new NotImplementedException(); } public bool Eliminar() { throw new NotImplementedException(); } } } |
Código de la clase CVenta |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LogicaVenta { class CVenta : CDatos, IMantenimiento { int idVenta; public int IdVenta { get { return idVenta; } set { idVenta = value; } } DateTime fecha; public DateTime Fecha { get { return fecha; } set { fecha = value; } } string observacion; public string Observacion { get { return observacion; } set { observacion = value; } } int fkCliente; public int FkCliente { get { return fkCliente; } set { fkCliente = value; } } public bool Insertar() { throw new NotImplementedException(); } public bool Modificar() { throw new NotImplementedException(); } public bool Eliminar() { throw new NotImplementedException(); } } } |