나는 그것이 달려 있다고 말하는 것을 싫어하지만, 그것은 달려있다.
세계의 모든 단일 차량을 모델링해야하고 (예 : "타이어 교체"와 같이 모델별로 매우 다른 프로세스) 호출 할 수있는 방법이 필요한 경우 그렇습니다. 당신의 현실 세계 상황도 너무 부풀어 오르기 때문에 많은 비 대한 수업을해야합니다.
archetypal cars의 사진 데이터베이스를 갖고 싶지만 이웃 사람의 인스턴스 사진이든 자매의 인 스턴스 사진이든 상관없이 차를 찍지 않으면 맨 아래 계층을 드롭 할 수 있습니다. "2009 VW CC"는 다른 모델의 클래스이기도 함에도 불구하고 인스턴스가 될 수 있습니다.
아니면 진정한 서브 클래스로 만들지 않아도됩니다. 간단한 참조로 충분할 수 있습니다. 예를 들어 보험 회사는 많은 자동차 모델과 연도 목록을 알고 있지만 개발자는 각각에 대해 하나의 하위 클래스를 작성하지 않습니다. 대신, 그들은 한 행이 2009 VW CC를 대표 할 수있는 자동차 모델의 데이터베이스를 가지고 있습니다. 자동차 보험에 가입하면 "2009 VW CC"인스턴스에 대한 참조로 "보험 자동차"인스턴스가 생성됩니다.
이것은 "is-a '관계에 대한 상속 사용"을 엄격하게 따르지 않지만 모든 자동차 유형에 대한 작업은 동일합니다. 변경되는 매개 변수 (예 : 연간 보험 가격) 새 자동차 모델은 코드가 아닌 데이터베이스에 기록됩니다.
여기서 차 모델의 차이점을 자동차의 동일한 메소드에 대한 매개 변수로 모델링 할 수 있다는 가정이 있습니다.
(단, iPhone 회사가 전화 회사 웹 사이트를 통해 제공되기 시작했을 때 클래스 모델이 파손되었음을 발견했습니다. 웹 사이트는 수십 개의 브랜드와 모델을 한 페이지에서 처리하는 것처럼 보였습니다. 전화 및 그 기능에 대한 데이터베이스 - 그리고 아이폰 모델을 다루기위한 특별한 페이지가 필요할 것입니다. 아마도 iPhone 판매의 일부 측면을 지원하기 위해 새로운 특수 방법이 필요했을 것입니다. 자동 판매 데스크는 "전화를 사기 위해 1을 누르십시오. .2를 눌러 iPhone을 구입하십시오. ")
나는 자동차 (또는 그 문제에 대한 모든 제품)의 모든 사례를 모델링하려고하지는 않지만, 내 애플리케이션에서이를 수행 할 수있는 방법을 제공하고자한다. 예를 들어, 제품이 한정판으로 출시되거나 충분히 독특하거나 맞춤화 된 제품 인 경우. –
그런 다음 하이브리드 모델이 적절할 수도 있습니다. Standard_Car는 Car에서 상속받으며 지원하는 여러 모델의 데이터베이스에 대한 참조를가집니다. Custom_Car는 Car에서 상속되며 자체에는 각기 다른 유형의 자동차에 대한 하위 클래스가 있습니다.이 하위 클래스는 코드에서 비용이 많이 드는 모델링 단계를 수행하기에 충분하고 중요합니다. 이웃의 자동차는 그 참신함에 따라 Standard_Car의 인스턴스이거나 자동차의 사용자 지정된 하위 클래스 중 하나 일 수 있습니다. – Oddthinking