2017-12-24 10 views
0

ライブラリ管理システムに取り組んでいます。このドキュメントクラスは、書籍(リヴァー)タイプまたはレビュー(改訂)にすることができます。各ドキュメントにはいくつかのコピーがあり、ユーザーは書籍のコピーのみを借りることができます2つのコピー(模範的な)クラスを本のためのものとレビューのためのものにする以外の方法はありませんでした。 ありがとうございます。ユーザーは書籍のコピーを借りるだけで、レビューはしないようにするにはどうすればよいですか?

class diagram of library

+0

なぜブール属性(Canbeborrowed)を追加しないのですか? –

+0

ありがとうございましたyahya、私はこのアイディアを持っていましたが、会員(adhérent)とコピー(exampleaire)の間の協会(借り)の意味を台無しにするつもりはありません、メンバーはコピーを借りて、借用可能な文書を他の文書と区別する別の方法はありませんか? –

答えて

2

なぜ二つのクラス:ブックとレビュー。 (クラス名にアクセント付きのクラス名は表示されません)アクセントを避けるために英語を使用する方が良いですか教師に教えてください。

私はコピーとドキュメントの間の関連付けの向きを変更します。ドキュメントはドキュメントの正式な参照であると私は理解しました。それは正規化されたものであり、世界のすべてのライブラリで同じである可能性があります。その役割は、コピーを管理することではありません。

属性もメソッドもないクラスは、単純な列挙で置き換えることができます。

次に、次のモデルは、ユーザーが書籍のみを借りることができることを示しています。このソリューションはOCLの使用を避けます。 OCLが良いアイデアであっても、モデルは単純化されますが、OCLルールの複雑さが増します。

class diagram of library

+0

属性とメソッドを持たないクラスのための@granierちょっと私は私のダイアグラムクラスの正直さを止めてしまった私はドキュメント/コピーの問題に巻き込まれてしまったので、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 
{ 

} 

私はこの方法を借りることができることができることであるとして、文書の特定の種類を所有することができ、感覚の良い量になると思います。

この方法では、将来必要となる他の種類のドキュメントを扱うのに十分な動的なもう1つの理由があります。

class diagram

+1

解決策は間違っていませんが、UMLではありません。アソシエーションにリンクされている制約を使って、そのことを示す必要があります。 –

+0

はい、私はすでに私のクラスダイアグラムで借用可能なインタフェース(empruntable)を持っていることにお気づきかもしれませんが、本は私のインタフェースを実装していましたが、借用はコピーとメンバの間にあります。書類のコピー。 –

+0

@ThomasKilianあなたはOCLを意味しますか?それは私のクラス図に表示されますか? –

関連する問題