오늘 저는 특정 소프트웨어 아키텍처를 실현하기 위해 C ++의 기능에 대해 질문하고 싶습니다.
물론 검색을 사용했지만 직접 연결된 답변을 찾지 못했습니다.
기본적으로, 나의 목표는 사용자가 임의로 구성된 물리적 시스템, 예를 들어 운전 차량의 모델링 및 시뮬레이션을 가능하게하는 프로그램을 구축하는 것입니다. 실제 모델 라이브러리 (클래스 내의 함수)가 있다고 가정합니다. 각 함수는 기본 물리적 설명 (예 : 연소 엔진 모델, 공기 역학적 항력 모델, 휠 모델 등)에 따라 일부 입력을 갖고 일부 출력을 반환 할 수 있습니다.
이제 아이디어는 사용자에게 필요에 따라 기능을 구성 할 수있는 프레임 워크를 제공하는 것입니다. 즉, 물리적 동작을 매핑 할 수 있습니다. 프레임 워크는 다른 기능의 출력과 입력을 연결하는 기능을 제공해야합니다. 따라서 프레임 워크는 컨테이너 클래스를 제공합니다. 하나 또는 여러 개의 모델 객체를 보유 할 수있는 COMPONENT라고합니다 (FUNCTION). 이 컨테이너는 다른 구성 요소 (복합 패턴 참조)와 기능 매개 변수 사이의 연결 (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 ++가 올바른 언어입니까? 무엇을 간과합니까?
미리 감사드립니다!
건배, 올리버