Objektorientiert Textdateien auslesen und bestimmte Stellen ersetzen
-
Hallo Leute,
ich hoffe, Ihr könnt mir etwas helfen.
Bzgl. objektorientierter Programmierung / Software Engineering muss ich ein Programm erstellen, das textbasierte Dateien (Vorgabe: Text, HTML und Latex; durch den OO-Ansatz beliebig erweiterbar) verarbeitet.
Diese Textdateien enthalten an beliebigen Stellen durch Tags gekennzeichnete chemische Formeln oder chemische Verbindungsnamen, z.B. <chem>H2O</chem> oder auch <chem>Natriumsulfat</chem>.
Das Programm soll diese gekennzeichneten Stellen finden, jeweils übersetzen (Formel -> Name, Name -> Formel) und die ursprüngliche Datei vollständig übersetzt abspeichern.
Da ich nicht gerade der Profi bin, was OO-Programmierung angeht, und einfach nicht weiter komme, frage ich mal hier an

Meine Modell-Vorstellung sieht bisher so aus: [Klasse]
[ProviderConfigurator]
- bekommt Eingabeparameter (Quelldatei) übergeben.
- anhand der Dateiendung erkennt er den Dateityp.
- ruft den jeweils passenden "InputProvider" auf, z.B. [TextProvider][{abstract} ProviderInterface]
- dient als Schnittstelle zu den jeweiligen InputProvidern[TextProvider]
- erbt von ProviderInterface
- öffnet die Textdatei
- sucht in der Datei nach gekennzeichneten Stellen, z.B. <chem>H2O</chem>
- liefert "H2O" als String an [ChemicalString][HtmlProvider] // genauso
[LatexProvider] // genauso[ChemicalString]
- ist der bisher unklassifizierte String
- wird vom [Classifier] klassifiziert, d.h. untersucht, ob es eine Formel (H2Ó) ist oder ein Verbindungsname (Wasser)[Classifier]
- klassifiziert den String
- liefert einen klassifizierten String an [ClassifiedString][ClassifiedString]
- nun ist klar, ob es sich um eine Formel oder einen Verbindungsnamen handelt.
- wird an den [Translator] übergeben[Translator]
- benutzt die Klasse [Periodensystem]
- übersetzt den String
- liefert den übersetzten String an [TranslatedString][TranslatedString]
- wird wieder zurück an den InputProvider übergeben und in die Datei geschrieben.Soweit meine Vorstellung von einem brauchbaren Modell (bin aber auch für andere Modelle offen). Allerdings komm ich einfach nicht weiter, was benötigte Attribute und Methoden angeht und wie die einzelnen Klassen sich gegenseitig aufrufen. Welche Klasse was wissen muss und was sie genau übergeben bekommt etc.

-
Zum Konzept: ich würde's mir überlegen, ob für ChemicalString, ClassifiedString und TranslatedString Klassen angelegt werden müssen, da sie unterschiedliche Zustände von Objekten (Strings) und nicht übergeordnete Klassen sind. Es ist wahrscheinlich besser, sie als Attribute zu implementieren.
Zur Umsetzung des Konzepts: du wirst dich in die Thematik einlesen müssen, denn du willst ja auch alles verstehen, was und wie es gemacht wird
Es ist besser, du versuchst es selbst - und der Weg führt über das Selbststudium.