/******************************************************************** * buchtrans.idl * * Zweck...: Experiment Buchhaltung * * Rudolf Weber Informatik- und Netzwerkverein Ravensburg e.V * ********************************************************************/ #include"buch_base.idl" module buch { struct Halbsatz { Kontonr konto; Betrag betrag; sh_t sh; }; typedef sequenceHalbsatz_seq; interface transaction { readonly attribute Tid tid; readonly attribute string text; readonly attribute Halbsatz_seq hs; }; interface faelligkeit : transaction { readonly attribute date faellig; boolean bezahlt(out buch::Tid btid); }; exception schonbezahlt { Tid durch; }; interface haltung { Tid buche(in string text,in Halbsatz_seq hs) raises(notexistent, sollungleichhaben, databaseerr); Tid bezahlung(in string text,in Halbsatz_seq hs,in Tid beztid) raises(notexistent, schonbezahlt, sollungleichhaben, databaseerr); Tid faellig(in string text,in Halbsatz_seq hs,in date faelligdat) raises(notexistent, sollungleichhaben, databaseerr); Object tid2obj(in Tid tid); }; };
Eine Transaktion entspricht also genau einem Beleg. Verschiedene Arten von
Belegen sind folglich Untertypen dieser transaktion.
Eine Transaktion enthält den Buchungstext text und eine Sequenz von Buchungshalbsätzen aus Konto, ob soll/haben und den Betrag.
Die Transaktionstid tid wird beim Buchen ignoriert. Diese ist für Abfragen vorgesehen, z.B. wenn man alle Transaktionen (mit Gegenkonten) eines Kontos
aufgelistet werden sollten.
Die faelligkeit ist eine Transaktion mit einem Fälligkeitsdatum. In der realen Anwendung wird man hier noch Skonto und dergleichen haben wollen.
Dabei könnte die abstract-Typen ausprobiert werden, die sowohl zu Interfaces wie auch zu Values abgeleitet werden können.
Dies verallgemeinert führt zum Object-Web, wo jedes jedes Unternehmen seine Dienste durch solche Schnittstellen anbietet.
Durch den Cos-Traderdienst wäre dann ein Markt modelliert ....