Я новачок у програмуванні і намагаюся вирішити свою першу велику проблему і написати свою першу велику програму. Я шукав приклади коду з відкритим кодом, з якого слід вчитися, але поки що знайшов код лише на мовах, яких я не повністю розумію, або які стосуються, але все ще занадто віддалених речей, для яких я справді вчусь. У мене тут виникають труднощі зробити деякі концептуальні кроки.
Я хочу зробити просту програму для створення, зміни та пізніше представлення невеликих органічних молекул. Це в основному навчальна вправа. Користувач може надати рядок SMILES або вибрати основний набір молекул стартера, а потім може побудувати цю молекулу або графічно, або через синтаксис введення тексту. Однак я ще навіть не в цій точці складності. Я навіть не можу повністю зрозуміти, як зробити класи / об’єкти для зберігання молекул. Отже, моє запитання коротко: Як я можу використовувати класи / об’єкти для побудови молекул, зберігаючи всі рівні інформації, і які структури даних я повинен використовувати як атрибути, до яких об'єктів? І чи можуть об'єкти бути атрибутами до інших об’єктів?
Ось мій порядок думок поки що: я думав мати клас "Молекула", потім клас / підклас "Атом" і підклас "Бонд", а може бути і підклас "Функціональна група". Це здається гарним місцем для початку, але, можливо, я неправильно розумію ООП, і це погано. Але тоді моя проблема дійсно стає заплутаною (для мене). Хоча я маю всі ці поняття / ідеї / класи, я не повністю розумію, які структури даних потрібні для представлення молекули. Список атомів було б добре мати. Чи може цей список бути списком об’єктів Atom? Мені б також знадобився спосіб зберігати зв’язок. 2D матриця здається гарною ідеєю, з порядком зв’язків як цілими числами в матричних положеннях.
У цей момент я починаю перевантажуватись завданням. Чи все, що я роблю поки що, має сенс? Додавання аспекту відображення / малювання поверх цього може означати, що мені потрібно переписати / переробити багато цих речей, але я просто намагаюся дійти до того моменту, коли я можу принаймні зберігати молекули з відповідними даними, а потім отримати доступ ці дані для перевірки / зміни. Я думав зробити це в Python, тому код / класи, можливо, будуть виглядати приблизно так: http://pastebin.com/uUi1BMzr
Можливо, це справді питання програмування для StackOverflow, але я подумав, що тут достатньо конкретних. Будь-яка допомога буде дуже вдячна, навіть якщо ви просто зазначите, де я зробив концептуальні промахи. Заздалегідь спасибі.