/** einfaches Modell eines Annuitaetendarlehens
 *
 * @author Jan Johannsen
 * @version 0.1
 */
public class Darlehen
{

    private double zinssatz ; 
    private double tilgung ; 
    private double restSchuld ; 
    private double monatsZins ;
    private double monatsRate ; 

    /** erzeugt ein neues Darlehen mit gegebenen Konditionen
     *
     * @param betrag Hoehe des Darlehensbetrages 
     * @param zinssatz der Zinssatz in Prozent  
     * @param tilgung die Tilgungsrate in Prozent  
     */
    public Darlehen(double betrag, double zinssatz, double tilgung) 
    {
	this.zinssatz = zinssatz ; 
	this.tilgung = tilgung ; 
	restSchuld = betrag ; 
	monatsZins = ( Math.pow( 1 + zinssatz/100 , 1.0/12 ) -1 ) * 100  ; 
	monatsRate = Math.round( betrag * ( monatsZins + tilgung/12 ) ) / 100 ;
    } 

    /** @return die Restschuld 
      */
    public double getRestSchuld() 
    {
	return restSchuld ; 
    } 

    /** @return die Monatsrate
     */
    public double getMonatsRate()
    {
	return monatsRate ; 
    }

    /** schaltet einen Monat weiter */ 
    public void einMonat() 
    {
	double getilgt = monatsRate - restSchuld*monatsZins/100 ; 
	restSchuld =  Math.round( 100*( restSchuld - getilgt ) ) / 100 ;  
    } 

    /** schaltet ein Jahr weiter */ 
    public void einJahr() 
    {
	for ( int monat = 1 ; monat <= 12 && restSchuld > 0  ; monat++ ) 
	    this.einMonat() ; 
    }

}
