Форум Сообщества Аналитиков

×


Игра "Дурак"(Прочитано 44236 раз)
Re: Игра "Дурак" Ответ #15 : 05 Января 2014, 16:27:26
Я бы для начала убрал все лишние методы, оставил только классы и атрибуты
сделал как вы рекомендовали



Re: Игра "Дурак" Ответ #16 : 05 Января 2014, 16:33:27
Хм. Задание довольно однозначно говорит, что делать. Правда, не совсем ясно как, это должно быть отражено в методических указаниях. Ну весьма странно требовать что-то не давая примеров.

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

Я бы начал с описания процесса игры, а дальше постарался распределить функции (действия) по классам. Получится ли при этом иерархия классов, пока мне не совсем ясно. Это будет ясно после проведения анализа и построения первичной модели классов.

При этом классы так или иначе разделятся на те, которые представляют суть предметной области (т.е. игры в дурака) и те, которые будут являться программными классами: формы, контроллеры, диспетчеры и т.п.



Re: Игра "Дурак" Ответ #17 : 05 Января 2014, 16:44:44
Хм. Задание довольно однозначно говорит, что делать. Правда, не совсем ясно как, это должно быть отражено в методических указаниях. Ну весьма странно требовать что-то не давая примеров.

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

Я бы начал с описания процесса игры, а дальше постарался распределить функции (действия) по классам. Получится ли при этом иерархия классов, пока мне не совсем ясно. Это будет ясно после проведения анализа и построения первичной модели классов.

При этом классы так или иначе разделятся на те, которые представляют суть предметной области (т.е. игры в дурака) и те, которые будут являться программными классами: формы, контроллеры, диспетчеры и т.п.
собственно всё и дело в том, что какие либо методические указания отсутствуют, ровно так же, как и примеры. Я процитировал вам всё, что было в инструкции
Оцените пожалуйста мой предыдущий пост. Хочется знать, в нужном ли направлении я двигаюсь
« Последнее редактирование: 05 Января 2014, 17:00:05 от Кротяка »



Re: Игра "Дурак" Ответ #18 : 05 Января 2014, 17:18:35
сделал как вы рекомендовали
Не, то что сделано - в топку.
Давай начнем пока с классов предметной области.
1. Нужен ли нам класс Колода? Какую функцию он будет выполнять? Выступать хранилищем карт и следить за тем чтобы все карты были разные, чтобы раздавались уникальные карты, будет отвечать за козыря, за порядок карт в колоде перед раздачей и в ходе игры, будет отвечать за цвет и дизайн рубашки - годится?

2. Колода состоит из карт (т.е. если ты рисуешь композицию, то она ромбом направлена на колоду). Нужно указать что колода состоит из Карт от 36 до 52, при этом рядом с Карта нужно поставить модификатор {set}, т.е. все карты уникальны.

3. Связи обобщения у тебя использованы некорректно. Т.е. неправильно. Полый треугольник говорит - "это".
Т.е. Игра - это Параметры, Игрок - это Игра, Карта - это Игрок. Звучит явно странно. Я бы пока не трогал обобщение, обобщать начнешь позже. Пока только ассоциации.

4. Игра - включает от 2 до 6 игроков (если колода 52 карты до 8). Чем могут отличаться игроки? Ты говори, что одни реальный, другие компьютерные. Это уже сигнал для некоторого выделения общих понятий в абстрактный класс Игрок. Но не спешим.
Игра включает колоду карт (одна кстати не измена), и распределение этих карт по игрокам. Т.е. Игрок имеет на руках карты. Сколько и какие карты - эту информацию следует хранить. При этом часть карт будут на руках, часть карт в колоде, часть карт в отбое, часть карт в ходе. Всю эту информацию нужно хранить и отображать на экране в процессе игры. Игра будет иметь также тип (определяя набор правил)

5. Каждая карта должна характеризоваться: Мастью, Номиналом. В ходе Игры карта - козырь или не козырь, на руках у игрока, в колоде или в отбое.

Пока у нас есть класс Игра, Игрок, Колода, Карта. Вполне допускаю, что они трансформируются в какие-то визуальные классы, ты же ведь игру будет визуализировать.

