Подтвердить что ты не робот

Как подойти к таким проблемам проектирования, как "дизайн торгового автомата",

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

Спасибо.

4b9b3361

Ответ 1

Я не уверен, что любой общепринятый набор шагов, но самая простая вещь - просто сломать каждый шаг, насколько сможете.

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

Затем вы можете скомпоновать диаграммы последовательности и диаграмму классов из того, что вы придумали.

Ответ 2

Ну, торговый автомат в основном является конечным автоматом.

Я бы определил, какими будут действительные входные данные (монеты и счета?) и какие будут результаты.

Каковы вероятные результаты от пользователя, идущего к машине. Какие проблемы могут возникнуть? (слишком много денег, слишком мало денег). Как они будут обрабатываться? (отказаться от изменения, отказаться от возмещения)

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

Ответ 3

В общем, подумайте о том, какие объекты задействованы в торговом автомате:

  • VendingMachine - возможно, абстрактный класс
  • DrinkMachine, SnackMachine и классы, расширяющие VendingMachine
  • VendingProduct - абстрактный класс?
  • Drink, другие классы, расширяющие VendingProduct
  • Coke, другие классы, расширяющие Drink
  • & c, & c.

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

Дальнейшее чтение:

  • Здесь - хорошая статья о начале разработки ООП, Аллен Голуб.
  • Здесь - это начало дизайна кофеварки с использованием ООП.

Ответ 4

Я предполагаю, что вы уже видели эту ссылку.

Не думайте сначала о коде (классы, и). Подумайте о случаях использования и функциональных требованиях. Какую функциональность должен предоставить торговый автомат? Как пользователи должны взаимодействовать с ним? Как насчет сопровождающих? Старайтесь не путать детали реализации с высоким уровнем потребностей при этом.

Затем, в зависимости от типа проекта class, задумайтесь о нефункциональных требованиях. Какой самый важный атрибут: скорость, надежность, простота обслуживания, адаптируемость к новым ситуациям, безопасность,...? Есть и другие возможности. Это не бинарные, да/нет ответы, больше думайте о диапазонах и минимальных стандартах в сравнении с оптимальными целями. Обратите внимание: "оптимальный" зависит от перспективы заинтересованной стороны. Простота использования и безопасности часто конфликтуют, поэтому вам нужно выяснить, что более важно.

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

Затем вы можете приступить к проектированию машины.

Существует множество различных диаграмм, которые вы можете использовать, чтобы помочь вам визуализировать проблему или объяснить предлагаемое решение другим.

Ответ 5

начать с определения "машины поставщика":

Поставщик - это машина, которая.....

вуаля! там ваши требования.

Ответ 6

Для некоторых проблем (например, торгового автомата) его можно решить с помощью объектно-ориентированного проектирования с помощью State Machine.

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

Для классов в торговом автомате должны быть некоторые кнопки для указания номера строки (A, B, C) и столбца (1, 2, 3), некоторые кнопки для очистки, отмены или отправки номеров строк и столбцов, некоторых слотов (оплата наличными, монета, кредитная/дебетовая карта), некоторые слоты для хранения предметов (напитки, закуски и т.д.).

Обратитесь к блогу

Ответ 7

Эти мысли могут помочь:

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

Решите, как это хорошо выглядеть.

Как долго он должен работать (срок службы).

Как часто это нужно для пополнения запасов?

Ответ 8

Существует не только один правильный способ разработки всего программного обеспечения с нуля!

Есть, вероятно, десятки различных подходов, начиная от очень небольшого начального дизайна, такого как Evolutionary Design до Big Up Front Design, который был записан в Август 2005 г. на JoelOnSoftware. Вероятно, существует более чем несколько промежуточных методов, которые имеют свое место, поэтому это зависит от того, какую методологию разработки вы хотите использовать, поскольку некоторые из них могут потребовать больше авангардного дизайна, например, в стиле Waterfall, по сравнению с чем-то более гибким, где требования могут регулярно меняться, Это вызывает множество проблем или, по крайней мере, это теория.

Ответ 9

Подходить к таким проблемам

  • Идентифицируйте требования, функциональность usecase

  • Разбить эти требования на тривиальные и основные задачи

  • Определите проблемы и проблемы, с которыми может столкнуться пользователь, и с точки зрения системы. все недействительные scnearios. а также требования, такие как производительность, безопасность, надежность.
  • Определите решение для всех проблем и проблем, перечисленных ниже.
  • отмечают все существительные как классы и глаголы и действие как метод. также определить публичные интерфейсы для класса, основанные на том, как классы будут взаимодействовать друг с другом и с внешними участниками.
  • основываясь на сценарии и проблеме, попробуйте применить любой шаблон дизайна, если вы их знаете. (просто добавьте, чтобы показать свои знания о шаблонах дизайна).
  • представить свой дизайн с помощью диаграмм использования диаграмм диаграмм классов и т.д.

и определенно задайте много вопросов, чтобы очистить требования