У меня есть экзамен в течение нескольких часов, и я пытаюсь решить для него типовые вопросы. Я не мог найти решение следующего вопроса.UML Class Diagram for Strategy Pattern
рисовать диаграмму классов, соответствующую следующей ситуации:
продуктовый магазин (например, супермаркет) продает предметы. Существует два типа предметов: съедобный (т. Е. Любой предмет, который может использоваться как пища) и не съедобный. Некоторые предметы продаются по весу, и некоторые продаются за единицу. Некоторые предметы облагаются налогом, а другие - нет. Некоторые предметы имеют специальные цены при продаже в группах (например, 2 за 3 доллара США). Покупка может содержать много товаров .
В диаграмме классов показаны только классы/абстрактные классы/интерфейсы, ассоциации, и множественности для ассоциаций. Не включайте никаких операций! Четко укажите интерфейсы и абстрактные классы (если есть) в вашем дизайне.
Кроме того, ваш дизайн должен быть таким, как гибкий насколько возможно. В частности, необходимо обратить внимание на следующие моменты:
1) Элемент либо съедобный или нет, и этот факт не меняется в течение всего срока службы данный пункт, в то время как ценовые стратегии могут меняться в течение всего срока службы предмета.
2) Каждая стратегия ценообразования связана с определенным набором операций. Например, для стратегии налоговой, является ли налогооблагаемый элемент, мы можем иметь операцию , которая вычисляет налог (эта функция может затем возвращать 0 для необлагаемых элементов)
3) Хотя набор операции для стратегии ценообразования остаются прежними, способы обработки данных могут меняться со временем. Например, способ расчета налогов на съедобные и не съедобные предметы может отличаться со временем.
4) Несмотря на то, что набор операций для стратегии ценообразования остается неизменным в разных пунктах , мы можем реализовать эти операции различными способами для разных товаров . Например, мы можем рассчитывать налог иначе для апельсинов и яблок.
Я пытался что-то вроде этого, думая, что он может подходить для шаблон стратегии дизайна, но я не уверен, что на всех.
Имеет этот вопрос до сих пор актуальность для вас, или вы можете закрыть этот вопрос? Я думаю, что многие люди, рассматривающие этот вопрос, задают вопрос о необходимости получить ответ? Задавать этот вопрос вам не означает, что я отвечу на вопрос. Моей главной мотивацией является еще одно любопытство: как прошел ваш экзамен? –
Это было не так уж плохо, я получил 80/100. На вопрос, на самом деле, я до сих пор не знаю точного ответа. –
Поздравляем с вашим экзаменом! Если вы все еще хотите получить ответ, вы можете изменить вопрос. Это может помочь. –