/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Escuela;

import java.util.ArrayList;

/**
 * Clase que modela un alumno el cual es desendiente de persona.
 * Adicionalmente se agraga matricula y una lista de materias llamado
 * kardex
 * @author felix
 */

public class Alumno extends Persona{
    private String Matricula;
    private ArrayList <Curso> Kardex;
    
    /**
     * Constructor para alumno
     * @param unNombre Nombre del alumno
     * @param unPaterno Apellido Paterno
     * @param unMaterno Apellido Materno
     * @param unDomicilio Domicilio Completo
     * @param unaFecha Fecha de Nacimiento
     * @param unaClave Matricula con la que se registra al alumno
     */
    
    public Alumno(String unNombre, String unPaterno, String unMaterno,
            String unDomicilio, Fecha unaFecha, String unaClave) {
        super(unNombre, unPaterno, unMaterno, unDomicilio, unaFecha);
        Matricula = unaClave;
        Kardex = new ArrayList <Curso> ();     
    }
    
    /**
     * Metodo responsable de agragarle a un alumno un curso cualquiera
     * @param unCurso Recibe el curso que se desea agragar
     */
    
    public void agrega_Curso(Curso unCurso) {
        Kardex.add(unCurso);
    }
    
    /**
     * Metodo resposnsable de dar una lista de los curso que un alumno tiene
     * registrados
     * @return Regresa una cadena de texto con la lista de los cursos numerados 
     */
    
    public String cursos() {
        String aux = "";
        int k=1;
        
        for(Curso a: Kardex) {
           aux += "\t"+ k + ".- " +  a.informacion() + "\n";   
           k++;
        }
        
        return aux;
    }
    
    /**
     * Metodo para determinar le nombre de un alumno
     * @return Regresa la matricula y el nombre 
     */
    
    @Override   
    public String informacion() {
        String aux;
        
        aux  = String.format("%-8s %-32s \n", Matricula, super.informacion()); 
        
        return aux;
    }
    
    /**
     * Verifica si un alumno cursa unaMateria
     * @param unaMateria Materia a verificar
     * @return falso o verdadero si es que el alumno cursa la materia
     */
    
    public boolean cursa(String unaMateria) {

        for(Curso i: Kardex) {
            if(unaMateria.equals(i.getDescripcion())) return true;
        }
        
        return false;
    }
}
