Я новичок в программировании и пытаюсь решить свою первую большую проблему и написать свою первую большую программу. Я искал примеры кода с открытым исходным кодом для изучения, но до сих пор нашел код только на тех языках, которые я не до конца понимаю, или это делает связанные, но слишком далекие вещи для меня, чтобы по-настоящему учиться. У меня проблемы с принятием некоторых концептуальных шагов здесь.
Я хочу создать простое программное обеспечение для создания, изменения и представления небольших органических молекул. Это в основном учебное упражнение. Пользователь может дать строку SMILES или выбрать из базового набора начальных молекул, а затем может построить эту молекулу либо графически, либо с помощью синтаксиса ввода текста. Тем не менее, я даже не в этой точке сложности еще. Я даже не могу полностью понять, как сделать классы / объекты для хранения молекул. Итак, мой вопрос вкратце: как я могу использовать классы / объекты для построения молекул, сохраняя при этом все уровни информации, и какие структуры данных я должен использовать в качестве атрибутов для каких объектов? И могут ли объекты быть атрибутами других объектов?
Вот мой ход мыслей: я думал, что у меня будет класс «Молекула», затем класс / подкласс «Атом» и подкласс «Бонд», а также, возможно, подкласс «Функциональная группа». Кажется, это хорошее место для начала, но, возможно, я неправильно понимаю ООП, и это плохо. Но тогда моя проблема действительно становится запутанной (для меня). Несмотря на то, что у меня есть все эти концепции / идеи / классы, я не полностью понимаю, какие структуры данных необходимы для представления молекулы. Было бы неплохо иметь список атомов. Может ли этот список быть списком объектов Atom? Мне также нужно было бы иметь способ хранить подключения. 2D-матрица кажется хорошей идеей, с порядком связи в виде целых чисел в позициях матрицы.
В этот момент я начинаю перегружаться задачей. Все, что я делаю до сих пор, имеет смысл? Добавление аспекта отображения / рисования поверх этого может означать, что мне нужно переписать / переделать многие из этих вещей, но я просто пытаюсь добраться до точки, где я могу по крайней мере сохранить молекулы с соответствующими данными, а затем получить доступ эти данные для проверки / изменения. Я думал об этом в Python, поэтому код / классы могли бы выглядеть примерно так: http://pastebin.com/uUi1BMzr
Возможно, это действительно вопросы программирования для StackOverflow, но я подумал, что это достаточно конкретно, чтобы перейти сюда. Любая помощь будет принята с благодарностью, даже если вы просто укажете, где я допустил грубые ошибки. Заранее спасибо.