Sono nuovo nella programmazione e sto cercando di risolvere il mio primo grosso problema e scrivere il mio primo grande programma. Ho cercato esempi open source di codice da cui imparare, ma finora ho trovato solo codice in lingue che non capisco completamente o che fa cose correlate ma ancora troppo lontane da cui posso davvero imparare. Ho problemi a fare alcuni passi concettuali qui.
Voglio creare un semplice software per costruire, modificare e in seguito rappresentare piccole molecole organiche. Questo è principalmente un esercizio di apprendimento. Un utente darebbe una stringa SMILES o sceglierebbe da un set base di molecole di partenza, e quindi potrebbe basarsi su quella molecola graficamente o tramite una sintassi di input di testo. Tuttavia, non sono ancora a quel punto di complessità. Non riesco nemmeno a comprendere appieno come creare classi / oggetti per immagazzinare le molecole. Quindi, la mia domanda in modo succinto: come posso usare classi / oggetti per costruire molecole mantenendo tutti i livelli di informazioni e quali strutture di dati dovrei usare come attributi per quali oggetti? E gli oggetti possono essere attributi di altri oggetti?
Ecco il mio pensiero fino ad ora: stavo pensando di avere una classe "Molecule", quindi una classe / sottoclasse "Atom" e una sottoclasse "Bond", e forse anche una sottoclasse "FunctionalGroup". Sembra un buon punto di partenza, ma forse sto fraintendendo OOP e questo è male. Ma poi il mio problema diventa davvero confuso (per me). Anche se ho tutti questi concetti / idee / classi, non capisco completamente quali strutture dati sono necessarie per rappresentare la molecola. Un elenco di atomi sarebbe una buona cosa da avere. Quell'elenco potrebbe essere un elenco di oggetti Atom? Avrei anche bisogno di un modo per archiviare la connettività. Una matrice 2D sembra una buona idea, con l'ordine dei legami come numeri interi nelle posizioni della matrice.
A questo punto sto iniziando a essere sopraffatto dal compito. Tutto ciò che sto facendo finora ha senso? Allegare un aspetto di visualizzazione / disegno sopra questo può significare che ho bisogno di riscrivere / rielaborare molte di queste cose, ma sto solo cercando di arrivare a un punto in cui posso almeno memorizzare le molecole con i dati rilevanti e quindi accedere quei dati da controllare / modificare. Stavo pensando di farlo in Python, quindi il codice / le classi potrebbero forse assomigliare a questo: http://pastebin.com/uUi1BMzr
Forse questa è davvero una domanda di programmazione per StackOverflow, ma ho pensato che fosse abbastanza specifico per andare qui. Qualsiasi tipo di assistenza sarebbe molto apprezzato, anche se mi fai notare dove ho commesso degli errori concettuali. Grazie in anticipo.