나는 프로그래밍에 익숙하지 않고 첫 번째 큰 문제를 해결하고 첫 번째 큰 프로그램을 작성하려고합니다. 나는 배울 코드의 오픈 소스 예제를 찾았지만, 지금까지 완전히 이해하지 못하거나 실제로 배우기에는 관련이 있지만 너무 멀리 떨어져있는 언어로 된 코드 만 발견했습니다. 여기서 개념적 단계를 수행하는 데 문제가 있습니다.
작은 유기 분자를 구축, 수정 및 나중에 나타내는 간단한 소프트웨어를 만들고 싶습니다. 이것은 주로 학습 연습입니다. 사용자는 SMILES 문자열을 제공하거나 기본 스타터 분자 세트에서 선택한 다음 그래픽으로 또는 텍스트 입력 구문을 통해 해당 분자를 빌드 할 수 있습니다. 그러나 나는 아직 복잡한 시점조차 아닙니다. 분자를 저장하기 위해 클래스 / 객체를 만드는 방법을 완전히 이해할 수조차 없습니다. 그래서 내 질문은 간결하게 : 클래스 / 객체를 사용하여 모든 수준의 정보를 유지하면서 분자를 만드는 방법과 어떤 객체의 속성으로 어떤 데이터 구조를 사용해야합니까? 그리고 객체가 다른 객체의 속성 일 수 있습니까?
여기까지의 나의 생각의 기차가있다 : 나는 "분자"클래스, "Atom"클래스 / 서브 클래스 및 "Bond"서브 클래스, 그리고 "FunctionalGroup"서브 클래스를 가질 생각이었다. 시작하기에 좋은 곳인 것 같지만 OOP를 오해하고 있으며 이것이 나쁩니다. 그러나 내 문제는 정말로 혼란스러워집니다. 비록 이러한 개념 / 아이디어 / 클래스가 모두 있지만 분자를 나타내는 데 필요한 데이터 구조를 완전히 파악하지는 못합니다. 원자 목록은 좋은 것입니다. 이 목록이 Atom 객체의 목록 일 수 있습니까? 또한 연결을 저장할 방법이 필요합니다. 2D 매트릭스는 매트릭스 위치에서 정수로 본드 순서를 갖는 좋은 생각처럼 보입니다.
이 시점에서 나는 그 일에 압도 당하기 시작했다. 지금까지하고있는 모든 것이 의미가 있습니까? 이 위에 디스플레이 / 그리기 측면을 첨부하면 이러한 많은 것들을 다시 작성 / 재 작업해야한다는 것을 의미하지만 적어도 관련 데이터가있는 분자를 저장 한 다음 액세스 할 수있는 시점에 도달하려고합니다. 해당 데이터를 확인 / 수정합니다. 파이썬에서 이것을하려고 생각했기 때문에 코드 / 클래스는 다음과 같이 보일 것입니다 : http://pastebin.com/uUi1BMzr
아마도 이것은 실제로 StackOverflow에 대한 프로그래밍 질문이지만, 여기에 갈 정도로 구체적이라고 생각했습니다. 내가 개념적 실수를 저지른 곳을 지적하더라도 도움을 주시면 감사하겠습니다. 미리 감사드립니다.