Но пока диаграмма новая гораздо хуже исходной.



Re: Игра "Дурак" Ответ #19 : 05 Января 2014, 21:49:02
целью курсового является проектирование системы, после чего выполняется ОО разработка приложения
Вот собственно задание для разработки диаграммы классов:
Найти сущности, для которых можно выделить базовый и производный классы. Привести описание базовой (абстрактной) сущности и производных сущностей, указать отличительные черты производных сущностей между собой. Создать иерархию классов, определить базовый и производный классы.
При выполнении работы учесть следующие требования:
•выделить общие методы производных классов, описать их в отдельной таблице;
•предусмотреть  хранение объектов иерархии;
•показать на диаграмме классов иерархию классов и связи между классами;
•сгенерировать код по разработанной диаграмме.
Есть ощущение что преподаватель не постарался подобрать задачу таким образом, чтобы выстраивание иерархий и прочие "прелести" естественным образом ложились в решение без притягивания "за уши".
И еще... Генерировать код по одной диаграмме классов это занятие с сомнительной полезностью. Нужно как проработать поведенческую часть системы (варианты использования и диаграммы последовательности)



Re: Игра "Дурак" Ответ #20 : 06 Января 2014, 03:03:52
Есть ощущение что преподаватель не постарался подобрать задачу таким образом, чтобы выстраивание иерархий и прочие "прелести" естественным образом ложились в решение без притягивания "за уши".
И еще... Генерировать код по одной диаграмме классов это занятие с сомнительной полезностью. Нужно как проработать поведенческую часть системы (варианты использования и диаграммы последовательности)
Ну собственно я ничего не могу исправить. Никаких объяснений либо указаний от преподавателя по этому поводу не следовало. Есть задача и её необходимо выполнить. И преподавателя не волнует как я это буду делать.



Re: Игра "Дурак" Ответ #21 : 06 Января 2014, 13:33:11
Ну собственно я ничего не могу исправить. Никаких объяснений либо указаний от преподавателя по этому поводу не следовало. Есть задача и её необходимо выполнить. И преподавателя не волнует как я это буду делать.
Тогда делай как понимаешь. Ну или как учили. Как-то ведь учили? Вариантов реализации-то ведь много, одну ты уже предоставлял примерно.
Правда, у меня есть вопрос: ты предлагаешь до 5 компьютерных игроков и 1 реальный. Интересно, а каков будет алгоритм выбора карт для хода или отбоя - там же много разных моментов может возникнуть.



Re: Игра "Дурак" Ответ #22 : 06 Января 2014, 15:33:02
С диаграммой классов немножко подождём. Оцените сделанную мной ДВИ на эту же тему



Re: Игра "Дурак" Ответ #23 : 06 Января 2014, 18:39:54
С диаграммой классов немножко подождём. Оцените сделанную мной ДВИ на эту же тему
Я думаю у тебя должен быть один ВИ  - играть в игру, можно сделать уточнение через Играть в простого дурака и т.д.
Все остальные шаги сами по себе не имеют значения.

Просто ты взял и представил некоторую декомпозицию в виде диаграммы ВИ. А это не хорошо. В твоем случае (возможно) отдельными ВИ были бы: регистрация игроков, настройка поведения игроков, загрузка рубашек карт, редакция правил игры, сохранить промежуточные результаты игры (чтобы например вернуться и доиграть)

Т.к. ВИ - это некоторый процесс, проводящий к определенному результату, то при игре в дурака - результат - ничья, проигрыш или выигрыш. Ведь ты же не будет использовать систему, чтобы просто сделать ход, или просто выбрать тип игры. Все эти шаги ты выполняешь в ходе ВЫПОЛНЕНИЯ игры.

Вот описание процесса игры (по самым ключевым позициям) куда как более важно для реализации. А описание процесса можно выполнить в виде сценария ВИ, с помощью диаграммы деятельности, с помощью диаграмма состояния, с помощью диаграммы последовательности.

Но нужны ли они тебе для курсовой? В смысле чтобы они были в курсовой записке? Если нет, то сосредоточься на результате. Но диаграммы помогут общаться с аудиторией.



