2016-06-27 2 views
-2

나는이 2 개의 클래스를 가지고 있으며 누군가 내가 잘못했다고 말했다.내 도메인 객체 디자인에 무엇이 잘못되었는지 알아낼 수 없다.

class Employee { 
private int employeeID; 
private String employeeName; 
private Seat employeeSeat; 
} 

이것은 내가 좌석을 검색 할 때, 나는 사람이 결정하기를 원하기 때문에 나는 또한 내 자리에 직원 속성을 추가

class Seat { 
private int seatID; 
private String seatCode; 
private Employee occupant; 
} 

좌석 등급과 관계가 내 직원 클래스입니다 좌석의 현재 탑승자. 내 직원과 같은 일, 내가 그것을 검색 할 때, 나는 그 직원의 현재 자리를 결정하고 싶다. 이제 그들은 직원이 시트 속성을 갖고 있고 시트에 직원 속성이 있기 때문에 그것은 끔찍한 디자인이라고 말했다.

답변

2

그들이 의미하는 바를 자세히 설명하는 것이 잘못되었다고 말한 사람에게 물어보십시오. 그렇지 않을 수도 있지만 전체 시스템 아키텍처 및 개체 탐색에 대한 요구 사항에 따라 다릅니다.

아마도 그 의미는 해당 관계를 유지하기위한 EmployeeSeat 개체 (시작 날짜, 종료 날짜, 시간 등)를 보유해야한다는 것입니다. 그런데 카디널리티 제약을 강화하는 것과 같은 다른 문제에 대해 걱정해야합니다 (직원이 여러 명을 가질 수 있습니까?

+0

그게 그가 의미하는 바였던 것 같아요.하지만 제가 한 일은 내 직원 클래스에 다른 속성 프로젝트를 추가하여 직원 시트와 같은 Project 클래스를 참조하고 직원을 함께 표시하고 싶습니다. 그들의 프로젝트와 자리에서 문제가된다. –

+0

"문제"가 아니라 복잡성과 요구 사항 간의 "상반 관계"입니다. 이것이 바로 소프트웨어 공학이 의미하는 바입니다. 당신이 끊임없이해야하는 현실적인 상충 관계. 이것은 왜 디자인이 어렵고, 당신이 학교에서 배우는 것이 아닙니다. (당신이 어떤 별의 교수님을 가지고 있지 않다면). –

+0

그래서 EmployeeSeatProject 또는 stuff와 같이 Employee에 Seat 및 Project를 연결하는 클래스를 만들어야하는지, 아니면 employee 클래스의 속성으로 넣는 것이 더 낫지 않을지 궁금합니다. –

0

런타임에서 관계의 한 쪽을 다른 엔티티를 가리키고 (모델을 일관성없는 상태로 두는) 잊어 버리는 위험이 일반적으로 한 가지 작업과 관련된 약간의 불편 함보다 나쁜 것으로 간주되기 때문에 한 방향 연상. 그래도 항상 가능한 것은 아닙니다.

+0

다른 AR 내의 AR을 참조하기 위해 집계 경계가 끊어지는 것이 아닙니다. – plalx

+0

수도 있지만, OP는 집계를 언급하지 않습니다. Evans는 내가 올바르게 기억하면 집계와 상관없이 청서에있는 엔티티 간의 양방향 연관에 대해 말합니다. – guillaume31

+0

사실 그렇지만 도메인 모델을 활용하여 쿼리를 생성하는 것이 여전히 권장되는 시대였습니다. 이것이 기본적으로 AR 내의 다른 AR을 참조해야하는 유일한 이유입니다. – plalx

관련 문제