Je suis nouveau dans la programmation et j'essaie de résoudre mon premier gros problème et d'écrire mon premier gros programme. J'ai cherché des exemples de code open source pour apprendre, mais jusqu'à présent, je n'ai trouvé que du code dans des langues que je ne comprends pas complètement ou qui font des choses liées mais encore trop éloignées pour que j'apprenne vraiment. J'ai du mal à prendre certaines mesures conceptuelles ici.
Je veux créer un simple logiciel pour construire, modifier et représenter plus tard de petites molécules organiques. Il s'agit principalement d'un exercice d'apprentissage. Un utilisateur donnerait une chaîne SMILES ou choisirait parmi un ensemble de base de molécules de démarrage, puis pourrait s'appuyer sur cette molécule soit graphiquement soit via une syntaxe de saisie de texte. Cependant, je ne suis même pas encore à ce point de complexité. Je n'arrive même pas à comprendre comment créer des classes / objets pour stocker les molécules. Donc, ma question succinctement: comment utiliser des classes / objets pour construire des molécules tout en conservant tous les niveaux d'informations, et quelles structures de données dois-je utiliser comme attributs pour quels objets? Et, les objets peuvent-ils être des attributs d'autres objets?
Voici ce que j'ai pensé jusqu'à présent: je pensais avoir une classe "Molécule", puis une classe / sous-classe "Atom" et une sous-classe "Bond", et peut-être aussi une sous-classe "FunctionalGroup". Cela semble être un bon point de départ, mais peut-être que je ne comprends pas bien la POO et c'est mauvais. Mais alors mon problème devient vraiment déroutant (pour moi). Même si j'ai tous ces concepts / idées / classes, je ne saisis pas complètement quelles infrastructures de données sont nécessaires pour représenter la molécule. Une liste d'atomes serait une bonne chose à avoir. Cette liste pourrait-elle être une liste d'objets Atom? J'aurais également besoin d'un moyen de stocker la connectivité. Une matrice 2D semble être une bonne idée, avec l'ordre des liaisons sous forme d'entiers dans les positions de la matrice.
À ce stade, je commence à être submergé par la tâche. Est-ce que tout ce que je fais jusqu'à présent a du sens? Ajouter un aspect d'affichage / de dessin en plus de cela peut signifier que je dois réécrire / retravailler un grand nombre de ces choses, mais j'essaie simplement d'arriver à un point où je peux au moins stocker des molécules avec les données pertinentes, puis accéder ces données à vérifier / modifier. Je pensais faire cela en Python, donc le code / les classes ressemblerait peut-être à ceci: http://pastebin.com/uUi1BMzr
C'est peut-être vraiment une question de programmation pour StackOverflow, mais je pensais que c'était assez spécifique pour aller ici. Toute aide serait grandement appréciée, même si vous précisez simplement où j'ai fait des bévues conceptuelles. Merci d'avance.