hôm nay, tôi muốn hỏi bạn một câu hỏi về khả năng của C ++ để nhận ra một kiến trúc phần mềm cụ thể.
Tất nhiên, tôi đã sử dụng tìm kiếm nhưng không tìm thấy bất kỳ câu trả lời liên kết trực tiếp nào.
Về cơ bản, mục tiêu của tôi là xây dựng một chương trình cho phép người dùng mô hình hóa và mô phỏng các hệ thống vật lý được cấu tạo tùy ý, ví dụ như một chiếc xe lái. Tôi giả sử có một thư viện các mô hình vật lý (các hàm trong các lớp). Mỗi chức năng có thể có một số đầu vào và trả về một số đầu ra tùy thuộc vào mô tả vật lý cơ bản, ví dụ mô hình động cơ đốt, mô hình kéo khí động học, mô hình bánh xe, v.v.
Bây giờ, ý tưởng là cung cấp cho người dùng một khung cho phép anh ta soạn bất kỳ chức năng nào theo nhu cầu của mình, tức là để ánh xạ mọi hành vi vật lý. Khung nên cung cấp các chức năng để kết nối đầu ra và đầu vào của các chức năng khác nhau. Do đó, khung cung cấp một lớp container. Tôi gọi nó là THÀNH PHẦN, có thể chứa một hoặc nhiều đối tượng mô hình (FUNCTION). Các thùng chứa này cũng có thể chứa các thành phần khác (xem mẫu tổng hợp) cũng như các kết nối (CONNECTOR) giữa các tham số chức năng. Ngoài ra, lớp thành phần cung cấp một số chức năng số chung như bộ giải toán, v.v.
Thành phần của các chức năng nên được thực hiện trong thời gian chạy. Trong trường hợp đầu tiên, người dùng sẽ có thể thiết lập một thành phần thông qua việc nhập một XML xác định cấu trúc thành phần. Sau đó, người ta có thể nghĩ đến việc thêm GUI.
Để cho bạn hiểu rõ hơn ở đây là một ví dụ rất đơn giản:
<COMPONENT name="Main">
<COMPONENT name="A">
<FUNCTION name="A1" path="lib/functionA1" />
</COMPONENT>
<COMPONENT name="B">
<FUNCTION name="B1" path="lib/functionB1" />
<FUNCTION name="B2" path="lib/functionB2" />
</COMPONENT>
<CONNECTIONS>
<CONNECTOR source="A1" target="B1" />
<CONNECTOR source="B1" target="B2" />
</CONNECTIONS>
</COMPONENT>
Không cần thiết phải đi sâu vào các khả năng của khung vì vấn đề của tôi chung chung hơn nhiều. Khi mã / chương trình khung được biên dịch, mô tả vấn đề vật lý, cũng như các hàm do người dùng định nghĩa, không được biết. Khi người dùng chọn (thông qua XML hoặc mới hơn qua GUI) một chức năng, khung sẽ đọc thông tin chức năng, tức là sẽ lấy thông tin của các tham số đầu vào và đầu ra, để cung cấp cho người dùng tùy chọn kết nối các chức năng.
Tôi biết các nguyên tắc phản ánh và tôi biết rằng C ++ không cung cấp tính năng này. Tuy nhiên, tôi chắc chắn rằng khái niệm "xây dựng các đối tượng trong thời gian chạy" là rất thường xuyên được yêu cầu. Tôi nên thiết lập kiến trúc phần mềm của mình trong C ++ như thế nào để đạt được mục tiêu? C ++ có phải là ngôn ngữ phù hợp? Tôi bỏ qua điều gì?
Cảm ơn trước!
Chúc mừng, Oliver