그래서 도서관 관리 시스템에서 일하고 있는데 책 (리브르) 유형 또는 리뷰 (검토) 일 수있는이 문서 클래스가 있으며 각 문서에는 사본이 거의없고 사용자는 책의 복사본 만 빌릴 수 있으며 리뷰의 두 가지 사본 (예시) 수업을 책과 기타 리뷰로 만드는 것 외에 다른 방법을 찾을 수 없었습니다. 미리 감사드립니다. 사용자는 서적 만 빌리고 리뷰를받지 못하게하려면 어떻게해야합니까?
답변
왜 두 개의 클래스 : 도서 및 검토. (클래스 이름에 영어를 사용하고 악센트를 피하는 것이 더 낫다는 것을 교사에게 말해주십시오 : 코드에서 억양이있는 클래스 이름을 보지 못합니다.)
카피와 문서 사이의 연관 방향을 바꿀 것입니다. 나는 문서가 문서의 공식 참조임을 이해했다. 그것은 표준화 된 것이 될 수 있으며 세계의 모든 librairies에서 동일 할 수 있습니다 : 그것의 역할은 사본을 관리하는 것이 아닙니다.
속성이나 메소드가 없어도 많은 클래스를 얻을 수 있습니다. 단순한 열거로 바꿀 수 있습니다.
다음 모델은 사용자가 책 만 대여 할 수 있음을 보여줍니다. 이 솔루션은 OCL 사용을 방지합니다. OCL이 좋은 아이디어 일지라도 모델을 단순화하지만 OCL 규칙의 복잡성을 추가합니다.
안녕하세요 속성과 메서드가없는 클래스에 대한 @granier, 그냥 내 다이어그램 클래스 사인을 멈추게 stoppoed 내가 문서/복사 문제에 갇혀있어, 난 정말 borrowableCopy 및 unborrowableCopy 클래스를 피하고 싶었지만 다른 사람이 없다고 생각합니다. 길 주위에, 고마워. –
내가 좋아하는 일을 할 것입니다 :
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
{
}
나는이 방법은 대여 할 수있는 것은 능력이다로, 문서의 특정 종류 소유 할 수있는, 의미의 좋은 금액을하게 생각합니다.
이 방법은 앞으로 필요할 수있는 다른 유형의 문서를 다루기에 충분히 동적 인 또 다른 이유입니다.
해결책은 잘못은 아니지만 UML이 아닙니다. 연결에 연결된 제약 조건을 보여줘야합니다. –
네가 이미 클래스 다이어그램에서 빌릴 수있는 인터페이스 (empruntable)를 가지고 있다는 것을 눈치 챘을 지 모르겠다. 책은 내 인터페이스를 구현했지만 빌려준 것은 복사와 멤버 사이에있다. 그래서 멤버는 메소드 빌리기를 호출 할 수있다. 서류 사본. –
@ThomasKilian 당신은 OCL을 의미합니까? 그것이 내 수업 다이어그램에 나타날 것입니까? –
- 1. 검색 엔진 만 데이터를 가져 오지만 다른 사용자는 가져 오지 못하게하려면 어떻게해야합니까?
- 2. QueryString을 변경하지 못하게하려면 어떻게해야합니까?
- 3. R이 패키지를로드하지 못하게하려면 어떻게해야합니까?
- 4. 출력을 인쇄하지 못하게하려면 어떻게해야합니까?
- 5. 사용자가 서버의 파일에 액세스하지 못하게하려면 어떻게해야합니까?
- 6. 사용자는 현명한 계약을 어떻게해야합니까?
- 7. namedtuple을 실제로 변경하지 못하게하려면 어떻게해야합니까?
- 8. 정규식에서 기간을 검색하지 못하게하려면 어떻게해야합니까?
- 9. 사용자가 동시에 두 버튼을 누르지 못하게하려면 어떻게해야합니까?
- 10. 사용자가 DataGridViewComboBoxCells에 데이터를 입력하지 못하게하려면 어떻게해야합니까?
- 11. CWnd가 포커스를 얻지 못하게하려면 어떻게해야합니까?
- 12. 사람들이 페이지에 로그인하지 못하게하려면 어떻게해야합니까?
- 13. WPF에서 스타일을 재정의하지 못하게하려면 어떻게해야합니까?
- 14. 클래스 속성을 변경하지 못하게하려면 어떻게해야합니까?
- 15. 브라우저가 쿠키를 저장하지 못하게하려면 어떻게해야합니까?
- 16. pagedown에서 이미지를 표시하지 못하게하려면 어떻게해야합니까?
- 17. 변수를 잠시 보지 못하게하려면 어떻게해야합니까?
- 18. 콘텐츠에 직접 액세스하지 못하게하려면 어떻게해야합니까?
- 19. 특정 엔티티를 삭제하지 못하게하려면 어떻게해야합니까?
- 20. IIS7에서 HttpHandlers를 사용하지 못하게하려면 어떻게해야합니까?
- 21. .NET에서 창을 표시하지 못하게하려면 어떻게해야합니까?
- 22. IIS7이 쿠키를 삭제하지 못하게하려면 어떻게해야합니까?
- 23. svn에서 디렉토리를 변경하지 못하게하려면 어떻게해야합니까?
- 24. ActiveRecord가 DB에 쓰지 못하게하려면 어떻게해야합니까?
- 25. ImageChops.offset에서 데이터를 래핑하지 못하게하려면 어떻게해야합니까?
- 26. Maven 종속성을 "상속받지"못하게하려면 어떻게해야합니까?
- 27. 라이트 박스를 스크롤하지 못하게하려면 어떻게해야합니까?
- 28. 옥타브가 sigsegv를 잡지 못하게하려면 어떻게해야합니까?
- 29. Cassandra가 TFastFramedTransport를 사용하지 못하게하려면 어떻게해야합니까?
- 30. SparkViewEngine의 {!}을 렌더링하지 못하게하려면 어떻게해야합니까?
부울 속성 (Canbeborrowed)을 추가하지 않는 이유는 무엇입니까? –
감사합니다 yahya, 나는이 아이디어가 있었지만, 회원 (adhérent)과 사본 (exampleaire) 사이의 협회 (빌림)의 의미를 망칠 수는 없습니다. 회원은 사본을 빌려야합니다. 그러면 괜찮은지 테스트해야합니다. isn 차용 할 수있는 문서를 다른 사람들과 구분할 수있는 또 다른 방법이 있습니까? –