Tôi mới lập trình và tôi đang cố gắng giải quyết vấn đề lớn đầu tiên của mình và viết chương trình lớn đầu tiên của mình. Tôi đã tìm kiếm các ví dụ mã nguồn mở để học hỏi, nhưng cho đến nay chỉ tìm thấy mã bằng các ngôn ngữ mà tôi không hiểu đầy đủ hoặc điều đó có liên quan nhưng vẫn còn quá xa để tôi thực sự học được. Tôi gặp khó khăn khi thực hiện một số bước khái niệm ở đây.
Tôi muốn tạo ra một phần mềm đơn giản để xây dựng, sửa đổi và sau đó đại diện cho các phân tử hữu cơ nhỏ. Đây chủ yếu là một bài tập học tập. Người dùng sẽ cung cấp một chuỗi SMILES hoặc chọn từ một tập hợp các phân tử khởi động cơ bản và sau đó có thể xây dựng trên phân tử đó bằng đồ họa hoặc thông qua cú pháp nhập văn bản. Tuy nhiên, tôi thậm chí không ở điểm phức tạp đó. Tôi thậm chí không thể hiểu đầy đủ cách tạo các lớp / đối tượng để lưu trữ các phân tử. Vì vậy, câu hỏi của tôi ngắn gọn: Làm thế nào để tôi sử dụng các lớp / đối tượng để xây dựng các phân tử trong khi vẫn giữ được tất cả các mức thông tin và tôi nên sử dụng cấu trúc dữ liệu nào làm thuộc tính cho đối tượng nào? Và, các đối tượng có thể là thuộc tính cho các đối tượng khác?
Đây là dòng suy nghĩ của tôi cho đến nay: Tôi đã nghĩ sẽ có một lớp "Phân tử", sau đó là lớp / lớp "Nguyên tử" và lớp con "Liên kết" và có thể cả lớp con "Nhóm chức năng". Đó có vẻ là một nơi tốt để bắt đầu, nhưng có lẽ tôi đang hiểu nhầm OOP và điều này thật tệ. Nhưng sau đó, vấn đề của tôi thực sự trở nên khó hiểu (đối với tôi). Mặc dù tôi có tất cả các khái niệm / ý tưởng / lớp học này, tôi không hoàn toàn nắm bắt được cơ sở dữ liệu nào là cần thiết để đại diện cho phân tử. Một danh sách các nguyên tử sẽ là một điều tốt để có. Danh sách đó có thể là một danh sách các đối tượng nguyên tử không? Tôi cũng sẽ cần phải có một cách để lưu trữ kết nối. Một ma trận 2D có vẻ như là một ý tưởng tốt, với thứ tự liên kết là số nguyên trong các vị trí ma trận.
Tại thời điểm này, tôi bắt đầu bị choáng ngợp với nhiệm vụ. Là tất cả mọi thứ tôi đang làm cho đến nay có ý nghĩa? Đính kèm một khía cạnh hiển thị / vẽ trên đầu trang này có thể có nghĩa là tôi cần viết lại / làm lại rất nhiều thứ này, nhưng tôi chỉ cố gắng đến một điểm mà ít nhất tôi có thể lưu trữ các phân tử với dữ liệu liên quan và sau đó truy cập dữ liệu đó để kiểm tra / sửa đổi. Tôi đã nghĩ đến việc làm điều này trong Python, vì vậy mã / lớp có thể trông giống như thế này: http://pastebin.com/uUi1BMzr
Có lẽ đây thực sự là một câu hỏi lập trình cho StackOverflow, nhưng tôi nghĩ nó đã đủ cụ thể để đi đến đây. Bất kỳ trợ giúp sẽ được đánh giá rất cao, ngay cả khi bạn chỉ ra nơi tôi đã thực hiện các sai lầm khái niệm. Cảm ơn trước.