2013-07-09 3 views
0

Car, Wheel 및 Brakes 클래스가 있다고 가정 해 봅시다. 자동차에는 "4 개의 바퀴가있어서 자동차의 인스턴스가 만들어지면 동시에 4 개의 바퀴 인스턴스가 생성되기를 원합니다. 마찬가지로 오토바이를 제작하는 경우 바퀴 두 개를 만들어야합니다. 내 질문에 휠 인스턴스를 가장 잘 만들고 Car 클래스를 만들 때 이름을 지정하는 방법은 무엇입니까?클래스가 다른 클래스 객체와 "관계가"있는 경우

이제 브레이크를 특정 바퀴에 지정하려고합니다. 예 : FrontBrakes가 frontLeft, frontRight Wheels에 연결되어 있습니다. Wheel 클래스에서 AttachedTo라는 속성을 만들어야합니까? 특정 바퀴에 대한 브레이크를 말하기 위해 소유권을 어떻게 할당합니까?

public class Car 
{ 
    public Car() 
    { 
     Wheel frontLeft = new Wheel(); 
     Wheel frontRight = new Wheel(); 
     Wheel backLeft = new Wheel(); 
     Wheel backRight = new Wheel(); 
     Brake frontBrakes = new Brake(); 
     Brake backBrakes = new Brake(); 
    } 
} 

public class Wheel 
{ 
    public int Size; 
    public string Brand; 
    public Brake AttachedTo { get; set; } 
} 

public class Brake 
{ 
    public string Type; 
} 
+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+2

정말로 제대로하고 싶다면 실제 상황과 똑같이 만들 수 있습니다. "바퀴"는 여러 가지 재료로 이루어진 많은 다른 구성 요소로 이루어져 있습니다. 모든 구성 요소는 조립되지 않지만 외부 배우가 조립합니다. – Will

+1

자신에게 물어야하는 질문은 "이 유형의 사용자가 어떻게 상호 작용할 것입니까?"입니다. 만약 누군가가 'Wheel'에 대한 참조를 가지고 있고, 'Brake'가 무엇인지 알 필요가 있다면, 'Wheel'클래스에는 'Brake'라는 속성이 더 있어야합니다. 마찬가지로 '브레이크'에 대해서도 - 만약 '브레이크'의 사용자가 '휠'이 무엇에 부착되어 있는지 알아야한다면, 그런 속성이 더 좋을 것입니다. 실제 사용자 기반 시나리오가없는 경우이 기능을 추가하지 마십시오. –

답변

0

나는 차가 직접 브레이크를 가지고 있지 않다고 제안 할 것이다. 차는 바퀴가 있고 바퀴에는 브레이크가있다.

Wheel을 FrontWheel 및 BackWheel로 하위 클래스 화하는 것이 좋습니다. 그렇게하지 않으면 바퀴가 FrontOrBack 속성을 가져야하며이 속성은 생성자에서 지정해야합니다.

0

바퀴 위치와 브레이크 유형이 상수이기 때문에 열거 형이 적절할 수 있습니다. 그러면 휠 위치 및 브레이크 유형이 휠 클래스의 속성이됩니다. 브래킷 유형을 읽기 전용으로 만들고 휠 위치에 따라 생성자에서 설정하십시오.

관련 문제