기본 OOP 개념에 대해 약간 혼란 스럽습니다. 이것은 OO 프로그래밍 및 디자인에 대한 초보자 질문의 다소입니다. 아마도이 질문에 더 나은 표현 방법이있을 것입니다. 그러나 더 명확하게 설명하려고 노력할 것입니다 ...구성원 개체가 해당 개체를 소유 한 클래스의 메서드를 호출해야합니까?
'Engine'클래스가 인 경우 'Subsystem'이라는 구성원 개체의으로 구성되었지만 서브 시스템 은 엔진의 메서드를 호출 할 수 있어야합니다. 순환 종속성입니까?
내 '엔진'클래스에는 다른 엔진 하위 시스템에서 액세스 할 수 있어야하는 'Window'개체가 있습니다. 내 독창적 인 계획은 엔진 클래스 내에서 해당 윈도우 객체에 대한 참조를 반환하는 함수를 만드는 것이었지만 엔진 서브 시스템 객체 중 하나에서 함수를 호출하는 방법을 알지 못했습니다. 'Engine'클래스는 'Window'객체와 'Subsystem'객체로 구성되며 이러한 클래스 중 하나 사이에는 상속 관계가 없음을 명심하십시오.
엔진이 # 서브 시스템을 포함하고 서브 시스템이 엔진을 # 포함하면 원형 의존성이 발생합니다. 그렇습니까? 'Subsystem'객체의 생성자를 통해 'Window'객체를 전달해야합니까? 모든 'Engine'객체에 대한 참조를 모든 하위 시스템에 전달해야합니까? 내 서브 시스템이 OOP에 대한 설계 또는 이해의 결함을 '소유하고있는'클래스에 액세스하기를 원합니까?
: 당신은 객체 및 하위 객체에서 모두 액세스 할 수 있어야합니다 특정 기업이있는 경우
, 당신은 순환 종속성, 예를 깨고 다른 개체에이 개체를 추출 할 수 있습니다 시원한. 새롭고 독학적인 프로그래머로서 몇 가지 핵심 개념을 저에게 설명해 줄 수 있습니다. 일반적으로 나는 서브 시스템에 대한 엔진 호출 메소드를 가지고 있었지만 다른 방법은 사용하지 않았습니다. 이 문제는 엔진의 두 개 이상의 하위 시스템 (하위 개체)이 서로 어떻게 통신해야하는지에 대한 이해가 부족하기 때문에 발생합니다. 현재 상황에서는 렌더링 및 이벤트 하위 시스템 모두 창이 액세스해야합니다. 이러한 '사물'세 가지 모두 모 놀리 식 엔진 클래스의 하위 객체입니다. 그래서 내 엔진이 윈도우의 위치를 필요로하는 서브 시스템에 전달하도록해야합니까? – MrKatSwordfish
예. 내 견해로, 당신은 하위 시스템이 필요로하는 Window와 다른 의존성을 통과시켜야합니다. 대안으로, 의존성을 마지막 순간까지 전달하는 것을 연기 할 수 있습니다. 말할 것도없이 합리적이고 교육 된 답변을 제공하기 위해 각 구성 요소의 요구 사항과 책임에 대해 더 많이 이해해야합니다. –