어떻게 소프트웨어 구성 요소를 정의하고 OOP와 구성 요소 프로그래밍간에 어떤 종류의 관계가 있습니까? 프로와 conns 무엇입니까 이러한 패러다임의 "황금 비율"무엇입니까?소프트웨어 구성 요소는 어떻게 정의합니까?
답변
저는 컴포넌트 프로그래밍이 본질적으로 oo를 재창조한다고 생각합니다.
oo는 블랙 박스를 목표로하고 있지만 ... 구성 요소 프로그래밍은 블랙 박스가 되려고합니다.
결과적으로 컴포넌트 프로그래밍은 엔지니어링에 대해 (긍정적 인 방식으로) 암시한다고 생각합니다. 왜냐하면 블랙 박스가되기 위해서는 미래의 유스 케이스를 예상해야하고 이미 그들에게 음식을 제공했기 때문입니다.
또한 필자의 경험에 비추어 볼 때 철저한 테스트의 문서화 심리를 암시합니다.
그래서 스레딩 및 비동기 지원을 제공합니다. 인터페이스, 문서 및 단위 테스트를 게시합니다. 명확한 사건 구조와 행동을 가져라.
본질적으로 누군가가 그것을 재사용하고 그렇게하도록 도울 수 있습니다.
요점은 구성 요소에는 잘 정의 된 인터페이스와 잘 정의 된 기능이 있다는 것입니다. 실제 구현 세부 사항은 구성 요소 사용 방법을 고려할 때 범위를 벗어났기 때문에이 부분이 아닙니다. 즉 구성 요소는 상당히 복잡한 객체 세트 일 수 있습니다.
소프트웨어 구성 요소의 세분성은 재사용 세분화와 매핑되어야합니다. 소프트웨어의 덩어리가 다른 곳에서 재사용되는 경우, 그것은 자신의 구성 요소로서 버전 관리되고 배포되어야합니다. 그것이 다른 곳에서 재사용되지 않는다면 이것은 작은 가치를 추가합니다.
전체 클래스보다 작은 것이 컴포넌트로 간주되고 클래스 모음이 구성 요소를 형성 할 것으로 예상되는 경우 놀라운 일입니다.
저는 Component가 Object보다 다소 높은 수준의 구성 개념이라고 생각합니다.
구성 요소는 종종 릴리스 및 배포 단위입니다. 노출하는 인터페이스와 다른 구성 요소 및 인프라 측면에서의 불만족을 정의해야합니다. 시스템의 여러 구성 요소는 매우 다른 기술을 사용하여 개발 될 수 있으며 실제로 단일 구성 요소는 동 질적 일 필요가 없습니다.
일부 OO 언어로 구성 요소를 개발할 경우 책임을 분해하여 해당 구성 요소에 대한 OO 설계를 얻습니다.
이론상으로 구성 요소가없는 OO 계층 구조로 시스템을 완전히 설계 할 수 있습니다. Howard는 재사용 세분화로 구성 요소의 규모와 크기를 결정해야한다고 동의해야합니다. – citn
블랙 박스와 같이 고려할 수있는 응용 프로그램의 하위 시스템이라고 생각합니다.
그래서 OOD에서는 명확한 명세를 가진 클래스와 인터페이스 그룹이 있습니다. 하나의 명확한 목적은 상자가 무엇인지 알 필요없이 계산을 수행 할 수있게 해줍니다.
입력 -> [블랙 박스] -> furter가 구성 요소를 식별 무엇
출력
는 없습니다하십시오 있도록 응용 프로그램의 나머지 부분에 대한- 높은 내부 coesion
- 없음 종속, 구성 요소를 하나 이상의 프로젝트에서 쉽게 가져올 수 있습니다.
구성 요소 프로그래밍 실제로 더 큰 응용 프로그램을 구성하기 위해 구성 요소를 조합한다고 생각합니다.
매우 "유토피아적인"관점에서 공개 저장소가 있어야합니다. 여기에서 사용자는 사양을 완전히 채우는 구성 요소를 찾을 수 있습니다. 구성 요소를 찾으면 앱에 통합 할 수 있습니다.
클래스는 프로그램의 맥락에서 작동하는 블랙 박스 (하나의 희망)이며 컴포넌트는 아직 작성되지 않은 것을 포함하여 여러 가지 프로그램의 컨텍스트에서 작동하는 블랙 박스가 될 것이라고 말하고 싶습니다. –
예, 동의했습니다. 나는 생각했지만 그 말을 결코 꺼내지 못했습니다;) –