Re: Игра "Дурак" Ответ #24 : 06 Января 2014, 19:25:06
Я думаю у тебя должен быть один ВИ  - играть в игру, можно сделать уточнение через Играть в простого дурака и т.д.
Все остальные шаги сами по себе не имеют значения.

Просто ты взял и представил некоторую декомпозицию в виде диаграммы ВИ. А это не хорошо. В твоем случае (возможно) отдельными ВИ были бы: регистрация игроков, настройка поведения игроков, загрузка рубашек карт, редакция правил игры, сохранить промежуточные результаты игры (чтобы например вернуться и доиграть)

Т.к. ВИ - это некоторый процесс, проводящий к определенному результату, то при игре в дурака - результат - ничья, проигрыш или выигрыш. Ведь ты же не будет использовать систему, чтобы просто сделать ход, или просто выбрать тип игры. Все эти шаги ты выполняешь в ходе ВЫПОЛНЕНИЯ игры.

Вот описание процесса игры (по самым ключевым позициям) куда как более важно для реализации. А описание процесса можно выполнить в виде сценария ВИ, с помощью диаграммы деятельности, с помощью диаграмма состояния, с помощью диаграммы последовательности.

Но нужны ли они тебе для курсовой? В смысле чтобы они были в курсовой записке? Если нет, то сосредоточься на результате. Но диаграммы помогут общаться с аудиторией.
все эти диаграммы нужны мне для курсового проекта.
Т.е. даже следующий результат будет неправильным?



Re: Игра "Дурак" Ответ #25 : 06 Января 2014, 20:10:26
Ход мыслей твоих понятный. Ты реализуешь функциональную декомпозицию в стиле такой диаграммы. Судя по тому как ты ее активно используешь, может так вас и учат?

Окей.
1. Начать игру в принципе нормально. Что будет результатом начала игры?
- определим тип дурака
- определим число игроков
- раздадим карты
- определим козырь
- определим кто будет ходить первым

Ты все это выделили в отдельные ВИ, правильно ли? Например мы используем твое приложение для того, чтобы определить тип игры? Вроде нет, это часть ВИ Начать игру, ты не случайно все части приинклюдил. Потому вывод:
Оставляем только ВИ Начать игру, а все инклюды убираем (они внутри как шаги ВИ будут описываться).

2. Сделать очередной ход, при этом тут один нападает, другой отбивается, третий подбрасывает. Ход закончится добором карт или определением вышедшего из игры.

Никаких эксендов и инклюдов. Возможно в ходе реализации появится еще что-то. Я бы начал с этого.

Далее можно или описать каждый ВИ (его сценарии), или изобразить их в виде диаграммы деятельности, или диаграммы последовательности. Да запиши последовательность действий в стиле Пользователь делает Система отвечает, будет понятен процесс и необходимые сущности.
Может у тебя есть идея как будет выглядеть программа - нарисуй, полезно. Такую иллюстрацию кадров игры.

Дополнительно можно описать диаграмму автомата игрока и игры в целом. А можно не делать.

Уточни что конкретно сказано по заданию курсовой.




Re: Игра "Дурак" Ответ #26 : 06 Января 2014, 21:29:08
Полностью задание на курсовую выглядит следующим образом:
- На основании описания предметной области выделить основные функции рассматриваемой подсистемы. Разработать в среде Enterprise Architect диаграмму Вариантов Использования (Use Case Diagram).
- Детально проанализировать выполнение каждой функции системы, описать для каждой функции основной поток событий. Выделить основные сущности, взаимодействующие между собой, выделить события и ответственности сущностей проектируемой системы. Построить Диаграмму Последовательности.
- Разработать иерархию классов рассатриваемой задачи. Проанализировать сущности системы, построить иерархию наследования и агрегации классов на диаграмме классов (Class Diagram).
- Разбить классы на три группы (Граничные, Управляющие и Сущности).
- Выделить из множества классов системы два класса, которые имеют сложную логику поведения. Для двух выделенных классов описать события, которые влияют на состояния этого класса, определить правила переходов из одного состояния в другое. Построить диаграмму состояний (State Diagram) для этих классов.
- Согласовать 2-3 деятельности (предусловия для варианта использования, операция класса), которые требуют детальной проработки. Разработать для них диаграммы деятельности (Activity Diagram).

