Hallo!
ich sitze gerade an einer Projektarbeit, bei der es darum geht ein Klassendiagramm zu erstellen, mit dem man verschiedene Finanzmodelle abbilden kann.
Insgesamt habe ich mir das wie folgt vorgstellt: Ein Finanzmodell soll im groben aus Parametern und Cashflows bestehen.
Parameter sind beispielsweise : Einwohnerzahl der Stadt, Anzahl Neukunden je Einwohner oder Regristiergebühr. Damit sollen alle Werte abgebildet werden, die von vorne herein bekannt sind und sich nicht ändern.
Cashflows sind beispielsweise : Anzahl Neukunden oder Einnahmen durch Registierungen. Es sind also alle Werte, die sich aus anderen Parametern und Cashflows berechnen lassen.
Quelltext
1: 2: 3:
| Anzahl Neukunden(Cashflow) = Einwohnerzahl der Stadt(Parameter) * Anzahl Neukunden je Einwohner (Parameter)
Einnahmen durch Registierungen(Cashflow) = Anzahl Neukunden(Cashflow) * Regristiergebühr(Parameter) |
Ziel ist es also im Endeffekt später für ein beliebiges Finazmodell ein Objektdiagramm erstellen zu können, welches die Parameter und Cashflows, sowie deren Rechenzusammenhänge abbildet. Im Anhang hab ich mal mein Klassendiagramm dazu angehängt.
Zusätzlich ist noch anzumerken, dass ich das Finanzmodell nicht in C# durchrechnen lassen will sondern lediglig die Struktur abbilden will. Am Ende möchte ich mir daraus einen String generieren lassen, den ich in einem Simulationstool durchrechnen lasse.
String für das Simualtionstool sieht beispielweise wie folgt aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| " starttime = 0.0; stoptime = 9; dt= 1; (zeitschritt)
EINWOHNERZAHL= table ((0, 1000000), (1, 1000000), (2, 0.015),(3, 1000000),(4, 1000000),(5, 1000000),(6, 1000000),(7, 1000000),(8, 10000008),(9, 1000000),(10, 1000000)) (time);
ANZAHL_NEUKUNDEN_JE_EINWOHNER= table ((0, 0.0289977306739764), (1, 0.0191313675093869), (2, 0.015),(3, 0.0126219953862697),(4, 0.0110403288422675),(5, 0.0098963093307967),(6, 0.00902204913289638),(7, 0.00832741138096095),(8, 0.0077592278695768),(9, 0.00728390062245306),(10, 0.00728390062245306)) (time);
anzahl_neukunden=EINWOHNERZAHL*ANZAHL_NEUKUNDEN_JE_EINWOHNER; " |
Mein Problem: Rechenzusammenhänge zwischen Cashflows und Parametern in C# zu implementieren. (im Groben sind das eigentlich nur -,+,*,/,^) Klammern müsste man auch abbilden können, weil auch beispielsweise solche Rechenzusammenhänge vorkommen können: Cashflow = (Parameter1-Parameter2)^Parameter3 .
Mein erster Ansatz war, ne Liste <Parameter> und Liste <Cashflows> in der Klasse Cashflow zu erstellen, in die ich dann die Cashflows und Parameter adden kann, die zusammengerechnet den Cashflow ergeben. Aber da hab ich ja dann immer noch keine Rechenzusammenhänge abgebildet.
Mein zweiter Ansatz war dann beim adden der Cashflows in die Listen noch den Operator als String zu übergeben und dann direkt immer einen String in der Klasse Cashflow zu erweitern.
C#-Quelltext
1: 2: 3:
| Cashflow amount_new_customers = new Cashflow("new_customers"); amount_new_customers.addElement(amount_inhabitant,"*"); amount_new_customers.addElement(new_customers_per_inhabitant, ";"); |
Aber das ist ja irgendwie auch nicht Sinn der Sache (da könnt ich dann auch gleich die Rechenregeln als String erstellen. Am Ende sollen die ja aus den Objekten und deren Relationen generiert werden.)
Meine letzte Überlegung war, noch eine Klasse "Rechenoperator" zu erstellen, so dass man zb. zwei Cashflowobjekte über ein Rechenoperatorobjekt verknpüft. Aber da müsst ich ja am ende hunderte Objekte anlegen.
Hat jemand vielleicht einen kleinen Denkanstoß für mich?
Vielen Dank schonmal!
Grüße
Stephan
Moderiert von
Th69: Code- und C#-Tags hinzugefügtModeriert von
Th69: Topic aus C# & .NET Tutorials verschoben am So 21.07.2013 um 11:22