Fragen und Antworten zu Blatt 2

Buchungstext, etc. - was ist das?

Frage:

Koennte mir jemand erklaeren was ein "Buchungstext", "den Nennwert der Buchung" und "den Wert, mit dem die Buchung mit dem Konto verrechnet wird" ist?

Antwort:

Ein Konto wäre z.B. die Kasse (mit dem Bargeld). Hier könnten Sie z.B. eine "Privatentnahme" (Buchungstext) haben mit dem Nennwert 100 EUR. Dieser Nennwert würde hier (da Entnahme) vom Konto abgezogen werden, also Kontowert - 100 EUR ergibt neuen Kontowert. Im Gegensatz dazu könnten Sie z.B. einen Artikel in Ihrem (fiktiven) Laden verkaufen und daher eine "Einnahme aus Verkauf" (Buchungstext) als Buchung für Ihre Kasse haben. Der Nennwert könnte mit 100 EUR (beispielsweise) identisch sein, aber in diesem Fall würden die 100 EUR auf den vorherigen Wert des Kontos addiert werden.

Buchungs-Objekte mit Werten füllen

Frage:

Wie soll das Konto gefüllt werden, wenn man im Interface nur die Ausgabe der Buchungsinformationen implementiert hat?

Antwort:

Am einfachsten übergibt man die Buchungsinformationen als Konstruktor-Parameter beim Erzeugen neuer Buchungs-Objekte, Außerdem hat man natürlich immer die Möglichkeit, zusätzlich zu den im Interface definierten Methoden weitere Methoden zu implementieren. Diese können dann z.B. dazu verwendet werden, um die Buchungsinformationen dem Buchungsobjekt zu übergeben.

Verschiedene Objekte für Ein- und Auszahlung

Frage:

Wofür braucht man zwei verschiedene Klassen für Ein-und Auszahlung, ist ja de facto das Gleiche?

Antwort:

Hm, also ich halte Ein- und Auszahlung semantisch für verschiedene Dinge ;-). Technisch gesehen ist der Unterschied tatsächlich nur ein Faktor -1. Meiner Meinung nach sollte man versuchen, bei der Modellierung einer Anwendung die Semantik in der Objektstruktur deutlich zu machen. Um nun doppelten Code in der Anwendung zu vermeiden, kann/sollte man die gemeinsame Funktionalität (also alles bis auf den Faktor -1) in eine abstrakte Oberklasse auslagern. Dadurch kann man beide Ziele, die Verdeutlichung der Semantik und die nur einmalige Implementierung von Funktionalitäten, verwirklichen.