package tutorial;

/**
 * Student erbt alle Attribute und Methoden von Person, die public
 * (oder protected sind, vorausgesetzt die beiden Klassen befinden sich
 * im selben package)
 *
 */
public class Student extends Person{
	
	private int matrikelnr;
	
	/**
	 * Mit super() wird der Konstruktor der Vaterklasse aufgerufen
	 */
	public Student() {
		super();
		this.matrikelnr = -1;
	}
	
	/**
	 * super() Call immer als erstes im Konstruktor
	 * Danach koennen weitere Zuweisungen etc. folgen
	 * @param initialName
	 * @param initNr
	 */
	public Student(String initialName, int initNr) {
		super(initialName);
		this.matrikelnr = initNr;
	}
	
	/** 
	 * Ueberlagerte Methode
	 */
	public void print() {
		System.out.println("Student: " + getName() + ", " + getMatrikelnr());
	}

	public boolean equals(Student other) {
		return this.matrikelnr == other.getMatrikelnr();
	}

	public int getMatrikelnr() {
		return matrikelnr;
	}

	public void setMatrikelnr(int matrikelnr) {
		this.matrikelnr = matrikelnr;
	}
	
	public static void main(String[] args) {
		if (args.length == 2) { // Lese Kommandozeile
			String name = args[0];
			int matrikel = -1;
			
			try { // Matrikelnummer ist vielleicht keine Zahl
				matrikel = Integer.parseInt(args[1]);
			} catch (NumberFormatException nfe) {
				System.err.println("No Number: " + args[1]);
				System.exit(-1);
			}
			
			//Erzeugen des Student Objekts
			Student myStudent = new Student(name, matrikel);
			myStudent.print();
		} 
		else { // Zu wenig Argumente fuehren zum Beenden
			System.err.println("Wrong number of arguments");
			System.exit(-1);
		}
	}
}

