วันนี้ฉันอยากถามคุณเกี่ยวกับความสามารถของ C ++ ในการตระหนักถึงสถาปัตยกรรมซอฟต์แวร์เฉพาะ
แน่นอนฉันใช้การค้นหา แต่ไม่พบคำตอบที่เชื่อมโยงโดยตรง
โดยพื้นฐานแล้วเป้าหมายของฉันคือการสร้างโปรแกรมที่อนุญาตให้ผู้ใช้สร้างแบบจำลองและจำลองระบบทางกายภาพที่ประกอบขึ้นโดยพลการเช่นรถขับ ฉันคิดว่ามีไลบรารี่ของโมเดลทางกายภาพ (ฟังก์ชั่นภายในคลาส) แต่ละฟังก์ชั่นอาจมีอินพุตบางส่วนและส่งคืนเอาต์พุตบางอย่างขึ้นอยู่กับคำอธิบายทางกายภาพเช่นโมเดลเครื่องยนต์เผาไหม้รุ่นลากอากาศพลศาสตร์แบบจำลองล้อเป็นต้น
ตอนนี้ความคิดคือการจัดเตรียมเฟรมเวิร์กให้กับผู้ใช้ซึ่งช่วยให้เขาสามารถเขียนฟังก์ชั่นใด ๆ ตามความต้องการของเขาเช่นเพื่อแมปพฤติกรรมทางกายภาพใด ๆ เฟรมเวิร์กควรจัดเตรียมฟังก์ชันการทำงานเพื่อเชื่อมต่อเอาต์พุตและอินพุตของฟังก์ชันที่แตกต่างกัน ดังนั้นกรอบงานให้คลาสคอนเทนเนอร์ ฉันเรียกมันว่า COMPONENT ซึ่งสามารถเก็บวัตถุโมเดลหนึ่งหรือหลายอันได้ (ฟังก์ชั่น) คอนเทนเนอร์เหล่านี้ยังสามารถเก็บส่วนประกอบอื่น ๆ (รูปแบบคอมโพสิต) รวมถึงการเชื่อมต่อ (CONNECTOR) ระหว่างพารามิเตอร์ฟังก์ชัน นอกจากนี้คลาสคอมโพเนนต์ยังมีฟังก์ชันตัวเลขทั่วไปเช่นตัวแก้ปัญหาคณิตศาสตร์และอื่น ๆ
องค์ประกอบของฟังก์ชั่นควรจะทำในช่วงรันไทม์ ในตัวอย่างแรกผู้ใช้ควรจะสามารถตั้งค่าการแต่งเพลงผ่านการนำเข้า XML ซึ่งกำหนดโครงสร้างองค์ประกอบ หลังจากนั้นหนึ่งอาจคิดเพิ่ม GUI
เพื่อให้คุณเข้าใจมากขึ้นนี่เป็นตัวอย่างที่ง่ายมาก:
<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>
ไม่จำเป็นต้องดำลึกเข้าไปในขีดความสามารถของกรอบงานเพราะปัญหาของฉันกว้างกว่าปกติมาก เมื่อคอมไพล์รหัส / โปรแกรมเฟรมเวิร์กคำอธิบายปัญหาทางกายภาพเช่นเดียวกับฟังก์ชั่นที่ผู้ใช้กำหนดไม่เป็นที่รู้จัก เมื่อผู้ใช้เลือก (ผ่านทาง XML หรือใหม่กว่าผ่านทาง GUI) ฟังก์ชั่นกรอบควรอ่านข้อมูลฟังก์ชั่นคือควรได้รับข้อมูลของพารามิเตอร์อินพุตและเอาต์พุตเพื่อให้ผู้ใช้มีตัวเลือกในการเชื่อมต่อฟังก์ชั่น
ฉันรู้หลักการสะท้อนและฉันรู้ว่า C ++ ไม่ได้มีคุณสมบัตินี้ อย่างไรก็ตามฉันแน่ใจว่าแนวคิดของ "การสร้างวัตถุในระหว่างรันไทม์" นั้นจำเป็นมาก ฉันจะตั้งค่าสถาปัตยกรรมซอฟต์แวร์ใน C ++ เพื่อให้บรรลุเป้าหมายได้อย่างไร C ++ เป็นภาษาที่ถูกต้องหรือไม่ ฉันจะมองข้ามอะไร
ขอบคุณล่วงหน้า!
ไชโยโอลิเวอร์