2017-12-24 13 views
0

그래서 도서관 관리 시스템에서 일하고 있는데 책 (리브르) 유형 또는 리뷰 (검토) 일 수있는이 문서 클래스가 있으며 각 문서에는 사본이 거의없고 사용자는 책의 복사본 만 빌릴 수 있으며 리뷰의 두 가지 사본 (예시) 수업을 책과 기타 리뷰로 만드는 것 외에 다른 방법을 찾을 수 없었습니다. 미리 감사드립니다. 사용자는 서적 만 빌리고 리뷰를받지 못하게하려면 어떻게해야합니까?

class diagram of library

+0

부울 속성 (Canbeborrowed)을 추가하지 않는 이유는 무엇입니까? –

+0

감사합니다 yahya, 나는이 아이디어가 있었지만, 회원 (adhérent)과 사본 (exampleaire) 사이의 협회 (빌림)의 의미를 망칠 수는 없습니다. 회원은 사본을 빌려야합니다. 그러면 괜찮은지 테스트해야합니다. isn 차용 할 수있는 문서를 다른 사람들과 구분할 수있는 또 다른 방법이 있습니까? –

답변

2

왜 두 개의 클래스 : 도서 및 검토. (클래스 이름에 영어를 사용하고 악센트를 피하는 것이 더 낫다는 것을 교사에게 말해주십시오 : 코드에서 억양이있는 클래스 이름을 보지 못합니다.)

카피와 문서 사이의 연관 방향을 바꿀 것입니다. 나는 문서가 문서의 공식 참조임을 이해했다. 그것은 표준화 된 것이 될 수 있으며 세계의 모든 librairies에서 동일 할 수 있습니다 : 그것의 역할은 사본을 관리하는 것이 아닙니다.

속성이나 메소드가 없어도 많은 클래스를 얻을 수 있습니다. 단순한 열거로 바꿀 수 있습니다.

다음 모델은 사용자가 책 만 대여 할 수 있음을 보여줍니다. 이 솔루션은 OCL 사용을 방지합니다. OCL이 좋은 아이디어 일지라도 모델을 단순화하지만 OCL 규칙의 복잡성을 추가합니다.

class diagram of library

+0

안녕하세요 속성과 메서드가없는 클래스에 대한 @granier, 그냥 내 다이어그램 클래스 사인을 멈추게 stoppoed 내가 문서/복사 문제에 갇혀있어, 난 정말 borrowableCopy 및 unborrowableCopy 클래스를 피하고 싶었지만 다른 사람이 없다고 생각합니다. 길 주위에, 고마워. –

1

내가 좋아하는 일을 할 것입니다 :

public class Document 
{ 
    //document properties 
} 
public interface IBorrowable 
{ 
    Document Lend(); 
} 

public class Book : Document, IBorrowable 
{ 
    public Document Lend() 
    { 
     throw new NotImplementedException(); 
    } 
} 
public class Review:Document 
{ 

} 

나는이 방법은 대여 할 수있는 것은 능력이다로, 문서의 특정 종류 소유 할 수있는, 의미의 좋은 금액을하게 생각합니다.

이 방법은 앞으로 필요할 수있는 다른 유형의 문서를 다루기에 충분히 동적 인 또 다른 이유입니다.

class diagram

+1

해결책은 잘못은 아니지만 UML이 아닙니다. 연결에 연결된 제약 조건을 보여줘야합니다. –

+0

네가 이미 클래스 다이어그램에서 빌릴 수있는 인터페이스 (empruntable)를 가지고 있다는 것을 눈치 챘을 지 모르겠다. 책은 내 인터페이스를 구현했지만 빌려준 것은 복사와 멤버 사이에있다. 그래서 멤버는 메소드 빌리기를 호출 할 수있다. 서류 사본. –

+0

@ThomasKilian 당신은 OCL을 의미합니까? 그것이 내 수업 다이어그램에 나타날 것입니까? –

관련 문제