如何让用户只借书而不复习?

How do I get user to only borrow copies of books and not review?

所以我在图书馆管理系统上工作,我有这个文件 class 可以是书(livre)类型或评论(revue),每个文件只有很少的副本,并且只允许用户借书的副本而不是评论的副本,除了制作两份副本(示例)class,我找不到任何其他方法,一份用于书本,另一份用于评论。 提前致谢。

我会做类似的事情:

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
{

}

我觉得这种方式很有道理,能借是一种能力,特定种类的文献可以拥有。

这种方式足够动态以涵盖您可能需要的其他未来类型文档的另一个原因。

为什么不是两个 classes:书籍和评论。 (请告诉你的老师,class 名字最好使用英语并避免重音:我从未在代码中看到 classes 名字带有重音)

我会更改 Copy 和 Document 之间关联的方向。我知道那是 Document 是文档的官方参考。它可以是一个标准化的,并且可以在世界上所有的图书馆中都是一样的:它的作用不是管理副本。

你会得到很多既没有属性也没有方法的 classes:它们可以用简单的枚举代替。

那么下面的模型说明一个用户只能借书。此解决方案避免使用 OCL。即使 OCL 可能是个好主意:它简化了模型,但增加了 OCL 规则的复杂性。