Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //    OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: RangoEncuesta.cs
  9. //
  10. // Original en: http://goo.gl/l8YVIF
  11. //
  12. // Propósito: Implementar la entidad rango encuesta.
  13. //
  14. ============================================================*/
  15.  
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Threading.Tasks;
  21.  
  22. namespace N1_Encuesta.Modelo
  23. {
  24.     /// <summary>
  25.     /// Representa la entidad RangoEncuesta del mundo del problema.
  26.     /// </summary>
  27.     public class RangoEncuesta
  28.     {
  29.         #region Campos
  30.         /// <summary>
  31.         /// Número de personas casadas.
  32.         /// </summary>
  33.         private int numeroCasados;
  34.         /// <summary>
  35.         /// Número de personas solteras.
  36.         /// </summary>
  37.         private int numeroSolteros;
  38.         /// <summary>
  39.         /// Total de las opiniones de los casados.
  40.         /// </summary>
  41.         private int totalOpinionCasados;
  42.         /// <summary>
  43.         /// Total de las opiniones de los solteros.
  44.         /// </summary>
  45.         private int totalOpinionSolteros;
  46.         #endregion
  47.  
  48.         #region Propiedades
  49.         /// <summary>
  50.         /// Obtiene la cantidad de personas casadas.
  51.         /// </summary>
  52.         public int NumeroCasados
  53.         {
  54.             get
  55.             {
  56.                 return numeroCasados;
  57.             }
  58.         }
  59.         /// <summary>
  60.         /// Obtiene la cantidad de personas que han realizado la encuesta.
  61.         /// </summary>
  62.         public int NumeroOpiniones
  63.         {
  64.             get
  65.             {
  66.                 return numeroCasados + numeroSolteros;
  67.             }
  68.         }
  69.         /// <summary>
  70.         /// Obtiene el número de solteros.
  71.         /// </summary>
  72.         public int NumeroSolteros
  73.         {
  74.             get
  75.             {
  76.                 return numeroSolteros;
  77.             }
  78.         }
  79.         /// <summary>
  80.         /// Obtiene el total de las opiniones de las personas casadas.
  81.         /// </summary>
  82.         public int TotalOpinionCasados
  83.         {
  84.             get
  85.             {
  86.                 return totalOpinionCasados;
  87.             }
  88.         }
  89.         /// <summary>
  90.         /// Obtiene el total de las opiniones de las personas solteras.
  91.         /// </summary>
  92.         public int TotalOpinionSolteros
  93.         {
  94.             get
  95.             {
  96.                 return totalOpinionSolteros;
  97.             }
  98.         }
  99.         /// <summary>
  100.         /// Obtiene el total de las opiniones de las personas de ambos estados civiles.
  101.         /// </summary>
  102.         public int TotalOpiniones
  103.         {
  104.             get
  105.             {
  106.                 return totalOpinionCasados + totalOpinionSolteros;
  107.             }
  108.         }
  109.         #endregion
  110.  
  111.         #region Constructores
  112.         /// <summary>
  113.         /// Crea un rango de encuesta con los valores por defecto.
  114.         /// </summary>
  115.         public RangoEncuesta()
  116.         {
  117.             numeroCasados = 0;
  118.             numeroSolteros = 0;
  119.             totalOpinionCasados = 0;
  120.             totalOpinionSolteros = 0;
  121.         }
  122.         #endregion
  123.  
  124.         #region Métodos
  125.         /// <summary>
  126.         /// Agrega una opinión.
  127.         /// </summary>
  128.         /// <param name="estadoCivil">Estado civil del encuestado(a).</param>
  129.         /// <param name="opinion"></param>
  130.         public void AgregarOpinion(EstadoCivil estadoCivil, int opinion)
  131.         {
  132.             switch (estadoCivil)
  133.             {
  134.                 case EstadoCivil.Casado:
  135.                     ++numeroCasados;
  136.                     totalOpinionCasados += opinion;
  137.                     break;
  138.                 case EstadoCivil.Soltero:
  139.                     ++numeroSolteros;
  140.                     totalOpinionSolteros += opinion;
  141.                     break;
  142.             }
  143.         }
  144.         /// <summary>
  145.         /// Calcula el promedio total.
  146.         /// </summary>
  147.         /// <returns>Promedio total</returns>
  148.         public double CalcularPromedio()
  149.         {
  150.             return (double)TotalOpiniones / NumeroOpiniones;
  151.         }
  152.         /// <summary>
  153.         /// Calcula el promedio para un estado civil concreto.
  154.         /// </summary>
  155.         /// <param name="estadoCivil">Estado civil del encuestado(a).</param>
  156.         /// <returns>Promedio.</returns>
  157.         public double CalcularPromedio(EstadoCivil estadoCivil)
  158.         {
  159.             switch (estadoCivil)
  160.             {
  161.                 case EstadoCivil.Casado:
  162.                     return (double) totalOpinionCasados / numeroCasados;
  163.                 default:
  164.                     return (double)totalOpinionSolteros / numeroSolteros;
  165.             }
  166.         }
  167.         #endregion
  168.     }
  169. }