4
制作分子编辑器/可视化器:面向对象的程序,数据结构和分子
我是编程新手,正在尝试解决我的第一个大问题并编写我的第一个大程序。我一直在寻找可以学习的开放源代码示例,但是到目前为止,我只发现了我无法完全理解的语言代码,或者确实找到了相关但仍然相距甚远的语言来学习。我在这里采取一些概念上的步骤时遇到了麻烦。 我想制作一个简单的软件来构建,修改并稍后代表有机小分子。这主要是一种学习练习。用户可以给出一个SMILES字符串或从一组基本的起始分子中进行选择,然后可以以图形方式或通过文本输入语法在该分子上进行构建。但是,我还没有达到那种复杂程度。我什至无法完全理解如何创建类/对象来存储分子。因此,我的问题简明扼要:如何在保留所有信息级别的同时使用类/对象构建分子,以及应使用哪些数据结构作为哪些对象的属性?而且,对象可以作为其他对象的属性吗? 到目前为止,这是我的思路:我正在考虑创建一个“分子”类,然后是一个“原子”类/子类和一个“邦德”子类,也许还有一个“ FunctionalGroup”子类。这似乎是一个不错的起点,但也许我误会了OOP,这很不好。但是后来我的问题真的变得令人困惑(对我来说)。即使我拥有所有这些概念/想法/类,我仍未完全掌握表示分子所需的数据结构。原子列表将是一件好事。该列表可以是Atom对象的列表吗?我还需要一种存储连接性的方法。2D矩阵似乎是个好主意,在矩阵位置,键序为整数。 在这一点上,我开始不知所措。我到目前为止所做的一切都有意义吗?在此之上附加显示/绘图方面可能意味着我需要重写/重做许多这些事情,但是我只是想达到一个这样的程度,即我至少可以将分子与相关数据一起存储,然后访问该数据进行检查/修改。我正在考虑在Python中执行此操作,因此代码/类可能看起来像这样:http : //pastebin.com/uUi1BMzr 也许这确实是StackOverflow的编程问题,但是我认为它足够具体了。即使您仅指出我在概念上犯了错误的地方,也将不胜感激任何帮助。提前致谢。