Ich bin neu in der Programmierung und ich versuche mein erstes großes Problem zu lösen und mein erstes großes Programm zu schreiben. Ich habe nach Open-Source-Beispielen für Code gesucht, von denen ich lernen kann, aber bisher nur Code in Sprachen gefunden, die ich nicht vollständig verstehe oder die verwandte, aber immer noch zu weit entfernte Dinge tun, von denen ich wirklich lernen kann. Ich habe hier einige konzeptionelle Probleme.
Ich möchte mit einer einfachen Software kleine organische Moleküle erstellen, modifizieren und später darstellen. Dies ist hauptsächlich eine Lernübung. Ein Benutzer würde eine SMILES-Zeichenfolge eingeben oder aus einem Basissatz von Startermolekülen auswählen und könnte dann entweder grafisch oder über eine Texteingabesyntax auf diesem Molekül aufbauen. Ich bin jedoch noch nicht einmal an diesem Punkt der Komplexität. Ich kann nicht einmal vollständig verstehen, wie man Klassen / Objekte zum Speichern der Moleküle herstellt. Meine Frage ist also kurz und bündig: Wie verwende ich Klassen / Objekte zum Aufbau von Molekülen, während alle Informationsebenen erhalten bleiben, und welche Datenstrukturen sollten als Attribute für welche Objekte verwendet werden? Und können Objekte Attribute für andere Objekte sein?
Hier ist mein bisheriger Gedankengang: Ich habe mir überlegt, eine "Molecule" -Klasse, dann eine "Atom" -Klasse / Unterklasse und eine "Bond" -Klasse und vielleicht auch eine "FunctionalGroup" -Klasse zu haben. Das scheint ein guter Anfang zu sein, aber vielleicht verstehe ich OOP falsch und das ist schlecht. Aber dann wird mein Problem (für mich) wirklich verwirrend. Obwohl ich alle diese Konzepte / Ideen / Klassen habe, verstehe ich nicht genau, welche Datenstrukturen zur Darstellung des Moleküls erforderlich sind. Eine Atomliste wäre eine gute Sache. Könnte diese Liste eine Liste von Atom-Objekten sein? Ich müsste auch eine Möglichkeit haben, Konnektivität zu speichern. Eine 2D-Matrix scheint eine gute Idee zu sein, bei der die Bindungsreihenfolge als ganze Zahlen in den Matrixpositionen angegeben wird.
An diesem Punkt fange ich an, mit der Aufgabe überwältigt zu werden. Ist alles, was ich bisher mache, sinnvoll? Das Anbringen eines Anzeige- / Zeichnungsaspekts darüber kann bedeuten, dass ich viele dieser Dinge neu schreiben / überarbeiten muss, aber ich versuche nur, an einen Punkt zu gelangen, an dem ich zumindest Moleküle mit den relevanten Daten speichern und dann darauf zugreifen kann diese Daten zu überprüfen / ändern. Ich habe darüber nachgedacht, dies in Python zu tun, sodass der Code / die Klassen möglicherweise so aussehen würden: http://pastebin.com/uUi1BMzr
Vielleicht ist dies wirklich eine Programmierfrage für StackOverflow, aber ich dachte, es wäre spezifisch genug, um hierher zu kommen. Jede Unterstützung wäre sehr dankbar, auch wenn Sie nur darauf hinweisen, wo ich konzeptionelle Fehler gemacht habe. Danke im Voraus.