Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 8, 2014 22:24
Show Gist options
  • Save Fhernd/88bdb0a048c19af089c0 to your computer and use it in GitHub Desktop.
Save Fhernd/88bdb0a048c19af089c0 to your computer and use it in GitHub Desktop.
Representa a la entidad Urna.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Urna.cs
//
// Original en: http://goo.gl/vmpWmF
//
// Propósito: Codificar los atributos, campos, constructores
// de la entidad `Urna`.
//
============================================================*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace N1_EleccionesCupi2.Modelo
{
/// <summary>
/// Representa la entidad `Urna` del modelo.
/// </summary>
public class Urna
{
#region Campos
/// <summary>
/// Arreglo con elementos `Candidato`.
/// </summary>
private Candidato[] candidatos;
#endregion
#region Constructores
/// <summary>
/// Crea una instancia de `Urna` y carga valores para el arreglo `candidatos`:
/// </summary>
public Urna()
{
// Creación de elemntos Candidato:
candidatos = new Candidato[3];
// Crea insticas instancia de `Candidato`:
candidatos[0] = new Candidato("Felipe", "Pitti", "Independiente", 27);
candidatos[1] = new Candidato("Susanita", "Chirusi", "Revolucionario", 26);
candidatos[2] = new Candidato("Manolito", "Goreiro", "Tradicional", 26);
}
#endregion
#region Métodos
/// <summary>
/// Calcula el costo promedio de las campañas de los tres candidatos.
/// </summary>
/// <returns>Costo promedio de las campañas.</returns>
public decimal CalcularCostoPromedioCampania()
{
// Acumula el costo de las tres compañas:
decimal total = candidatos[0].CostoCampania + candidatos[1].CostoCampania + candidatos[2].CostoCampania;
// Promedio:
return (total) / 3;
}
/// <summary>
/// Calcula el porcentaje de votos para un candidato específico.
/// </summary>
/// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
/// <returns></returns>
public decimal CalcularPorcentajeVotos(int numeroCandidato)
{
decimal porcentaje = (decimal)candidatos[numeroCandidato - 1].Votos / CalcularTotalVotos() * 100.0M;
return porcentaje;
}
/// <summary>
/// Calcula el total de votos de los tres candidatos.
/// </summary>
/// <returns>Total de votos</returns>
public int CalcularTotalVotos()
{
return candidatos[0].Votos + candidatos[1].Votos + candidatos[2].Votos;
}
/// <summary>
/// Agrega un voto a la urna de un candidato específico.
/// </summary>
/// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
/// <param name="medio">Medio (Internet, Radio, o Televisión) que influenció al votante.</param>
public void IngresarVoto(int numeroCandidato, MedioPublicitario medio)
{
candidatos[numeroCandidato - 1].IngresarVoto(medio);
}
/// <summary>
/// Obtiene un candidato a través de su ID (1, 2, o 3).
/// </summary>
/// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
/// <returns>Candidato</returns>
public Candidato ObtenerCandidato(int numeroCandidato)
{
return candidatos[numeroCandidato - 1];
}
/// <summary>
/// El conteo de votos se reinicia a cero, e igualmente los costos de campaña.
/// </summary>
public void VaciarUrna()
{
foreach (Candidato candidato in candidatos)
{
candidato.ReiniciarConteoVotos();
candidato.ReiniciarCostoCampania();
}
}
#endregion
/// <summary>
/// Método de extensión número 1.
/// </summary>
/// <returns>Cadena de caracteres.</returns>
#region Métodos de extensión
public string MetodoExtension1()
{
return "Respuesta 1";
}
/// <summary>
/// Método de extensión número 2.
/// </summary>
/// <returns>Cadena de caracteres.</returns>
public string MetodoExtension2()
{
return "Respuesta 2";
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment