In Vorträgen über C# höre ich immer wieder das Wort "Bussinesslogic". Was ist das? Ist das eine neuartige Logik wie etwa Quantenlogik?
Allgemein ist in den heutigen Programmierungsstilen die Business- oder Geschäftslogik die Managementebene des Programms. Ganz grundlegend gesehen gibt es die drei Ebenen der Systemgestaltung Darstellung, Geschäftslogik und Datenbasis.
Die Geschäftslogik operiert zwischen Darstellung (das was der Bediener sieht und durch Bedienung auslösen kann) und der Datenbasis. Meist unterliegt einem System eine Datenbank, aus der die Geschäftslogik permanent, abhängig von den verschiedenen Zuständen, Daten lädt und in sie schreibt. Um die Daten aber auch während des Programmablaufs zu halten, schreibt die Geschäftslogik diese auch in die Objekte der Datenbasis. Um ein Objekt mit Daten (aus der Datenbank) zu erzeugen, brauche ich ja entsprechende Klassen, die logisch zur Ebene der Datenbasis gehören.
Eine Beziehung innerhalb der Geschäftslogik könnte anhand des klassischen Büchereibeispiels so aussehen dass es eine Klasse "AusleiheManager", eine Klasse "InventarManager" und eine Klasse "MitgliederManager" gibt. Wenn der Bediener einen Kunden bedient der ein am Counter ein Buch leihen möchte, löst er den Prozess aus, der in der Geschäftslogik über den AusleiheManager gesteuert wird. Der AusleiheManager muss demnach dann über die Anfrage an den InventarManager das Buch holen und über die Anfrage an den MitgliederManager den Kunden holen. Dadurch entsteht dann ein Datensatz, den der AusleiheManager in die Datenbasisklasse "AusleiheZeile" schreibt und dieses Zeilenobjekt ebenso in die Datenbank persistiert.
Was diese Managerklassen in der Geschäftslogik dann gravierend von den Klassen der beiden anderen Ebenen unterscheidet, wäre anhand des Beispiels, dass in der Datenbank Regeln zur Ausleihe festgeschrieben sind, die sich der AusleiheManager bei Bedarf oder bei Programmstart oder nach Änderung zieht. Das könnte etwa sein, dass pro Mitglied maximal 3 Bücher geliehen werden können. So etwas gehört logisch gesehen nicht in die Datenbasis und schon gar nicht in die Darstellung.