Post Top Ad

Your Ad Spot

viernes, 31 de julio de 2020

Clases de C # para una aplicación CRM

Clases de C # para una aplicación CRM

Hasta ahora hemos estado analizando los detalles de cómo crear una clase en C #, luego agregarle propiedades y métodos. Ahora queremos agregar clases adicionales a la aplicación. Esta es una aplicación de tipo de gestión de relaciones con el cliente, por lo que necesitaremos cosas como una clase de pedido, una clase de producto, una clase de artículo de pedido y quizás algunas otras. En este tutorial, comenzaremos a desarrollar esas clases para que funcionen con nuestra clase de Clientes existente mientras prestamos atención a aspectos como Acoplamiento, Cohesión, Separación de preocupaciones y Patrones de diseño.

Primero definamos Acoplamiento, Cohesión, Separación de preocupaciones y Patrones de diseño.

  • El acoplamiento es el grado en que las clases dependen unas de otras.
  • La cohesión es el grado en que los miembros de la clase se relacionan con el propósito de la clase.
  • La separación de preocupaciones nos dice que descompongamos una aplicación en partes con una superposición mínima. Cada parte es responsable de una inquietud separada.
  • Los patrones de diseño son prácticas comunes para definir clases apropiadas y sus relaciones asociadas.

La clase de producto

El código para nuestra clase de Producto se muestra a continuación y lo primero que podemos ver es que tiene un constructor que acepta una identificación entera que representa el productIdTambién tiene varias propiedades que podemos usar para representar un producto. ¿Qué cosas tendría un producto? Tendría cosas como a CurrentPrice, a ProductId, a ProductDescriptiony a ProductNameAdemás, hay un Validate()método en la clase que valida la integridad de la ProductNameasí como la CurrentPriceTambién tenemos un Retrieve()método . El nombre del archivo de clase es Product.cs .Save()


La clase de orden

La clase Order también utiliza un constructor predeterminado, así como un constructor secundario que acepta un número entero que representa el orderIdLa clase Order tiene dos propiedades de OrderDateOrderIdTambién vemos esos mismos métodos de Retrieve()Save()Validate()El nombre del archivo para la clase Order es Order.cs .


La clase OrderItem

La última clase en el esquema para nuestra aplicación CRM será la clase OrderItem y se enumera a continuación. Todo parece bastante bueno, pero vemos que hay muchos métodos que tienen todas estas clases. Es posible que deseemos refactorizarlos un poco. Después de la convención, la clase OrderItem tiene un nombre de archivo de OrderItem.cs .


Refactorización de responsabilidades de clase

Hasta ahora tenemos una clase Customer , Product , Order y OrderItem . Es un buen comienzo para representar una aplicación CRM básica. Sin embargo, hay un par de problemas. Todas estas clases tienen un método Retrieve()Save()que podrían extraerse a una clase de repositorio. Además, deberíamos eliminar parte de la responsabilidad de la clase Cliente y colocarla en una clase Dirección . Comencemos a arreglar esto ahora.


La clase de dirección

A continuación se muestra el código para la clase de Dirección y se encuentra en Address.cs . Se utiliza para representar una dirección con las propiedades de AddressIdAddressTypeStreetLine1StreetLine2CityStatePostalCode, y CountrySolo lo suficiente para hacer su trabajo.


Crear clases de repositorio para la persistencia de datos

Las clases originales anteriores pueden beneficiarse al eliminar los métodos Retrieve()Save()de ellas. Las clases de repositorio pueden manejar la interacción con la base de datos. No es necesario recrear esta lógica en cada clase como se muestra arriba. Es mejor extraer esa lógica y ponerla en su propio repositorio. El uso de un patrón de repositorio es una convención muy popular en la programación orientada a objetos y se encuentra en C #, Java, PHP, etc.


La clase CustomerRepository

Todo lo que necesitamos hacer en esta clase es cortar y pegar los métodos Retrieve () y Save () de la clase Customer en esta clase de repositorio. De esta manera, el trabajo de interactuar con la base de datos se coloca en su propia Clase para una mejor separación de las preocupaciones. Su nombre de archivo es CustomerRepository.cs .


La clase OrderRepository

También podemos crear una clase OrderRepository para manejar la interacción con el almacén de datos, moviendo esa función fuera de la clase base Order. Entonces, de nuevo, continúe y mueva el código para Retrieve () y Save () fuera de la clase Order, y colóquelos ahora en la clase OrderRepository aquí. Tenga en cuenta que en todas estas clases de repositorio de ejemplo hasta el momento, simplemente estamos codificando algunos datos para representar un Pedido, un Producto, etc. El código real para interactuar con una base de datos se puede agregar más adelante. Por ahora configuramos las cosas de esta manera, e incluso podemos crear algunas pruebas automatizadas para garantizar que el código funcione. A continuación se muestra OrderRepository.cs .


La clase de repositorio de productos

La clase se establece en public, y nuevamente movemos los métodos Retrieve () y Save () fuera de la clase Product a esta clase ProductRepository. Esos métodos, una vez más, solo usan algunos datos simples codificados para simular el trabajo con una base de datos. Aquí está el archivo ProductRepository.cs .


La clase AddressRepository

La clase de repositorio final que podemos crear es la clase AddressRepository.cs . Este es un poco más complicado, ya que puede recuperar una sola dirección o una lista de direcciones para un cliente. El método RetrieveByCustomerId () devuelve un IEnumerable. Un IEnumerable es la forma recomendada de devolver una secuencia de datos, ya que los resultados proporcionan una mayor flexibilidad para los llamantes del método. Este método toma como parámetro la identificación del cliente, que es un valor entero.


Prueba de la clase CustomerRepository

Podemos probar las clases del repositorio usando un código similar al que vemos aquí. Este código prueba la clase CustomerRepository y puede crear clases similares para probar las clases OrderRepository y ProductRepository.

¡Ejecutar la prueba nos da una gran aprobación!
Prueba de patrón de repositorio de C #


Clases de C # para un resumen de la aplicación CRM

En este tutorial creamos algunas clases para trabajar con una aplicación de tipo CRM en C #. Una vez que se crearon las clases, evaluamos cada clase para ver si podíamos simplificar para reducir las responsabilidades. Descubrimos que podíamos y extrajimos algo de lógica a las clases de repositorio asociadas. Tomar este enfoque minimiza el acoplamiento, maximiza la cohesión, simplifica el mantenimiento y ayuda a que el código sea más verificable. Pronto veremos cómo funcionan juntas estas clases cuando hablemos sobre las relaciones entre las clases.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas