# Berechnungsmodule ?



## Cheefrocker (16. Jun 2005)

Hallo zusammen! 

Ich habe ein kleines Projekt erhalten was ich in Java umsetzen muss.  Würde aber gern wissen wie ich das am besten umsetzen kann. 


Das Programm soll in Reiterkarten unterteilt werden. Es gibt jeweils 9 Reiterkarten die Berechnungen nach verschiedenen Kriterien und Eingaben machen(also 9 Berechnungsmodule) . Die Eingaben(Textfelder) werden in die jeweilige Reiterkarte eingegeben. Die Eingabefelder haben verschiedene Plausibilitätsprüfungen! Wenn die Eingabe korrekt ist wird berechnet! Der User jedoch kann z.b eine Reiterkarte ausfüllen! Wenn er nach einer Zeit merkt das er eine Fehlerhafte Eingabe gemacht hat, springt er wieder in die Reiterkarte(ins Eingabefeld) ändert den Wert und verlässt das Eingabefeld. Jetzt soll dann direkt die Berechnunga aktualisiert werden. 

Das Programm soll so programmiert werden, das wenn eine Anpassung eines Berechnungsmoduls nötig ist diese möglichst schnell gemacht werden ohne jetzt den kompletten Quellcode durcheinander zu bringen.(vielleicht aufteilen der Berechnungsmodule????wenn ja wie am besten).

Die Plausibilitäten wiederholen Sich in manchen Berechnungsmodulen. Eine Ändernung soll auch nacher möglich werden(z.b Plausibiliät Jahresarbeitsverdienst von einer Summe soll angehoben werden).

Meine Frage ist wie teile ich am besten die Klassen und Methoden auf! Wo kann ich Code sparen? Und wie setze ich das am Besten um??? 

Wäre wirklich für jede Hilfe dankbar!  :wink:  Hoffe Ihr könnt mir weiterhelfen da ich sonst verzweifle...


----------



## KISS (16. Jun 2005)

also ganz grob gesagt

-> ein model bauen das die eingaben verifiziert
-> eine abstractes berechnungsmodul (interface) das vom model notifiziert wird
-> ein result model das von den berechungsmodulen notifiziert wird


----------



## Cheefrocker (16. Jun 2005)

ich versteh das leider nicht so ganz! Wie meinstee verifiziert oder notifiziert?? Sorry für meine Dummheit.


----------



## KISS (16. Jun 2005)

aeh, und du bist sicher das du nicht ersmal ein buch ueber java oder eine beliebige andere oo sprache lesen willst?
indt das ein komerzielles projekt?


----------



## mic_checker (16. Jun 2005)

> Die Eingabefelder haben verschiedene Plausibilitätsprüfungen! Wenn die Eingabe korrekt ist wird berechnet!



Er bezieht sich dabei wohl auf dieses Zitat wenn ich das einfach mal unterstellen darf


----------



## Cheefrocker (16. Jun 2005)

Ja das programm soll mal irgentwann benutzt werden  

Verstehen tu ich das schon aber ich hab das nicht so mit den Fachbegriffen!!

Ich weis nicht ob mir ein buch über Java was bringt. 

Also ich habe mir ein paar Gedanken zur Umsetzung dazu gemacht:

Ich tue sämtliche Plausibilitätsprüfungen in eine Klasse. 

Und für jedes Berechnungsmodul erstelle ich eine Methode die was berechnet und eine Methode die dann die Berechnung aktualisiert! 

Was meint ihr dazu?? Es geht mir eher wie ich das am besten umsetzte! Ich verlang ja kein kompletten Code! Wär für jede verständliche Hilfe dankbar! Thx im Voraus...


----------



## Cheefrocker (16. Jun 2005)

ich glaube das Programm ist in Java nicht umsetzbar


----------



## mic_checker (16. Jun 2005)

Wie kommst drauf ?


----------



## Cheefrocker (16. Jun 2005)

@mic_checker da mir folgendes nicht viel sagt....oder kööntest du mir eventuell weiterhelfen?

also ganz grob gesagt 

-> ein model bauen das die eingaben verifiziert 
-> eine abstractes berechnungsmodul (interface) das vom model notifiziert wird 
-> ein result model das von den berechungsmodulen notifiziert wird...


----------



## KISS (16. Jun 2005)

das ist in java sehr wohl umzusetzen, implementierungsaufwand fuer ein framework in das sich verschiedene "berechnungsmodule" setzen lassen wuerde ich auf etwa 2 tage (ohne tests)" schaetzen.


----------



## Cheefrocker (17. Jun 2005)

@Kiss das kann jeder behaupten

Das ist genauso als wenn ich fragen würde wie entsteht Wasser.

Dann würdest du sagen ja hol paar Atome, lass sie miteinander reagieren und dann klappt das schon.

Aber wirklich hilfreich war das nicht!


----------



## mic_checker (17. Jun 2005)

wie genau stellst du dir die anpassung der berechnungsmodule vor?

um das ganze flexibel, erweiterbar etc. zu halten solltest du dir mal Entwurfsmuster / Design patterns angucken. Dazu ist u.a. ein Beitrag in der FAQ.


----------



## KISS (17. Jun 2005)

@Cheefrocker
schicke mir ne spec, zahl meinen stundenlohn und du hast es am montag nachmittag auf dem tisch.



> wie genau stellst du dir die anpassung der berechnungsmodule vor?


