Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 16, 2014 19:33
Show Gist options
  • Save Fhernd/af86650e531c41d24c4b to your computer and use it in GitHub Desktop.
Save Fhernd/af86650e531c41d24c4b to your computer and use it in GitHub Desktop.
Entidad Encuesta en C#.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Encuesta.cs
//
// Original en: http://goo.gl/8RVFMg
//
// Propósito: Implementar la entidad Encuesta.
//
============================================================*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace N1_Encuesta.Modelo
{
/// <summary>
/// Representa la entidad Encuesta del modelo del mundo del problema.
/// </summary>
public class Encuesta
{
#region Campos:
/// <summary>
/// Los rangos (edad) para la encuesta.
/// </summary>
RangoEncuesta[] rangosEncuesta;
#endregion
#region
/// <summary>
/// Recupera el número total de opiniones.
/// </summary>
public int NumeroTotalOpiniones
{
get
{
int totalOpiniones = 0;
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
totalOpiniones += rangoEncuesta.NumeroOpiniones;
}
return totalOpiniones;
}
}
#endregion
#region Constructores
/// <summary>
/// Inicializa una instancia de Encuesta.
/// </summary>
public Encuesta()
{
// 3 rangos de encuesta:
rangosEncuesta = new RangoEncuesta[3];
rangosEncuesta[0] = new RangoEncuesta();
rangosEncuesta[1] = new RangoEncuesta();
rangosEncuesta[2] = new RangoEncuesta();
}
#endregion
#region Métodos
/// <summary>
/// Agrega una opinión a la encuesta.
/// </summary>
/// <param name="idRango">ID (1, 2, o 3) del rango de edad.</param>
/// <param name="opinion">Valor (0-10) de la opinión.</param>
/// <param name="estadoCivil">Estado civil del encuestado(a).</param>
public void AgregarOpinion(int idRango, int opinion, EstadoCivil estadoCivil)
{
switch(estadoCivil)
{
case EstadoCivil.Casado:
rangosEncuesta[idRango - 1].AgregarOpinion(estadoCivil, opinion);
break;
case EstadoCivil.Soltero:
rangosEncuesta[idRango - 1].AgregarOpinion(estadoCivil, opinion);
break;
}
}
/// <summary>
/// Calcula el promedio total de las opiniones del curso.
/// </summary>
/// <returns>Promedio total de las opiniones del curso.</returns>
public double CalcularPromedio()
{
double totalEncuesta = 0.0;
double promedioEncuesta;
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
totalEncuesta += rangoEncuesta.TotalOpiniones;
}
promedioEncuesta = totalEncuesta / NumeroTotalOpiniones;
return promedioEncuesta;
}
/// <summary>
/// Calcula el promedio para un estado civil particular.
/// </summary>
/// <param name="estadoCivil">Estado civil (casado(a) o soltero(a).</param>
/// <returns>El promedio parcial para un estado civil.</returns>
public double CalcularPromedio(EstadoCivil estadoCivil)
{
double totalEncuesta = 0;
double promedio;
switch (estadoCivil)
{
case EstadoCivil.Casado:
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
totalEncuesta += rangoEncuesta.TotalOpinionCasados;
}
promedio = totalEncuesta / TotalCasados();
return promedio;
default:
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
totalEncuesta += rangoEncuesta.TotalOpinionSolteros;
}
promedio = totalEncuesta / TotalSolteros();
return promedio;
}
}
/// <summary>
/// Muestra resultados de un rango y estado civil específicos.
/// </summary>
/// <param name="idRango">ID (1, 2, o 3) del rango.</param>
/// <param name="estadoCivil">Estado civil del encuestado(a).</param>
/// <returns>Total de opiniones.</returns>
public double MostrarResultado(int idRango, EstadoCivil estadoCivil)
{
return rangosEncuesta[idRango - 1].CalcularPromedio(estadoCivil);
}
private int TotalCasados()
{
int total = 0;
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
total += rangoEncuesta.NumeroCasados;
}
return total;
}
/// <summary>
/// Calcula el número total de solteros(as) que que han realizado la encuesta.
/// </summary>
/// <returns>Número total de soltero(s).</returns>
private int TotalSolteros()
{
int total = 0;
foreach (RangoEncuesta rangoEncuesta in rangosEncuesta)
{
total += rangoEncuesta.NumeroSolteros;
}
return total;
}
#endregion
#region Métodos de Extensión
/// <summary>
/// Método de extensión no. 1.
/// </summary>
/// <returns>Cadena de resultado.</returns>
public string Metodo1()
{
return "Respuesta 1";
}
/// <summary>
/// Método de extensión no. 2.
/// </summary>
/// <returns>Cadena de resultado.</returns>
public string Metodo2()
{
return "Respuesta 2";
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment