Eu sou novo em programação e estou tentando resolver meu primeiro grande problema e escrever meu primeiro grande programa. Procurei exemplos de código-fonte aberto para aprender, mas até agora encontrei o código em idiomas que não entendo completamente ou que fazem coisas relacionadas, mas ainda muito distantes, para eu realmente aprender. Estou tendo problemas para executar algumas etapas conceituais aqui.
Quero criar um software simples para criar, modificar e mais tarde representar pequenas moléculas orgânicas. Este é principalmente um exercício de aprendizado. Um usuário forneceria uma string SMILES ou escolheria um conjunto básico de moléculas iniciadoras e, então, poderia desenvolver essa molécula graficamente ou por meio de uma sintaxe de entrada de texto. No entanto, ainda não estou nesse ponto de complexidade. Não consigo nem entender completamente como criar classes / objetos para armazenar as moléculas. Portanto, minha pergunta é sucinta: como uso classes / objetos para construir moléculas, mantendo todos os níveis de informação e quais estruturas de dados devo usar como atributos para quais objetos? E, os objetos podem ser atributos para outros objetos?
Aqui está minha linha de pensamento até agora: eu estava pensando em ter uma classe "Molecule", depois uma classe / subclasse "Atom" e uma subclasse "Bond", e talvez uma subclasse "FunctionalGroup" também. Parece um bom lugar para começar, mas talvez eu esteja entendendo mal o POO e isso seja ruim. Mas então meu problema realmente fica confuso (para mim). Embora eu tenha todos esses conceitos / idéias / classes, não entendo completamente quais estruturas de dados são necessárias para representar a molécula. Uma lista de átomos seria uma boa coisa para ter. Essa lista poderia ser uma lista de objetos Atom? Eu também precisaria ter uma maneira de armazenar conectividade. Uma matriz 2D parece uma boa idéia, com a ordem das ligações como números inteiros nas posições da matriz.
Neste ponto, estou começando a ficar sobrecarregado com a tarefa. Tudo o que estou fazendo até agora faz sentido? Anexar um aspecto de exibição / desenho em cima disso pode significar que eu preciso reescrever / retrabalhar muitas dessas coisas, mas estou apenas tentando chegar a um ponto em que eu possa pelo menos armazenar moléculas com os dados relevantes e acessar esses dados para verificar / modificar. Eu estava pensando em fazer isso em Python, para que o código / classes fosse algo parecido com isto: http://pastebin.com/uUi1BMzr
Talvez essa seja realmente uma questão de programação para o StackOverflow, mas achei que era específico o suficiente para ir aqui. Qualquer assistência seria muito apreciada, mesmo que você apenas indique onde cometi erros conceituais. Desde já, obrigado.