Aufgabe: Implementierung der Regellogik einzelner CharElemente
aus AlricgWiki, der freien Wissensdatenbank
Inhaltsverzeichnis |
Profil
Dringlichkeit: Hoch
Schwierigkeit: Mittel
Ziele: Korrekte implementierung der Regel für einzelen CharElemente wie Vorteile, Zauber, Sonderfertigkeiten usw. Dies wird durch die Implementierung des entsprechenden Prozessors und Unit-Test dazu erreicht.
Wird bearbeitet von:
Für Rückfragen: Vincent
Beschreibung
Es sollen die Klassen implementiert werden, die für die Verwaltung von CharElementen zuständig sind. D.h. was pasiert wenn ein Vorteil zu einem Char hinzugefügt wird, ob dies überhaupt möglich ist (ob nicht, weil Voraussetzungen nicht erfüllt sind) die berechung der Kosten usw.
Das hört sich reltiv komplex an, es ist jedoch nicht so schlimm. Alle Methoden sind bereits vorgegeben und es bereits Implementierung an denen man sich als Beispiel orientieren kann. Das schwierige ist nur das Konzept zu verinnerlichen, aber das ist (so hoffe ich) ausführlich in der Doku und dem JavaDoc beschrieben.
Zu der Aufgabe gehört außerdem das schreiben von JUnit-Tests. Diese Tests sind ebenso wichtig wie der Prozessor selbst.
Dabei zu beachten ist:
- Es werden nur die allgemeingültigen Regeln implementiert. Keine Sonderregel die ein spezielles Element betreffen (dafür ist der SonderregelAmdin zuständig). Wenn ihr unsicher sei, frag lieber bevor ihr euch unnötige Arbeit macht.
- Jeder Prozessor (bei dieser Aufgabe) wird von eimem "LinkProzessorFront" gekapselt. Dieser LinkProzessorFront übernimmt Standard-Aufgaben wie die das Aufrufen des "SonderregelAmdin", die Verwaltung des "VerbilligteFertigkeitenAdmin" und das aktualisieren der GUI-Elemente.
- I.d.r. muß nur bei der Kostenberechnung der SonderregelAmdin "von Hand" aufgerufen werden.
- Verbilligungen durch andere CharElemente werde über den "VerbilligteFertigkeitenAdmin" durchgeführt. Der Prozessor muß sich darum also nicht selbst kümmern und diesen id.r. nur bei der Kostenberechnung selbst aufrufen.
- Die Prüfung, ob CharElement hinzugefühgt/entfernd/verändert werden darf finden NUR in den entsprechenden "canXXX" Methoden statt. Nicht in den add/remove/update Methoden. Über die Einhaltung dieser Vorgaben kümmert sich die übergeordnete Schicht. Der Vorteil ist, das wie so die Prüfungen auch leicht "abschalten" können und so einen "freien-Modus" einbauen könnten.
- Ähnliches gilt für die Minimale/Maximale Stufe. Wenn eine überprüfung der Min/Max-Werte nötig ist (z.B. beim Hinzufügen von Modis), dann dürfen nur die "getMin"/"getMax" Methoden benutzt werden
- Alle Prozessoren (in dieser Aufgabe) werden von der Klase "BaseProzessorElementBox" abgeleitet. Diese Klasse stellt eine ElementBox bereit (zu erreichen über "this.elementBox"), in die alle Elemente des Prozessors gespeichert werden sollen.
Lösungsansatz
Beschreibung des Konzepts
Das Konzept ist weitgehend in der Dokumentation beschrieben, (siehe Das Konzept des Prozessors).
Bisherige Implementierung
Es geht um die Implementierung der Klassen die von der Klasse
- org.d3s.alricg.prozessor.generierung.ProzessorEigenschaften
- org.d3s.alricg.prozessor.generierung.ProzessorTalent
Hierzu existieren auch JUnit tests, diese sind aber nicht unbedingt als Vorbildhaft zu sehen...
