Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //  OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Estudiante.cs
  9. //
  10. // Original en: http://goo.gl/icjgjg
  11. //
  12. // Propósito: Implementar la clase Estudiante del modelo
  13. // del mundo.
  14. //
  15. ============================================================*/
  16.  
  17. using System;
  18.  
  19. namespace ElEstudiante.Modelo
  20. {
  21.     /// <summary>
  22.     /// Representa la entidad Estudiante.
  23.     /// </summary>
  24.     public class Estudiante
  25.     {
  26.         #region Campos
  27.         /// <summary>
  28.         /// Apellido del estudiante.
  29.         /// </summary>
  30.         private String apellido;
  31.         /// <summary>
  32.         /// Código académico del estudiante.
  33.         /// </summary>
  34.         private int codigo;
  35.         /// <summary>
  36.         /// Conjunto de cursos en los que está matriculado el estudiante.
  37.         /// </summary>
  38.         private Curso[] cursos;
  39.         /// <summary>
  40.         /// Nombre del estudiante.
  41.         /// </summary>
  42.         private String nombre;
  43.         #endregion
  44.  
  45.         #region Propiedades
  46.         /// <summary>
  47.         /// Establece y obtiene el apellido del estudiante.
  48.         /// </summary>
  49.         public String Apellido
  50.         {
  51.             get
  52.             {
  53.                 return apellido;
  54.             }
  55.             set
  56.             {
  57.                 apellido = value;
  58.             }
  59.         }
  60.         /// <summary>
  61.         /// Establece y obtiene el código del estudiante.
  62.         /// </summary>
  63.         public int Codigo
  64.         {
  65.             get
  66.             {
  67.                 return codigo;
  68.             }
  69.             set
  70.             {
  71.                 codigo = value;
  72.             }
  73.         }
  74.         /// <summary>
  75.         /// Establece y obtiene el nombre del estudiante.
  76.         /// </summary>
  77.         public String Nombre
  78.         {
  79.             get
  80.             {
  81.                 return nombre;
  82.             }
  83.             set
  84.             {
  85.                 nombre = value;
  86.             }
  87.         }
  88.         #endregion
  89.  
  90.         #region Constructor
  91.         /// <summary>
  92.         /// Crea una instancia de estudiante con datos básicos.
  93.         /// </summary>
  94.         /// <param name="nombre">Nombre del estudiante.</param>
  95.         /// <param name="apellido">Apellido del estudiante.</param>
  96.         /// <param name="codigo">Código académico del estudiante.</param>
  97.         public Estudiante(string nombre, string apellido, int codigo)
  98.         {
  99.             this.nombre = nombre;
  100.             this.apellido = apellido;
  101.             this.codigo = codigo;
  102.             cursos = new Curso[5];
  103.         }
  104.         #endregion
  105.  
  106.         #region Métodos
  107.         /// <summary>
  108.         /// Asigna un curso al estudiante.
  109.         /// </summary>
  110.         /// <param name="curso">Curso a asignar al estudiante.</param>
  111.         /// <returns>true si el curso fue asignado; en caso contrario, false.</returns>
  112.         public bool AsignarCurso(Curso curso)
  113.         {
  114.             for (int c = 0; c < cursos.Length; ++c)
  115.             {
  116.                 if (cursos[c] == null)
  117.                 {
  118.                     cursos[c] = curso;
  119.                     return true;
  120.                 }
  121.             }
  122.             return false;
  123.         }
  124.         /// <summary>
  125.         /// Busca un curso a través de su código.
  126.         /// </summary>
  127.         /// <param name="codigoCurso">Código del curso.</param>
  128.         /// <returns>Instancia del curso encontrado.</returns>
  129.         public Curso BuscarCurso(string codigoCurso)
  130.         {
  131.             for (int c = 0; c < cursos.Length; ++c)
  132.             {
  133.                 if (cursos[c] != null && cursos[c].CodigoCurso.Equals(codigoCurso))
  134.                 {
  135.                     return cursos[c];
  136.                 }
  137.             }
  138.  
  139.             return null;
  140.         }
  141.         /// <summary>
  142.         /// Obtiene el curso a través de su ID.
  143.         /// </summary>
  144.         /// <param name="id">ID del curso.</param>
  145.         /// <returns>Instancia del curso.</returns>
  146.         public Curso BuscarCurso(int id)
  147.         {
  148.             return cursos[id - 1];
  149.         }
  150.         /// <summary>
  151.         /// Calcula el promedio de notas del estudiante.
  152.         /// </summary>
  153.         /// <returns>Promedio de notas de los cursos del estudiante.</returns>
  154.         public double CalcularPromedioEstudiante()
  155.         {
  156.             double acumuladorCursos = 0.0;
  157.             int totalCreditos = 0;
  158.  
  159.             for (int c = 0; c < cursos.Length; ++c)
  160.             {
  161.                 if (cursos[c] != null)
  162.                 {
  163.                     if (cursos[c].Nota != 0.0)
  164.                     {
  165.                         totalCreditos += cursos[c].Creditos;
  166.                         acumuladorCursos += cursos[c].Nota * cursos[c].Creditos;
  167.                     }
  168.                 }
  169.             }
  170.  
  171.             if (totalCreditos != 0)
  172.             {
  173.                 return (acumuladorCursos / totalCreditos);
  174.             }
  175.             else
  176.             {
  177.                 return acumuladorCursos;
  178.             }
  179.         }
  180.         /// <summary>
  181.         /// Determina si el estudiante se haya en prueba académica.
  182.         /// </summary>
  183.         /// <returns>true si el estudiante está en prueba académica; false en caso contrario.</returns>
  184.         public bool EnPrueba()
  185.         {
  186.             if (CalcularPromedioEstudiante() < 3.25)
  187.             {
  188.                 return true;
  189.             }
  190.             else
  191.             {
  192.                 return false;
  193.             }
  194.         }
  195.         /// <summary>
  196.         /// Determina si un determinado curso se haya en el pénsum.
  197.         /// </summary>
  198.         /// <param name="codigoCurso">Código del curso a buscar.</param>
  199.         /// <returns>true si el curso se haya en el pénsum; false en caso contrario.</returns>
  200.         public bool PensumIncluyeCurso(string codigoCurso)
  201.         {
  202.             if (BuscarCurso(codigoCurso) != null)
  203.             {
  204.                 return true;
  205.             }
  206.             else
  207.             {
  208.                 return false;
  209.             }
  210.         }
  211.         /// <summary>
  212.         /// Determina si el estudiante tiene cupo diponible para matricular más cursos.
  213.         /// </summary>
  214.         /// <returns>true si el estudiante puede matricular otro curso, false en caso contrario.</returns>
  215.         public bool TieneCursosCompletos()
  216.         {
  217.             for (int i = 0; i < cursos.Length; ++i)
  218.             {
  219.                 if (cursos[i] == null)
  220.                 {
  221.                     return false;
  222.                 }
  223.             }
  224.  
  225.             return true;
  226.         }
  227.         #endregion
  228.  
  229.         #region Puntos de extensión
  230.         /// <summary>
  231.         /// Punto de extensión no. 1.
  232.         /// </summary>
  233.         /// <returns>Respuesta del mensaje.</returns>
  234.         public String PuntoExtension1()
  235.         {
  236.             return "Respuesta 1";
  237.         }
  238.         /// <summary>
  239.         /// Punto de extensión no. 2.
  240.         /// </summary>
  241.         /// <returns>Respuesta del mensaje.</returns>
  242.         public String PuntoExtension2()
  243.         {
  244.             return "Respuesta 2";
  245.         }
  246.         #endregion
  247.     }
  248. }