2014-10-31 3 views
0

이 코드를 this article에서 복사했으며 클래스 내부에서 클래스를 속성으로 정의하는 이유를 알지 못합니다. 또한 클래스 PersonalLoan이 인스턴스화되면 어떻게됩니까? 클래스 PersonalLoan 내부 형 LoanLoanDetail 속성은 가있다-A 클래스 사이 관계를 제시한다다른 클래스의 속성으로 클래스 선언

public class PersonalLoan 
{ 
    public string AccountNumber { get; set; } 
    public string AccounHolderName { get; set; } 
    public Loan LoanDetail { get; set; } 
    public PersonalLoan(string accountNumber) 
    { 
     this.AccountNumber = accountNumber; 
     this.AccounHolderName = "Sourav"; 
     this.LoanDetail = new Loan(this.AccountNumber); 
    } 
} 
public class Loan 
{ 
    public string AccountNumber { get; set; } 
    public float LoanAmount { get; set; } 
    public bool IsLoanApproved { get; set; } 
    public Loan(string accountNumber) 
    { 
     Console.WriteLine("Loan loading started"); 
     this.AccountNumber = accountNumber; 
     this.LoanAmount = 1000; 
     this.IsLoanApproved = true; 
     Console.WriteLine("Loan loading started"); 
    } 
} 
+3

하나의 클래스가 속성으로 어디에 있습니까? –

+6

당신이이'public Loan LoanDetail {get; 세트; }'이면 [Composition] (http://en.wikipedia.org/wiki/Object_composition)입니다. 또한 볼 수 있습니다 : [구성 및 집계의 차이점] (http://www.c-sharpcorner.com/UploadFile/pcurnow/compagg07272007062838AM/compagg.aspx) – Habib

+0

@Habib 덕분에 제게 ' PersonalLoan '이 인스턴스화 되었습니까? – Constantine

답변

3

나는이 코드는 피해야한다 무엇의 예라고 생각한다. ,

현실 : 즉,이 코드의 저자가

개인 대출은 대출

이있다 말하려고하지만, 관계들이 모델로하려고하는 것 같지는 않다

개인 대출은 대출

관계 것은입니다-A 상속을 사용하여 모델링하지 조성물. 즉, 그들은이 쓴해야합니다

public class PersonalLoan : Loan { 
    public PersonalLoan(string accountNumber) : base(accountNumber) { 
     ... 
    } 
    ... 
} 

잘못되는 모델을 가리키는 또 다른 문제는 모두 PersonalLoan과 내부의 Loan가 동일한 개체 내에서 두 위치에 저장되어있는 같은 accountNumber을 가지고있다 . 당신이 이것을 볼 때, 당신은 무언가가 옳지 않다는 것을 알고 있습니다. 두 계좌 번호를 얻는 이유는 PersonalLoan이 인스턴스화되면 해당 생성자가 Loan을 인스턴스화하여 동일한 accountNumber을 전달한다는 것입니다.

다른 개체 안에 포함 개체가 잘못되었음을 의미하지 않습니다. 당신이 클래스로 차용 주소를 모델링했다 예를 들어,이 같은 끝낼 것 :

class Address { 
    public string Country {get;set;} 
    public string City {get;set;} 
    ... // And so on 
} 
class Borrower { 
    public Address MailingAddress {get;set;} 
    ... // 
} 

이 모델은 완벽하게 유효 차주는 주소이 있기 때문에.

+0

그것은 게으름에 관한 것 http://www.c-sharpcorner.com/UploadFile/dacca2/implement-lazy-loading-in-C-Sharp-using-lazyt-class/ – Constantine

+0

@ Constantine 링크에서의 기사 모델 선물이 독자에게 직관적으로 보이기에 충분히 밀접하게 일치하지 않기 때문에 선물은 이상적이지 않습니다. – dasblinkenlight

+0

@ dasblinkenlight 이름이 틀렸다고 생각합니다. 실제 세계에서 같은 구조를 보았을 때 현실을 맞추기 위해서는'LoanDetail'을 사용해야합니다. 'MyLoanTypeObject'을'LoanDetails' 자식으로 설정합니다. – TyCobb

관련 문제