Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //    OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Urna.cs
  9. //
  10. // Original en: http://goo.gl/vmpWmF
  11. //
  12. // Propósito: Codificar los atributos, campos, constructores
  13. // de la entidad `Urna`.
  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_EleccionesCupi2.Modelo
  23. {
  24.     /// <summary>
  25.     /// Representa la entidad `Urna` del modelo.
  26.     /// </summary>
  27.     public class Urna
  28.     {
  29.         #region Campos
  30.         /// <summary>
  31.         /// Arreglo con elementos `Candidato`.
  32.         /// </summary>
  33.         private Candidato[] candidatos;
  34.         #endregion
  35.  
  36.         #region Constructores
  37.         /// <summary>
  38.         /// Crea una instancia de `Urna` y carga valores para el arreglo `candidatos`:
  39.         /// </summary>
  40.         public Urna()
  41.         {
  42.             // Creación de elemntos Candidato:
  43.             candidatos = new Candidato[3];
  44.            
  45.             // Crea insticas instancia de `Candidato`:
  46.             candidatos[0] = new Candidato("Felipe", "Pitti", "Independiente", 27);
  47.             candidatos[1] = new Candidato("Susanita", "Chirusi", "Revolucionario", 26);
  48.             candidatos[2] = new Candidato("Manolito", "Goreiro", "Tradicional", 26);
  49.         }
  50.         #endregion
  51.  
  52.         #region Métodos
  53.         /// <summary>
  54.         /// Calcula el costo promedio de las campañas de los tres candidatos.
  55.         /// </summary>
  56.         /// <returns>Costo promedio de las campañas.</returns>
  57.         public decimal CalcularCostoPromedioCampania()
  58.         {
  59.             // Acumula el costo de las tres compañas:
  60.             decimal total = candidatos[0].CostoCampania + candidatos[1].CostoCampania + candidatos[2].CostoCampania;
  61.  
  62.             // Promedio:
  63.             return (total) / 3;
  64.         }
  65.         /// <summary>
  66.         /// Calcula el porcentaje de votos para un candidato específico.
  67.         /// </summary>
  68.         /// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
  69.         /// <returns></returns>
  70.         public decimal CalcularPorcentajeVotos(int numeroCandidato)
  71.         {
  72.             decimal porcentaje = (decimal)candidatos[numeroCandidato - 1].Votos / CalcularTotalVotos() * 100.0M;
  73.  
  74.             return porcentaje;
  75.         }
  76.         /// <summary>
  77.         /// Calcula el total de votos de los tres candidatos.
  78.         /// </summary>
  79.         /// <returns>Total de votos</returns>
  80.         public int CalcularTotalVotos()
  81.         {
  82.             return candidatos[0].Votos + candidatos[1].Votos + candidatos[2].Votos;
  83.         }
  84.         /// <summary>
  85.         /// Agrega un voto a la urna de un candidato específico.
  86.         /// </summary>
  87.         /// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
  88.         /// <param name="medio">Medio (Internet, Radio, o Televisión) que influenció al votante.</param>
  89.         public void IngresarVoto(int numeroCandidato, MedioPublicitario medio)
  90.         {
  91.             candidatos[numeroCandidato - 1].IngresarVoto(medio);
  92.         }
  93.         /// <summary>
  94.         /// Obtiene un candidato a través de su ID (1, 2, o 3).
  95.         /// </summary>
  96.         /// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
  97.         /// <returns>Candidato</returns>
  98.         public Candidato ObtenerCandidato(int numeroCandidato)
  99.         {
  100.             return candidatos[numeroCandidato - 1];
  101.         }
  102.         /// <summary>
  103.         /// El conteo de votos se reinicia a cero, e igualmente los costos de campaña.
  104.         /// </summary>
  105.         public void VaciarUrna()
  106.         {
  107.             foreach (Candidato candidato in candidatos)
  108.             {
  109.                 candidato.ReiniciarConteoVotos();
  110.                 candidato.ReiniciarCostoCampania();
  111.             }
  112.         }
  113.         #endregion
  114.         /// <summary>
  115.         /// Método de extensión número 1.
  116.         /// </summary>
  117.         /// <returns>Cadena de caracteres.</returns>
  118.         #region Métodos de extensión
  119.         public string MetodoExtension1()
  120.         {
  121.             return "Respuesta 1";
  122.         }
  123.         /// <summary>
  124.         /// Método de extensión número 2.
  125.         /// </summary>
  126.         /// <returns>Cadena de caracteres.</returns>
  127.         public string MetodoExtension2()
  128.         {
  129.             return "Respuesta 2";
  130.         }
  131.         #endregion
  132.     }
  133. }