2016-05-23 2 views
0

В школе мы должны нарисовать диаграмму классов UML для класса, который мы планируем написать (мы должны сделать планирование).Контракт нескольких аналогичных атрибутов в UML

У меня теперь есть 10 JLabels, которые являются атрибутами класса Game, и каждый из них показывает другое изображение, но все они выполняют одну и ту же цель. Чтобы это было немного яснее, этикетки будут называться Player1Throw1 до Player1Throw5 и Player2Throw1 до Player2Throw5.

Мой вопрос, если есть правильный путь в UML сжиматься эти 10 этикетки, так что я не должен писать

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

Или другими словами: Есть ли способ, чтобы заключить контракт эти 10 строк, возможно, 2 строки?

Спасибо за помощь!

+0

Try, чтобы сделать их массивы. –

ответ

0

Вы можете использовать следующие обозначения в UML:

- Player1Throw: JLabel [5]

- Player2Throw: JLabel [5]

+0

Я использую массивы для этих JLabels, поэтому ваше предложение подходит для меня лучше всего. Спасибо! – Streusselhirni

0

Вы должны иметь возможность генерировать код из диаграммы классов. Как вы сможете это сделать, если вы не определяете все атрибуты отдельно? Если вы можете ответить на этот вопрос, вы знаете, как их отображать.

Проектирование в ООП пытается выяснить, можете ли вы сделать поведение более абстрактным. Если у вас 10 одинаковых меток, можете ли вы затем создать другой набор классов на основе общего интерфейса, который также может выполнять эту работу? Погрузитесь в шаблоны проектирования. Для этой ситуации существует шаблон.

0

Не использовать глобальные переменные для локальных атрибутов. На уровне кода используйте коллекции (массивы, наборы, сумки и т. Д.) Для нескольких объектов той же роли.

Вы должны определить класс Player (который, как я понимаю, является частью игры), а класс Game должен содержать игрок (два?) Игрока из двух объектов типа Player. У игрока должен быть атрибут throw с множественностью 5 (или, может быть, 0..5 - я не знаю детали вашего проекта, однако на уровне кода он действительно не влияет на структуру класса) типа JLabel.

Таким образом, ваша диаграмма классов UML будет выглядеть

class diagram for answer

+0

У меня эти два класса (их даже называют одинаковыми). Насколько я понимаю, вы имеете в виду, что я должен использовать атрибуты JLabels для Игроков? Я уже встречал мертвую линию для проекта (это всего лишь небольшой 4-недельный проект), и в итоге у меня были все атрибуты, связанные с GUI, в классе Game. Наверное, это не хорошее решение? – Streusselhirni

+0

Да. Также не создавайте атрибуты throw1, throw2 и т. Д. Используйте какую-то коллекцию (List/Set/Bag/Array/Whatever). Это очень полезно, когда вам нужно зацикливать такой список, но также может сделать повторное использование кода проще. И, конечно же, нет, все атрибуты, связанные с GUI в классе Game, являются очень плохим решением (у вас должны быть классы, посвященные этому), однако мои знания о графическом интерфейсе ограничены. – Ister

Смежные вопросы