Упростил свою диаграмму до следующей:



Re: Игра "Дурак" Ответ #27 : 06 Января 2014, 22:01:17
А задание-то  множится ;)

Не скажу, что так стало круче и понятнее. Почему, потому что реально не хватает требований, а следовательно, или ты в праве их додумывать, или недостаточно корректно работаешь с исходным описанием задачи.

Предположим - это первое. Видимо предметную область вы выбираете сами.

Что в этой диаграмме несколько не понятно.
1. Зарегистрироваться. Куда, кому, зачем? Компьютеру тоже нужно регистрироваться? Вообще как происходит определение игроков в игре? А зачем регистрироваться игроку-человеку? Игра ведь только с компьютером. Пусть перед началом игры происходит запрос имени игрока-человека, вот ничего и регистрировать не надо.

2. Установить параметры. Где? Для чего, зачем? Компьютер тоже устанавливает параметры? Или это делает Игрок-человек, а если я установил параметры но не играю, я кто? Я могу быть этим установщиком параметров? У меня жена вот блондинка, играть любит в дурака, а вот устанавливать параметры так и не научилась :)

3. Играть в игру. Ну мы к этому вновь пришли, только Играть в игру - будет абстрактным ВИ, а остальные в простого, подкидного переводного - уточнения. Т.е. отношение не экстенд, а расширение generalization

4. Сохранить промежуточные результаты кто может? Видимо только Игрок-человек?

5. Игрок-компьютер разве это не часть разрабатываемой тобой программы? Или это будет реально отдельная программа? Если нет, то может не стоит его выделать как сущность - он только по-моему путается.

Как предложение. Все-таки исходный вариант: Начать игру и Выполнить очередной ход мне нравился больше.
Начать игру - это собственно выполнить все подготовительные действия, в том числе и число конов, если нужно. При этом все делает Игрок (ну или некий установщик): определяет тип игры, сколько игроков от компьютера будет, может выберет их из банка персонажей например или задаст случайный выбор (мало ли может ты на раздевание любишь играть)

Выполнить очередной ход. Тут можно добавить роли: Игрок-нападающий, Игрок-отбивающийся, впрочем можно и не парится.  Главное понять человечек - это не реальный пользователь, это абстрактная роль, которую возможный пользователь играет в процессе ВИ (инициирует и является главным получателем двигателем результата)

Сохранить промежуточные результаты или лучше незавершенную игру, тогда появится Загрузить сохраненную неоконченную партию (к примеру)

А вот регистрацию я бы убрал, Не ясны мне параметры и просто Играть в игру в таком контексте.

Далее у тебя будет 2, 3 или 4 варианта использования, думаю пока достаточно. Теперь бери самые ценные и пиши для них основные потоки, как предложено в задании.  Вытащим Сущности и построим Диаграмму последовательности.

Вариантов много конечно, но давай попробуй тот, который тебе ближе к сердцу.



Re: Игра "Дурак" Ответ #28 : 06 Января 2014, 23:19:21
Вариантов много конечно, но давай попробуй тот, который тебе ближе к сердцу.
пробую



Re: Игра "Дурак" Ответ #29 : 07 Января 2014, 00:15:37
Тебе, конечно, кажется, что так диаграмма выглядит солидно. Столько овальчиков. Не то, что просто 4. Но все расширения я бы убрал, потому как уточнения читаются: Установить параметры - это Начать игру, Простой дурак - это Начать игру, но ведь куда как проще записать это прямо в сценарии Начать игру.

Но не буду переубеждать. Советую лишь сделать немного иначе. Установить параметры - убери вообще. Начать игру - сделать абстрактным, а там где у тебя типы игр, все-таки напиши Начать играть в простого дурака, Начать играть в подкидного дурака и т.д.
Просто ВИ именуются отглагольной фразой или глагольной фразой, а не существительным.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19