import java.util.ArrayList; /** Esta clase tendrá todos los datos necesarios de los ramos de la carrera. * Debe crearse una lista con todos los ramos de la carrera para * interactuar con estos. * Los métodos están ordenados por alfabeto. */ public class Ramo implements Comparable { private String sigla; private String nombre; private int creditos; private int semestre; private int sem_dictados; private int peso; private boolean pasado; private ArrayList < String > prereq = new ArrayList < String > (); /** Se construye el objeto ramo con sus parámetros relevantes. * @param sigla Es la sigla del Ramo con mayúsculas. Ej "FIS-110" * @param nombre Es el nombre de la asignatura. Por mi convención * la primera letra de palabra con mayúscula y el resto con minúscula. * Ej "Física General I". En caso de haber artículos como "a", "de" o algún * otro van con minúscula. * @param creditos Son los créditos que tiene la asignatura. * @param semestre Es el semestre en que el alumno debería tomar este ramo * según la Malla. * @param prereq Es la lista de pre-requisitos que tiene el ramo. * @param sem_dictados Es el semestre en que se dicta; 1 para sólo el primer * semestre, 2 para sólo el segundo y 3 para ambos. */ public Ramo(String sigla, String nombre, int creditos, int semestre, ArrayList < String > prereq, int sem_dictados) { this.sigla = new String(sigla); this.nombre = new String(nombre); this.creditos = creditos; this.semestre = semestre; this.sem_dictados = sem_dictados; peso = 0; pasado = false; for (int i=0; i ramos_ok, int sem_actual) { if ( (sem_dictados != 3) && (sem_actual != sem_dictados) ) return false; else for(int i = 0; i < prereq.size(); i++) if( !ramos_ok.contains(prereq.get(i)) ) return false; return true; } /** Compara ramos por el semestre que se debieran tomar. * @param otherRamo Es el otro Ramo con el que se compara. * @return 0 si ambos ramos se dan el mismo semestre, * -1 si este ramo se debiera tomar antes que el otro y * 1 si fuera después. */ public int compareTo(Ramo otherRamo) { Ramo other = otherRamo; if (semestre > other.getSemester()) return -1; if (semestre < other.getSemester()) return 1; return 0; } /** Método para obtener la cantidad de créditos que tiene este ramo. * @return creditos. */ public int getCredits() { return creditos; } /** Método para obtener el nombre del ramo. * @return nombre. */ public String getNombre() { return nombre; } /** Método para obtener la sigla del ramo. * @return sigla. */ public String getSigla() { return sigla; } /** Método para obtener los de prerequisitos que tiene este ramo. * @return arreglo de prerrequisitos. */ public ArrayList getPre() { return prereq; } /** Método para saber la importancia o el peso de un ramo hablando en * términos de querer terminar lo antes posible la universidad. * @return La importancia de un ramo, en una cantidad entra ("int") */ public int getWeight() { return peso; } /** Método para saber en qué semestre debiera tomarse este ramo. * @return El número de semestre en el que el alumno debería tomar este * ramo según la malla. */ public int getSemester() { return semestre; } /** Método para obtener el semestre dictado. * @return semestre en el que se dicta el ramo, * returns 3 si se dicta en ambos. */ public int getSemDictados() { return sem_dictados; } /** Método para saber si un ramo fue aprobado. * @return estado del ramo. */ public boolean isPasado() { return pasado; } /** Método para setear el estado de un ramo. * @param b estado. */ public void setRamoPasado(boolean b) { pasado = b; } /** Método para ir ajustando la importancia del ramo. * @param p Es la cantidad de peso que le estoy sumando. */ public void setWeight(int p) { peso += p; } /** Método para saber si está bien la clase... se puede borrar para su * funcionamiento en el programa completo. */ public String toString() { String str; str = nombre + "\n"; str += sigla + "\n"; str += creditos + " créditos\n"; for (int i=0; i