Soy nuevo en programación y estoy tratando de resolver mi primer gran problema y escribir mi primer gran programa. He buscado ejemplos de código abierto de código para aprender, pero hasta ahora solo he encontrado código en idiomas que no entiendo completamente o que hace cosas relacionadas pero aún muy distantes para que realmente pueda aprender. Tengo problemas para dar algunos pasos conceptuales aquí.
Quiero hacer un software simple para construir, modificar y luego representar pequeñas moléculas orgánicas. Esto es principalmente un ejercicio de aprendizaje. Un usuario daría una cadena SMILES o elegiría entre un conjunto básico de moléculas iniciadoras, y luego podría construir sobre esa molécula ya sea gráficamente o mediante una sintaxis de entrada de texto. Sin embargo, aún no estoy en ese punto de complejidad. Ni siquiera puedo comprender completamente cómo hacer clases / objetos para almacenar las moléculas. Entonces, mi pregunta es sucinta: ¿Cómo uso las clases / objetos para construir moléculas mientras se retienen todos los niveles de información, y qué estructuras de datos debo usar como atributos para cada objeto? Y, ¿pueden los objetos ser atributos de otros objetos?
Aquí está mi línea de pensamiento hasta ahora: estaba pensando en tener una clase "Molécula", luego una clase / subclase "Atom" y una subclase "Bond", y quizás también una subclase "FunctionalGroup". Parece un buen lugar para comenzar, pero tal vez no entiendo la POO y esto es malo. Pero entonces mi problema realmente se vuelve confuso (para mí). Aunque tengo todos estos conceptos / ideas / clases, no entiendo completamente qué estructuras de datos se necesitan para representar la molécula. Sería bueno tener una lista de átomos. ¿Podría esa lista ser una lista de objetos Atom? También necesitaría tener una forma de almacenar la conectividad. Una matriz 2D parece una buena idea, con el orden de los enlaces como enteros en las posiciones de la matriz.
En este punto, estoy empezando a sentirme abrumado con la tarea. ¿Tiene sentido todo lo que estoy haciendo hasta ahora? Adjuntar un aspecto de visualización / dibujo sobre esto puede significar que necesito reescribir / reelaborar muchas de estas cosas, pero solo estoy tratando de llegar a un punto en el que al menos pueda almacenar moléculas con los datos relevantes y luego acceder esos datos para verificar / modificar. Estaba pensando en hacer esto en Python, por lo que el código / clases quizás se vería así: http://pastebin.com/uUi1BMzr
Quizás esta es realmente una pregunta de programación para StackOverflow, pero pensé que era lo suficientemente específica como para ir aquí. Cualquier ayuda sería muy apreciada, incluso si usted solo señala dónde he cometido errores conceptuales. Gracias por adelantado.