2013-04-25 6 views
3

나는 두 시간 만에 시험을 보았고 나는 그것에 대한 샘플 질문을 풀려고 노력하고있다. 다음 질문에 대한 해결책을 찾지 못했습니다. (예컨대, 슈퍼마켓) 상품을 판매전략 패턴을위한 UML 클래스 다이어그램

잡화점 :

는 다음의 상황에 대응하는 클래스 다이어그램을 그린다. 상품에는 두 가지 유형이 있습니다 : 식용 (즉, 음식으로 사용할 수있는 모든 항목)과 비 식용. 일부 품목은 무게로 판매되며 이며 일부는 단위당 판매됩니다. 일부 품목은 과세 대상이지만 다른 품목은 과세 대상입니다. 일부 상품 은 그룹 단위로 판매 할 때 특별 가격이 적용됩니다 (예 : 2 달러를 3 달러). 구매시 많은 상품이 포함될 수 있습니다.

클래스 다이어그램에는 클래스/추상 클래스/인터페이스, 연결, 및 연결에 대한 다중도 만 표시하십시오. 어떤 작업도 포함시키지 마십시오! 디자인에 인터페이스와 추상 클래스 (있을 경우)를 명확하게 표시하십시오.

또한 디자인은 (가급적)이어야합니다. 특히, 다음과 같은 점에 에주의해야합니다

1) 아이템 중 하나 식용 여부와 가격 전략은 수명 기간 동안 변경 될 수있는 반면,이 사실은 항목의 수명 기간 동안 변경되지 않습니다 항목의

2) 각 가격 책정 전략은 특정 작업 집합과 관련됩니다. 예를 들어, 세무 전략 는 항목 과세인지 여부, 우리의 집합이지만)

3 (이 기능은 다음 비과세 항목에 대해 0을 반환 할 수있다) 세금을 계산하는 동작 를 가질 수있다 가격 전략에 대한 작업이 동일하게 유지되는 경우 해당 작업이 처리되는 방식이 시간이 지남에 따라 변경 될 수 있습니다. 예를 들어서, 우리는 시간에 따라 에 식료품 및 식료품에 대한 세금이 부과 될 수 있습니다.

4) 가격 전략에 대한 작업 집합이 다른 항목에 걸쳐 동일하게 유지 되더라도 다른 항목에 대해 다른 방식으로 이러한 작업을 구현할 수 있습니다. 예를 들어, 오렌지와 사과 사과에 대해 세금을 다르게 계산할 수 있습니다.

나는 그것이 전략 디자인 패턴에 맞게 수있는이 생각 같은 것을 시도했다, 그러나 나는 전혀 모르겠습니다.

enter image description here

+0

는 여전히 관련성이 질문을 가지고하거나 질문을 닫을 수 있습니다? 나는이 질문을 보는 많은 사람들이 당신에게 대답 할 필요성에 의문을 제기한다고 생각합니다. 이 질문을하는 것이 내가 그 질문에 답할 것이라는 것을 의미하지는 않습니다. 나의 주요 동기는 또 다른 호기심입니다 : 시험은 어떻게 진행 되었습니까? –

+0

그다지 나쁘지는 않았다. 나는 80/100을 얻었다. 질문에 대해서는 실제로 정확한 답을 모릅니다. –

+0

시험에 축하합니다! 그래도 대답이 필요하면 질문을 변경할 수 있습니다. 그게 도움이 될거야. –

답변

2

먼저 식료품 매장 될 수는있다. 모든 상점에는 항목 W 구매와 같은 두 가지 유형의 오브젝트가 있습니다. 항목 및/또는 구매가 없으면 상점이 존재하지 않게됩니다. 항목은 상점없이 존재하지만 (예 : 상점에 전달되어야 함) 구매는 상점 자체에 속합니다. 그래서 상점과 상품 간의 집합적인 관계가 존재하지만 매장과 구매 간의 구성적인 관계가 있습니다.

품목에는 이름, 식용, 과세 대상, 중량 및 단위와 같은 일부 기능이 있습니다. 아이템의 모든 특성을 구현하지는 못했지만 아이디어는 거기에 있습니다.이러한 항목을 판매하는 데는 여러 가지 방법이 있습니다. 동시에 더 많은 전략이 사용될 수 있습니다. 그 상황을 위해 데코레이터 패턴이 설계되었습니다. 런타임에 여러 전략을 동적으로 추가 할 수 있습니다. 판매 방법의 변경으로 인해 Item에서 해당 원인을 찾았 기 때문에 항목과 연결되어 있기 때문에 항목 인터페이스를 꾸미고 있습니다. 그것은 클래스 구매와 연관이 있지만 구매의 일부가 아닙니다. 판매 될 모든 항목은 특정 구매 항목에 속합니다. 아직 국가가 판매되지 않을 수도 있습니다. 이것이 구매의 다양성이 0-1 인 이유입니다. 모두 모두이로 귀결 :

class diagram of items sold in a store

+0

sellItem과 Item간에 추상화가 있습니까? –

+0

예, Decorator 패턴의 요지는 SellItem이 여전히 Item 인터페이스로 호출 될 수 있지만 Item 인터페이스를 멤버로 가지며 항목의 가격을 반환하는 함수가 데코 레이팅 된 item-variable을 반환한다는 것입니다. 동시에 Item을 상속하고 포함합니다. 위키 피 디아에서이 다이어그램을보십시오 : http://en.wikipedia.org/wiki/Decorator_pattern. 나는 다이어그램에 포함 관계를 포함시키지 않았지만 동일한 항목을보다 간결하게 설명하는 변수 item : Item을 포함 시켰습니다. –