Advanced Programming Techniques Autor: Datum: Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt 27.1.2009 Römische Zahlen Für die Aufgabe gilt wie üblich: 1. Überlegen Sie, welche Java-Strukturen für die Aufgabe angemessen sind (Klassen und / oder Schnittstellen, Neuimplementierung und / oder Nutzung / Erweiterung von Klassen im JDK, Signaturen, …) 2. Implementieren Sie Ihre Lösung. Verwenden Sie ausschließlich englische Namen. 3. Dokumentieren Sie Ihre Lösung mit JavaDoc in englischer Sprache 4. Entwickeln Sie Testfälle mit JUnit 5. Testen Sie Ihre Lösung 6. Stellen Sie Ihre Lösung im WIKI dar, falls sie sich prinzipiell von einer bereits dargestellten Lösung unterscheidet 1 RomanNumber Entwickeln Sie eine Klasse RomanNumber, welche die Umrechnung von Ganzzahlen zwischen der römischen und arabischen Schreibweise erlaubt. Beziehen Sie sich vorerst auf die einfache Umrechnung. Setzen Sie optional auch die Subtraktionsregel um. Die folgende Darstellung ist Wikipedia entnommen. Seite 1 Advanced Programming Techniques 1.1 Darstellung Die in einer römischen Zahl verwendeten Zeichen haben, unabhängig von ihrer Position, einen festen Wert. Dabei gibt es die Zehnerpotenzen als Basiswerte (die „Einer“) und die fünffachen Hilfsbasiswerte (die „Fünfer“). Die heute verwendeten römischen Ziffern 1.2 Zeichen I V X L C D M Wert 1 5 10 50 100 500 1000 Einfache Umrechnung Zur Umrechnung in eine römische Zahl ohne die weiter unten beschriebene Subtraktionsregel genügt es, mit den großen Ziffern beginnend, jede so häufig wie möglich von der umzurechnenden Zahl abzuziehen und die zugehörigen römischen Ziffern der Reihe nach zu notieren, dabei werden der Übersichtlichkeit wegen die Ziffern automatisch der Größe nach sortiert: 1984 = 1 × 1000 1 × 500 4 × 100 1 × 50 3 × 10 4 × 1 M D CCCC L XXX IIII = MDCCCCLXXXIIII Um eine solche römische Zahl wieder zurückzurechnen, braucht man einfach nur die Werte der einzelnen Zahlenzeichen zu addieren bzw. zu subtrahieren. Um zu vermeiden, dass ein Zeichen häufiger als dreimal hintereinander auftritt, muss man sich der folgenden Subtraktionsregel bedienen. 1.2.1 Subtraktionsregel Die Subtraktionsregel ist eine heute übliche, verkürzende Schreibweise, mit der es vermieden werden soll, vier gleiche Zahlzeichen in direkter Aufeinanderfolge zu schreiben. Die Subtraktionsregel in ihrer Normalform besagt, dass die Zahlzeichen I, X und C einem ihrer beiden jeweils nächstgrößeren Zahlzeichen vorangestellt werden dürfen und dann in ihrem Zahlwert von dessen Wert abzuziehen sind: IV = 4 (statt IIII) IX = 9 (statt VIIII) Seite 2 Advanced Programming Techniques XL = 40 (statt XXXX) XC = 90 (statt LXXXX) CD = 400 (statt CCCC) CM = 900 (statt DCCCC) Bei Einhaltung dieser Regel ist es nicht zulässig, das abzuziehende Zeichen auch seinem dritt- oder viertgrößeren Zeichen voranzustellen, also z.B. IL = 49 (richtig XLIX), IC = 99 (richtig XCIX), XM = 990 (richtig CMXC) zu schreiben, wie es trotzdem aus Unkenntnis der genauen Regel oder der Kürze halber manchmal geschieht. Ebenso ist es bei Einhaltung der Regel nicht zulässig, mehr als ein einziges Zeichen subtraktiv zu verwenden (z. B. IIX für 8), wie es im Mittelalter gelegentlich zu belegen ist, oder die durch Fünferbündelung entstandenen Zeichen V, L oder D subtraktiv zu verwenden (z. B. VC = 95 statt richtig XCV). Beispiel für subtraktive Schreibung einer Jahreszahl: 1949 = 1000 + (1000−100) + (50−10) + (10−1) M CM XL IX = MCMXLIX Seite 3