2010-02-04 4 views
1

그래서 간단한 시스템의 초기 설계를 시작했습니다.어디에서이 시스템에 트랜잭션을 배치해야합니까?

나는 Customer라는 수퍼 클래스/초록이 있습니다. PrivateCustomer와 BusinessCustomer라는 두 개의 하위 클래스가 있습니다.

또한 계정 클래스가 있습니다. 이 계좌는 선금 또는 일반 계좌 일 수 있습니다. 그것이 Enum에 의해 결정되었습니다. 고객 클래스에는 계정 <> 목록이 있습니다.

이제 트랜잭션 클래스도 생겼습니다. 까다로운 문제입니다.

  • 보낸 사람
  • 수신기
  • 금액
  • 날짜
  • 유형 (열거)

당신이 상상할 수 있듯이 : 고객 수 트랜잭션 클래스는 다음과 같은 속성이 있습니다 하나 이상의 계정이 있어야합니다. 고객은 0 건 이상의 거래를 할 수 있습니다. 계정에 거래가 있습니까 (또는 그 반대입니까?)

지금. 거기에 거래를 어디에 두어야합니까? 시스템은 시간이 지남에 따라 [대량의] 트랜잭션을 가져올 수 있습니다.

  • 내가 모든 거래의 글로벌 목록을 가지고 내가 PrivateCustomer 12345에 대한 모든 거래를보고 할 때 단순히 목록을 필터링합니까?
  • 고객 등급의 각 계정 속성에는 모든 거래 목록이 있습니까?
  • 무엇인가?

OO 솔루션이라면 만족할 것입니다.

+0

"만큼의 객체 지향-솔루션으로, 나는 만족하실 것입니다 . " 그래서 아무도 OO가 대답하지 않습니다! –

+0

그것은 매우 어리석은 코멘트입니까? – CasperT

답변

2

송신자와 수신자가 고객 개체를 참조하지 않는 이유는 무엇입니까? 달리 말하자면, 각 고객은 참여하고있는 트랜잭션 객체에 대한 참조 목록을 가지고 있습니다. 설계에서 순환 참조를 허용하는 경우, 이것이 내가가는 방법입니다. 이 라인을 따라

뭔가 :

using System; 
using System.Collections.Generic; 

namespace Sample 
{ 
    public abstract class Customer 
    { 
     protected string _name; 
     //... 
    } 

    public class PrivateCustomer : Customer 
    { 
     private List<Transaction> _transactions; 
     //... 
    } 

    public class BusinessCustomer : Customer 
    { 
     private List<Transaction> _transactions; 
     //... 
    } 

    public class Transaction 
    { 
     private Customer _sender; 
     private Customer _receiver; 
     private double _amount; 
     private DateTime _date; 
     private AccountType _accountType; 

     //... 
    } 

    public enum AccountType 
    { 
     Downpayment, 
     Regular 
    } 
} 

이 계정에 계정 정보를 복용 개정 (웃기려는 의도 없음) :

using System; 
using System.Collections.Generic; 

namespace Sample 
{ 
    public abstract class Customer 
    { 
     private List<Account> _accounts; 
     protected string _name; 
     //... 
    } 

    public class PrivateCustomer : Customer 
    { 
     //... 
    } 

    public class BusinessCustomer : Customer 
    { 
     //... 
    } 

    public class Transaction 
    { 
     private Account _sender; 
     private Account _receiver; 
     private double _amount; 
     private DateTime _date; 

     //... 
    } 

    public abstract class Account 
    { 
     private Customer _customer; 
     private Collection<Transaction> _transactions; 
    } 

    public class RegularAccount 
    { 
     //... 
    } 

    public class DownpaymentAccount 
    { 
     //... 
    } 
} 
+0

진실을 말하면, 나는 당신이 의미하는 것이 확실하지 않습니다. 그게 도움이된다면 C#을 사용하고 있습니다. – CasperT

+0

숙제가 맞습니까? –

+0

나는 이와 비슷한 것을 디자인하는 방법에 관해 친구와 간단히 이야기를 나누었습니다. 답변을 찾을 수 없으므로 제 3 자로 SO를 사용하고 있습니다 – CasperT

관련 문제