2016-05-23 7 views
0

学校では、書く予定のクラスのUMLクラス図を描画する必要があります(計画を立てるべきです)。UMLで複数の同様の属性を契約する

ここでは、クラスGameの属性であり、それぞれ異なる画像を表示するが、すべて同じ目的を果たす10個のJLabelがあります。ラベルを少し明確にするため、ラベルはPlayer1Throw1Player1Throw5Player2Throw1Player2Throw5となります。

私は

Game 
-------- 
-Player1Throw1: JLabel 
-Player1Throw2: JLabel 
-Player1Throw3: JLabel 
-Player1Throw4: JLabel 
-Player1Throw5: JLabel 
-Player2Throw1: JLabel 
-Player2Throw2: JLabel 
-Player2Throw3: JLabel 
-Player2Throw4: JLabel 
-Player2Throw5: JLabel 

言い換えるとを記述する必要はありませんように、これらの10枚のラベルを収縮さUMLでの正しい方法があるかどうか私の質問は、次のとおりです。これらを契約する方法はありますたぶん2行で10行?

ありがとうございました!

+0

のようになります。 –

答えて

0

あなたはUMLで、次の表記法を使用することができます。

を - Player1Throw:JLabelの[5]

- Player2Throw:JLabelの[5]

+0

私はこれらのJLabelの配列を使用してサポートしています。ありがとうございました! – Streusselhirni

0

クラス図からコードを生成できるはずです。すべての属性を別々に定義していない場合、どのようにそれを行うことができますか?あなたがその質問に答えることができるなら、あなたはそれらを表示する方法を知っています。

OOPで設計すると、動作をより抽象的にすることができるかどうかを調べることができます。同様に10個のラベルがある場合は、ジョブを実行できる共有インターフェイスに基づいて別のクラスセットを作成できますか?デザインパターンに潜入する。このような状況のために作られたパターンがあります。

0

はローカル属性のためのグローバル変数を使用しないでください。 コードレベルでは、同じ役割の複数のオブジェクトに対してコレクション(配列、セット、バッグなど)を使用します。

クラスプレーヤー(これはゲームの一部であると理解しています)を定義する必要があります。ゲームクラスにはPlayerタイプの2つのオブジェクトのコレクション(配列?)プレーヤーが含まれている必要があります。 プレイヤーは多重度5の属性スローを持つ必要があります(または、おそらく0..5 - プロジェクトの詳細はわかりませんが、コードレベルではJLabel型のクラス構造にはあまり影響しません)。

このように、あなたのUMLのクラス図は、それらの配列作ってみること

class diagram for answer

+0

私はこれらの2つのクラスを持っています(同じ名前もあります)。私が理解しているとおり、プレイヤーのJLabels属性を作成する必要がありますか? 私はすでにプロジェクトのデッドラインに遭遇しました(これはわずか4週間の小さなプロジェクトです)、GameクラスにすべてのGUI関連の属性を持つことになりました。私はそれはいい解決策ではないと思いますか? – Streusselhirni

+0

はい。また、属性throw1、throw2などを作成しないでください。List(List/Set/Bag/Array/Whatever)のコレクションを使用します。これは、そのようなリストをループする必要があるときに非常に便利ですが、コードの再利用を容易にすることもできます。もちろん、いいえ、GameクラスのすべてのGUI関連の属性を持つことは非常に悪い解決策です(それ専用のクラスを用意する必要があります)。しかし、GUI開発の知識は限られています。 – Ister

関連する問題