//Competencia -> Factor -> Pregunta
 public Factor(string cod, string nom, Competencia comp, string des = null, int nOrden = 0)
 {
     codigo = cod;
     competenciaAsociada = comp;
     Nombre = nom;
     Descripcion = des;
     nro_orden = nOrden;
     listaPreguntas = new List<Pregunta>();
 }
 /*
  * La mision que justifica la existencia de los gestores es hacer de "interfaz" entre las ENTIDADES y el resto del sistema
  * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar
  */
 public Factor instanciarFactor(string codigo, string nombre, Competencia competenciaAsociada, string descripcion = null, int nrOrden = 0)
 {
     Factor nuevoFactor = new Factor(codigo, nombre, competenciaAsociada, descripcion, nrOrden);
     return nuevoFactor;
 }
 public void addListaCaracteristicas(Competencia comp, Ponderacion pond)
 {
     Caracteristica elemento;
     elemento.dato1 = comp;
     elemento.dato2 = pond;
     caracteristicas.Add(elemento);
 }
        /*
         * - RecuperarFactores tiene la misión de recuperar los factores para una competencia puntual
         *   de a la BASE DE DATOS
         */
        public List<Factor> recuperarFactores(Competencia competenciaAsociada)
        {
            bool conexionExitosa;
            GestorFactores gestorFactores = new GestorFactores();
            List<Factor> listaDeFactores = new List<Factor>();//Para el retorno de datos

            string consultaSql = "SELECT f.nombre, f.codigo, nroOrden " +
            "FROM `factor` AS f " +
            "JOIN `competencia` AS comp on (comp.codigo = '" + competenciaAsociada.Codigo + "') " +
            "WHERE f.`Competencia_codigo` = comp.codigo;";

            conexionExitosa = iniciarConexion();

            if (!conexionExitosa)
            {
                MessageBox.Show("No se realizo la conexion con la base de datos");
                terminarConexion();
                return null;
            }

            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();
            comando.CommandText = consultaSql;

            MySqlDataReader reader = comando.ExecuteReader();

            if (!reader.HasRows)
            { //si el reader esta vacio, es qe no encontro a ese candidato
                terminarConexion();
                return null;
            }

            while (reader.Read())
            {
                string cod = reader["codigo"].ToString();
                string nomFactor = reader["nombre"].ToString();
                int nrOrden = Int32.Parse(reader["nroOrden"].ToString());

                //Ahora vamos a crear una instancia del objeto factor, a través del gestor de factores
                Factor factorEv = gestorFactores.instanciarFactor(cod, nomFactor, competenciaAsociada, null, nrOrden);
                listaDeFactores.Add(factorEv);
            }
            terminarConexion();

            //Agregamos la lista de Factores para cada una de las competencias encontradas
            for (int i = 0; i < listaDeFactores.Count; i++)
            {
                List<Pregunta> preguntasList = recuperarPreguntas(listaDeFactores[i]);

                if (preguntasList != null)
                {
                    if (preguntasList.Count >= 5)
                        listaDeFactores[i].ListaPreguntas = preguntasList;
                    else
                        listaDeFactores[i].Codigo = "INSUFICIENTES PREG";
                }
                else
                    listaDeFactores[i].Codigo = "INSUFICIENTES PREG";
            }

            return listaDeFactores;
        }
 /*
  * La mision que justifica la existencia de los gestores es hacer de "interfaz" entre las ENTIDADES y el resto del sistema
  * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar
  */
 public Competencia instanciarCompetencia(string codigo, string nombre, string descripcion = null, List<Factor> factoresAsociados = null)
 {
     Competencia nuevaCompetencia = new Competencia(codigo, nombre, descripcion, factoresAsociados);
     return nuevaCompetencia;
 }