import java.util.ArrayList;
import java.io.*;

/** Esta clase se creará cuando el usuario ejecute "Nuevo usuario" o
 * "Cargar Usuario". En el primer caso se preguntará los datos por pantalla
 * y en el segundo se leerán los datos de disco.
 */
public class Usuario implements Serializable
{
    private String nombre;
    private int carrera;
    private ArrayList <String> ramos_ok = new ArrayList < String > ();
    private static final long serialVersionUID=10;
         
    /** Constructor base del Objeto Usuario.
     */
    public Usuario()
    {
    }

    /** Constructor del Objeto Usuario.
     * @param nombre Es el nombre o apodo del usuario.
     * @param carrera Es el código de la carrera que está estudiando el usuario.
     */
    public Usuario(String nombre, int carrera)
    {
        this.nombre = nombre;
        this.carrera = carrera;
    }

    /** Método para obtener el codigo de la carrera que rinde el usuario.
     * @return el codigo de la carrera.
     */
    public int getCarrera()
    {
        return carrera;
    }

    /** Método para obtener el nombre del usuario.
     * @return el nombre.
     */
    public String getNombre()
    {
        return nombre;
    }

    /** Método para obtener la lista con los ramos pasados. 
     * @return La lista con los ramos pasados.
     */ 
    public ArrayList < String > getRamosPasados()
    {
        return ramos_ok;
    }

    /** Agrega el ramo a la lista de ramos pasados.
     * @param ramo Es el ramo que hay que agregar.
     */
    public void setRamoPasado(String ramo)
    {
        ramos_ok.add(ramo);
    }

    /** Elimina el ramo de la lista de ramos pasados.
     * @param ramo Es el ramo que aún está pendiente.
     */
    public void setRamoPendiente(String ramo)
    {
        ramos_ok.remove(ramo);
    }

    /** Actualiza el valor del coigo de carrera.
     * @param carrera Es el nuevo codigo de carrera.
     */
    public void setCarrera(int carrera)
    {
        this.carrera = carrera;
    }

    /** Actualiza el nombre.
     * @param nombre Es el nuevo nombre.
     */
    public void setNombre(String nombre)
    {
        this.nombre = nombre;
    }

    /** Método para saber si está bien la clase... se puede borrar para su
     * funcionamiento en el programa completo.
     */
    public void printRamos()
    {
        for (int i=0; i<ramos_ok.size(); i++)
	    System.out.println(ramos_ok.get(i));
    }
}
