snlilli
12-01-2007, 00:54
Oh man .. ich hoffe ich halte euch nicht zu sehr auf trapp, aber hier ist mal wieder etwas wo ich absolut nicht weiterkomme ;(
Ich habe 2 Klassen geschrieben. Girokonto und Kontobewegung.
import java.util.*;
/**
* Ein einfaches Girokonto für ganzzahlige Beträge.
* Es kann abgehoben und eingezahlt werden. Ein Girokonto kann
* nur bis zu einem Dispo-Limit überzogen werden.
* Dieses Dispo-Limit kann verändert werden. Als Dispo-Limit
* sind nur positive Werte erlaubt.
*
* @author Martti Jeenicke, Axel Schmolitzky
* @version 2005-12-09
*/
public class Girokonto
{
// der ganzzahlige Saldo
private int _saldo;
// das Dispolimit
private int _dispoLimit;
/**
* Ein neues Konto hat einen Anfangssaldo und ein Dispo-Limit
* von Null.
*/
public Girokonto()
{
_saldo = 0;
_dispoLimit = 0;
}
/**
* Liefert das Dispo-Limit dieses Kontos.
*/
public int gibDispoLimit()
{
return _dispoLimit;
}
/**
* Setze das Dispo-Limit auf den gegebenen Wert.
* @param dispoLimit ein positiver Wert oder Null als
* neues Dispo-Limit
*/
public void setzeDispoLimit(int dispoLimit)
{
if (dispoLimit >= 0)
{
_dispoLimit = dispoLimit;
}
else
{
System.out.println("Fehler: Negatives Limit!");
}
}
/**
* Zahlt einen Betrag auf das Konto ein.
*
* @param betrag
* der einzuzahlende Betrag
*/
public void zahleEin(int betrag)
{
if (betrag >= 0)
{
_saldo = _saldo + betrag;
} else
{
System.out
.println("Fehler: Es kann kein negativer Betrag eingezahlt werden");
}
}
/**
* Hebt einen Betrag vom Konto ab.
*
* @param betrag
* der abzuhebende Betrag
*/
public void hebeAb(int betrag)
{
if (betrag >= 0)
{
if ((_saldo - betrag) < -_dispoLimit)
{
System.out.println("Auszahlung nicht möglich: Dispo-Limit würde überschritten.");
}
else
{
_saldo = _saldo - betrag;
}
}
else
{
System.out.println("Fehler: keine negativen Beträge!");
}
}
/**
* Liefert den Saldo des Kontos zurück.
*
* @return der Saldo des Kontos
*/
public int gibSaldo()
{
return _saldo;
}
}
und
import java.util.Calendar;
/**
* Diese Klasse modelliert Kontobewegungen
* (Ein Exemplar modelliert also eine Kontobewegung).
*
* @author Fredrik Winkler
* @version 14.12.2006
*/
public class Kontobewegung implements Comparable<Kontobewegung>
{
private final int _betrag;
private final Calendar _datum;
private final String _string;
/**
* @param betrag der Betrag der Kontobewegung
*/
public Kontobewegung(int betrag)
{
_betrag = betrag;
_datum = Calendar.getInstance();
StringBuffer sb = new StringBuffer(100);
sb.append(format(gibTag()));
sb.append(".");
sb.append(format(gibMonat()));
sb.append(".");
sb.append(gibJahr());
sb.append(" ");
sb.append(format(gibStunde()));
sb.append(":");
sb.append(format(gibMinute()));
sb.append(":");
sb.append(format(gibSekunde()));
sb.append(" ");
sb.append(_betrag);
_string = sb.toString();
}
/**
* Liefere den Betrag dieser Kontobewegung
* @return der Betrag dieser Kontobewegung
*/
public int gibBetrag()
{
return _betrag;
}
/**
* Liefere den Tag dieser Kontobewegung
* @return der Tag dieser Kontobewegung
*/
public int gibTag()
{
return _datum.get(Calendar.DAY_OF_MONTH);
}
/**
* Liefere den Monat dieser Kontobewegung
* @return der Monat dieser Kontobewegung
*/
public int gibMonat()
{
return _datum.get(Calendar.MONTH) + 1;
}
/**
* Liefere das Jahr dieser Kontobewegung
* @return das Jahr dieser Kontobewegung
*/
public int gibJahr()
{
return _datum.get(Calendar.YEAR);
}
/**
* Liefere die Stunde dieser Kontobewegung
* @return die Stunde dieser Kontobewegung
*/
public int gibStunde()
{
return _datum.get(Calendar.HOUR_OF_DAY);
}
/**
* Liefere die Minute dieser Kontobewegung
* @return die Minute dieser Kontobewegung
*/
public int gibMinute()
{
return _datum.get(Calendar.MINUTE);
}
/**
* Liefere die Sekunde dieser Kontobewegung
* @return die Sekunde dieser Kontobewegung
*/
public int gibSekunde()
{
return _datum.get(Calendar.SECOND);
}
private String format(int x)
{
return Integer.toString(100+x).substring(1,3);
}
/**
* Liefere eine druckbare Darstellung dieser Kontobewegung
* @return eine druckbare Darstellung dieser Kontobewegung
*/
public String toString()
{
return _string;
}
/**
* Vergleiche diese Kontobewegung mit einer anderen.
* @param kb die andere Kontobewegung
* @return -1, falls diese zeitlich vor der anderen liegt,
* +1, falls diese zeitlich nach der anderen liegt,
* ansonsten 0 (falls sie gleichzeitig sind)
*/
public int compareTo(Kontobewegung kb)
{
return _datum.compareTo(kb._datum);
}
}
Nun möchte ich, dass die Klasse Girokonto die Kontobewegungen intern in einer Liste verwaltet.
Anschließend würde ich gerne eine Methode druckeKontobewegungen implementieren, welche alle Kontobewegungen auf der Konsole ausgibt.
Sowas wie druckeKontobewegungen.
Aber ich hab nicht so wirklich Ahnung wie ich das machen soll.
ein Tipp war, dass ich hierfür die exemplare der Klasse Kontobewegung benutzen soll. Aber wie stelle ich das an.
Hat eventuell jemand einen Rat für mich ?
Ich habe 2 Klassen geschrieben. Girokonto und Kontobewegung.
import java.util.*;
/**
* Ein einfaches Girokonto für ganzzahlige Beträge.
* Es kann abgehoben und eingezahlt werden. Ein Girokonto kann
* nur bis zu einem Dispo-Limit überzogen werden.
* Dieses Dispo-Limit kann verändert werden. Als Dispo-Limit
* sind nur positive Werte erlaubt.
*
* @author Martti Jeenicke, Axel Schmolitzky
* @version 2005-12-09
*/
public class Girokonto
{
// der ganzzahlige Saldo
private int _saldo;
// das Dispolimit
private int _dispoLimit;
/**
* Ein neues Konto hat einen Anfangssaldo und ein Dispo-Limit
* von Null.
*/
public Girokonto()
{
_saldo = 0;
_dispoLimit = 0;
}
/**
* Liefert das Dispo-Limit dieses Kontos.
*/
public int gibDispoLimit()
{
return _dispoLimit;
}
/**
* Setze das Dispo-Limit auf den gegebenen Wert.
* @param dispoLimit ein positiver Wert oder Null als
* neues Dispo-Limit
*/
public void setzeDispoLimit(int dispoLimit)
{
if (dispoLimit >= 0)
{
_dispoLimit = dispoLimit;
}
else
{
System.out.println("Fehler: Negatives Limit!");
}
}
/**
* Zahlt einen Betrag auf das Konto ein.
*
* @param betrag
* der einzuzahlende Betrag
*/
public void zahleEin(int betrag)
{
if (betrag >= 0)
{
_saldo = _saldo + betrag;
} else
{
System.out
.println("Fehler: Es kann kein negativer Betrag eingezahlt werden");
}
}
/**
* Hebt einen Betrag vom Konto ab.
*
* @param betrag
* der abzuhebende Betrag
*/
public void hebeAb(int betrag)
{
if (betrag >= 0)
{
if ((_saldo - betrag) < -_dispoLimit)
{
System.out.println("Auszahlung nicht möglich: Dispo-Limit würde überschritten.");
}
else
{
_saldo = _saldo - betrag;
}
}
else
{
System.out.println("Fehler: keine negativen Beträge!");
}
}
/**
* Liefert den Saldo des Kontos zurück.
*
* @return der Saldo des Kontos
*/
public int gibSaldo()
{
return _saldo;
}
}
und
import java.util.Calendar;
/**
* Diese Klasse modelliert Kontobewegungen
* (Ein Exemplar modelliert also eine Kontobewegung).
*
* @author Fredrik Winkler
* @version 14.12.2006
*/
public class Kontobewegung implements Comparable<Kontobewegung>
{
private final int _betrag;
private final Calendar _datum;
private final String _string;
/**
* @param betrag der Betrag der Kontobewegung
*/
public Kontobewegung(int betrag)
{
_betrag = betrag;
_datum = Calendar.getInstance();
StringBuffer sb = new StringBuffer(100);
sb.append(format(gibTag()));
sb.append(".");
sb.append(format(gibMonat()));
sb.append(".");
sb.append(gibJahr());
sb.append(" ");
sb.append(format(gibStunde()));
sb.append(":");
sb.append(format(gibMinute()));
sb.append(":");
sb.append(format(gibSekunde()));
sb.append(" ");
sb.append(_betrag);
_string = sb.toString();
}
/**
* Liefere den Betrag dieser Kontobewegung
* @return der Betrag dieser Kontobewegung
*/
public int gibBetrag()
{
return _betrag;
}
/**
* Liefere den Tag dieser Kontobewegung
* @return der Tag dieser Kontobewegung
*/
public int gibTag()
{
return _datum.get(Calendar.DAY_OF_MONTH);
}
/**
* Liefere den Monat dieser Kontobewegung
* @return der Monat dieser Kontobewegung
*/
public int gibMonat()
{
return _datum.get(Calendar.MONTH) + 1;
}
/**
* Liefere das Jahr dieser Kontobewegung
* @return das Jahr dieser Kontobewegung
*/
public int gibJahr()
{
return _datum.get(Calendar.YEAR);
}
/**
* Liefere die Stunde dieser Kontobewegung
* @return die Stunde dieser Kontobewegung
*/
public int gibStunde()
{
return _datum.get(Calendar.HOUR_OF_DAY);
}
/**
* Liefere die Minute dieser Kontobewegung
* @return die Minute dieser Kontobewegung
*/
public int gibMinute()
{
return _datum.get(Calendar.MINUTE);
}
/**
* Liefere die Sekunde dieser Kontobewegung
* @return die Sekunde dieser Kontobewegung
*/
public int gibSekunde()
{
return _datum.get(Calendar.SECOND);
}
private String format(int x)
{
return Integer.toString(100+x).substring(1,3);
}
/**
* Liefere eine druckbare Darstellung dieser Kontobewegung
* @return eine druckbare Darstellung dieser Kontobewegung
*/
public String toString()
{
return _string;
}
/**
* Vergleiche diese Kontobewegung mit einer anderen.
* @param kb die andere Kontobewegung
* @return -1, falls diese zeitlich vor der anderen liegt,
* +1, falls diese zeitlich nach der anderen liegt,
* ansonsten 0 (falls sie gleichzeitig sind)
*/
public int compareTo(Kontobewegung kb)
{
return _datum.compareTo(kb._datum);
}
}
Nun möchte ich, dass die Klasse Girokonto die Kontobewegungen intern in einer Liste verwaltet.
Anschließend würde ich gerne eine Methode druckeKontobewegungen implementieren, welche alle Kontobewegungen auf der Konsole ausgibt.
Sowas wie druckeKontobewegungen.
Aber ich hab nicht so wirklich Ahnung wie ich das machen soll.
ein Tipp war, dass ich hierfür die exemplare der Klasse Kontobewegung benutzen soll. Aber wie stelle ich das an.
Hat eventuell jemand einen Rat für mich ?