2011-11-29 18 views
0

나는 이것으로 올바른 길을 가고 있는지 확인하기 위해 도움이 필요합니다. 인기있는 온라인 쇼핑 시나리오에 대한 유스 케이스 다이어그램과 클래스 다이어그램을 만들었습니다.이 클래스 다이어그램이 올바른지?

UML을 배우면서 나는 그것을 보면서 건설적으로 비판 해주세요. 회사의

이름은 X-회사이며 그들은 페인트의 판매에 있습니다

모델링 뒤의 이야기는 다음과 같습니다. X-company는 소매상과 도매상의 두 종류의 고객 인 유형의 고객에게이 페인트를 온라인으로 판매하는 웹 사이트를 운영합니다. X-Company는 현재 도료 종류가 이며 색상, 크기 및 색상이 다양합니다. 각 페인트 유형은이 특성이 분명히 다릅니다 ( ). 소매 업체는 사이트에 로그인하여 시간에 한 자리 숫자 (1 또는 2 페인트)로 페인트를 구입할 수 있으며 도매가는의 할인으로 다량의 페인트를 구입할 수 있습니다. 10 페인트 이상은 10 %, 20 페인트 이상은 20 % , 3030 도료 이상 30 %.

웹 사이트는 가능한 한 쉽게 만들어졌습니다. 고객은 사이트로 이동하여 페인트 유형을 선택하고 페인트의 특성이 표시됩니다. 고객이 구매할 수있는 경우 구매자는 양성을 선택합니다. 고객이 가격을 확인하면 주문을 확인합니다. 확인시, 웹 사이트는 도료 재고가 인지 확인하여 사용 가능한 페인트가 충분한 지 확인합니다. 을 사용할 수없는 경우 고객에게 알리고 유형을 선택하라는 메시지가 표시됩니다. 고객이 사용할 수있는 경우 주소, 카드 번호, 카드 핀과 같은 결제 카드 을 제공합니다. 지불은 외부 통합을 통해 으로 이루어집니다. 결제시 고객 주문은 이며 고객이 취소를 요청한 경우 또는 웹 사이트 관리자를 통해 주문한 경우는 예외입니다.

웹 사이트 주최자 또는 관리자는 웹 사이트에 새로운 페인트를 추가하고 페인트의 새로운 재고가있는 경우 오래된 페인트를 복용 할 책임이있다.

내가 그린 클래스 다이어그램은 다음과 같습니다 :

Class Diagram

+0

이것은 숙제와 너무 흡사합니다. 특정 UML에 대한 질문이 있으십니까? – vainolo

+0

Im 'User' 클래스가 추상 클래스라고 가정하면 라벨을 지정하는 것이 좋습니다. –

답변

1
  • 이 클래스를 단수 이름을 지정합니다. 주문이 아닌 주문. 할인이 아닌 할인. 그러나 Orders 컬렉션의 클래스 인 경우 "Orders"가 좋습니다.

  • 사용자는 한 번에 두 종류 이상의 페인트를 살 수 없습니다! Order 클래스에는 단일 Paint 인스턴스가 아닌 Paint 컬렉션이 있어야합니다.

  • 페인트, PaintType 디자인이 논리적으로 보이지 않습니다. 왜 하나 이상의 수업이 있어야하는지 나는 알지 못합니다. Paint 클래스에 결합합니다.

  • PaintStock 클래스가 있어야한다고 생각합니다. 관리자 클래스의 메소드는 PaintStock에 수행되는 것으로 보이므로이를 이동하십시오. 관리자 클래스는 PaintStock.Add 등을 호출 할 수 있도록 PaintStock 참조가 필요합니다.

  • 지불 클래스는 신용 카드가 있어야 주어진 신용 카드로 지불해야합니다. 나는 신용 카드가 지불을하는 유일한 방법이 아니라고 생각합니다. 나는 우리가 나중에 지불하는 방법을 쉽게 확장 할 수 있도록 지불 기본 클래스를 만들 것입니다.

  • 페인트 기능 추가/제거는 관리자 클래스에 적합하지 않습니다. 이 메소드들을 PaintStock 클래스에 넣으십시오.

  • 이름 바꾸기 BulkBuyer는

  • 한 사용자 클래스를 고려 도매합니다. 소매점 및 도매인을 제거하십시오. 나는 다른 클래스의 가치가있는 차이를 보지 못한다. User 클래스의 BuyerType 필드를 차별화합니다. 소매업 자와 도매업자를 기준으로 비즈니스 규칙에 따라 구매 한도가 결정되면 간단한 규칙 차이가 한 클래스에 쉽게 살 수 있습니다.

  • 일반적으로 - 그리고 좋은 방법입니다 - 계산 결과를 저장하지 마십시오. 따라서 Order.TotalCost는 필드가 아닌 메소드 여야합니다.

  • 주문에는 취소 방법이 필요합니다. 관리자 클래스가 아닙니다. 관리자 클래스는 Order 참조를 필요로하므로 Order.Cancel을 호출 할 수 있습니다.

관련 문제