naja, was mir so in etwa vorschwebt ist:
- die einzelnen views werden in xml (XUL) gebaut
- die input/validierungsmodel lassen sich generisch ueber xml configurieren
- fuer die berechnungsmodule gibt es ein interface, laden wuerde ich sie dynamich ueber den namen
- um nicht jedesmal ein neues modul hinterlegen zu muessen, wuerde ich ein scriptable (beanshell) modul schon einbauen
- berechnungsmodule sollten in ketten angeordnet werden koennen
- outputmodels werden ebendso wie die validierungsmodels generisch


----------



## Cheefrocker (17. Jun 2005)

Thx @kiss und @mic_checker

Vielleicht habe ich mich falsch ausgedrückt was die Berechnungsmodule angeht. Es soll nix in xml gebaut werden.
Sondern wie folgt:
Unter Jbuilder erstelle ich eine Anwendung. Diese ist in Reiterkarten aufgebaut(JTabbed_Pane) mit 9 Reiterkarten(Panels). Auf jeder Reiterkarte gibts halte Textfelder in denen ich bestimmte Beträge(auch Datumswerte eingebe). Beim verlassen eines Textfeldes werden bestimmte Plausibilitäten abgefragt wenn diese korrekt sind kann auf ein Button(WEiter) geklickt werden. Dieser errechnet dann für das Berechnungsmodul wo ich mich befinde(Sei es z.b Berechnungsmodul1 oder Berechnungsmodul4) angenommen einen Wert. 
Wenn der Benutzer nacher merkt das er was falsches eingegeben hat springt er wieder in diese Reiterkarte und  ändert nur das Textfeld wo er den fehler gesehen hat und verlässt direkt die Reiterkarte. Die Berechnung müsste jetzt auch gepasst werden, da sie sonst nicht mit dem eingegeben werden übereinstimmt. Es kann immer nur 1 Berechnungsmodul angezeigt werden(das wird vorher ausgewählt welches der User benötigt). 

Das war eingetlich die Aufgabe: 

jetzt würde ich gern das am besten Umsetzten. Nur fehlt mir noch das Know-How wie ich das am besten in Klassen aufteile(wie viele bzw welche genau am besten), damit ich wenn nacher eine anpassung eines Moduls erforderlich wird oder eine Plausibilität geändert werden muss.

Wie würdet ihr das am umsetzen?

Ich würd sagen das für die Plausibilitäten eine Klasse gemacht wird.
Dann eine Klasse wo alle Berechnungsmodule stehen.

und eine Klasse die für alle Berechnungsmodule die eine Refresh_Methode enthält und dann aufgeruft wird wenn der benutzer was in einem Feld geändert hat.


Was meint ihr dazu???


----------



## Cheefrocker (17. Jun 2005)

mic_checker hat gesagt.:
			
		

> wie genau stellst du dir die anpassung der berechnungsmodule vor?
> 
> um das ganze flexibel, erweiterbar etc. zu halten solltest du dir mal Entwurfsmuster / Design patterns angucken. Dazu ist u.a. ein Beitrag in der FAQ.




die Anpassung ist eigentlich ganz simpel gemeint. Es kann ja z.b sein das nach ein paar Jahren jemand kommt und sagt das der Jahresarbeitsverdienst  angehoben werden soll(und dies im Programm jetzt geändert werden muss). Da ich z.b in der Plausibilitätsprüfung einen Höchsten Jahresarbeitsverdienst habe, wollte ich das so umsetzten das ich das eventuell nur an einer Stelle was ändern muss und nciht den ganzen Quellcode nacher auf den Kopf stellen muss.

Die Anpassung kann jetzt in der Plausibilitätsprüfung oder auch in dem Berechnungsmodul sein.

Hoffe es ist ein bissel verständlich  :wink:


----------



## Cheefrocker (29. Jun 2005)

ist mein Problem eigentlich mit Hilfe von MVC lösbar???


----------



## Bleiglanz (29. Jun 2005)

Nein, mit MVC ist überhaupt kein Problem lösbar

MVC ist eine lose Sammlung sog. Patterns, die man manchmal anwenden kann oder auch nicht

Jedes Problem, das du mit MVC lösen kannst, kannst du auch ohne MVC lösen, ist nur ein "Architektur-Ansatz"


----------



## jagdfalke (16. Aug 2005)

Ich versteh auch nicht ganz wo dein Problem ist. 
Ich nehm mal an, dass du 9 Reiterkarten haben willst und nur einen einzigen Button, richtig? Also ich denk mal, dass Reiter beim Wechsel ein ActionEvent abfeuern. Das fängst du auf und änderst dann so das ActionCommand des Buttons. Auf diese Weise weiß der Button welche Reiterkarte aktiv ist und kann so mit Case-Select oder auch If-Abfrage das richtige "Berechnungsmodul" aufrufen.
Für die Berechnungen legst du halt ne Klasse an und fasst Berechnungen, die immerwieder gemacht werden müssen in Methoden zusammen um Code zu sparen. Da gibst bestimmt meherer Möglichkeiten, aber ich weiß nicht, was genau du Berechnen musst. Irgendwas aufrufen, Rückgabewert/array speichern, was neues aufrufen und Rückgabewert/array übergeben und diesen Rückgabewert/array wieder speichern usw usw.

mfg
jagdfalke


----------

