Bugün, size belirli bir yazılım mimarisi gerçekleştirme konusunda C ++ yetenekleri hakkında bir soru sormak istiyorum.
Tabii ki, aramayı kullandım ama doğrudan bağlantılı bir cevap bulamadım.
Temel olarak, amacım kullanıcının keyfi olarak oluşturulmuş fiziksel sistemlerin modellenmesine ve simülasyonuna, örneğin bir arabaya izin veren bir program oluşturmak. Fiziksel modeller (sınıflar içindeki fonksiyonlar) kütüphanesine sahip olduğumu varsayıyorum. Her bir fonksiyon bazı girişlere sahip olabilir ve temel fiziksel açıklamaya bağlı olarak bazı çıkışlar verebilir, örneğin bir yanmalı motor modeli, aerodinamik sürükleme modeli, tekerlek modeli, vb.
Şimdi, fikir kullanıcıya herhangi bir işlevi kendi ihtiyaçlarına göre oluşturmasına, yani herhangi bir fiziksel davranışı haritalamasına izin veren bir çerçeve sağlamaktır. Çerçeve, farklı işlevlerin çıkışlarını ve girişlerini bağlamak için işlevler sağlamalıdır. Bu nedenle, çerçeve bir konteyner sınıfı sağlar. Bir veya daha fazla model nesnesini tutabilen KOMPONENT diyorum (FUNCTION). Bu kaplar ayrıca fonksiyon parametreleri arasındaki bağlantıları (CONNECTOR) yanı sıra diğer bileşenleri de (cf. kompozit modeli) tutabilir. Ek olarak, bileşen sınıfı matematik çözücü gibi genel sayısal işlevler sağlar.
Fonksiyonların bileşimi çalışma zamanı sırasında yapılmalıdır. İlk durumda, kullanıcı, kompozisyon yapısını tanımlayan bir XML'yi içe aktararak bir kompozisyon ayarlayabilmelidir. Daha sonra, bir GUI eklemeyi düşünebiliriz.
Burada size daha iyi bir anlayış sağlamak için çok basitleştirilmiş bir örnek:
<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>
Sorunum çok daha genel olduğu için çerçevenin yeteneklerine daha fazla dalmak gerekli değildir. Çerçeve kodu / programı derlendiğinde, kullanıcı tanımlı işlevlerin yanı sıra fiziksel sorun açıklaması da bilinmemektedir. Kullanıcı bir işlevi seçtiğinde (XML aracılığıyla veya daha sonra bir GUI aracılığıyla), çerçeve işlev bilgilerini okumalı, yani kullanıcıya işlevler arasında bağlantı kurma seçeneği sunmak için giriş ve çıkış parametrelerinin bilgilerini almalıdır.
Yansıma ilkelerini biliyorum ve C ++ 'ın bu özelliği sağlamadığının farkındayım. Ancak, "çalışma zamanı sırasında nesneler oluşturma" kavramının sıklıkla gerekli olduğundan eminim. Hedefime ulaşmak için C ++ yazılım yazılımımı nasıl ayarlamalıyım? C ++ doğru dil mi? Neyi gözden kaçırırım?
Şimdiden teşekkürler!
Şerefe, Oliver