ПАТТЕРН ПРОЕКТИРОВАНИЯ В ЯЗЫКЕ PYTHON

Заказать уникальный реферат
Тип работы: Реферат
Предмет: Python
  • 30 30 страниц
  • 14 + 14 источников
  • Добавлена 02.02.2020
748 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
1. Введение 3
2.Описание современного процесса создания информаицонных систем. 4
2. Паттерны проектирования 8
3. Паттерн Абстрактная фабрика 15
4. Описание проблемы 17
5. Решение проблемы на основе UML 18
6. Разработка программы на основе UML 21
Литература 24

Фрагмент для ознакомления

Клиент вызывает абстрактный метод создания продукта (САР). Абстрактная фабрика вызывает соответствующие методы всех конкретных фабрик(ССF1-CCF2). Одна из фабрик создаёт конкретный продукт, который и возвращается клиенту. Клиент получает объект с нужными свойствами и методами. Методы, с помощью которых обеспечивается единственность, возвращаемого объекта оставляются на усмотрение разработчика конкретной задачи6. Разработка программы на основе UMLДругой способ использования паттерна Абстрактная фабрика рассмотрим на условном примере. Пусть имеется ресторан быстрого питания, который включает раздачи «Кока колы» и «Пепси колы». Для обеспечения работы расчётного узла необходимо создавать объекты самых разных типов. Диаграмма использования на рисунке 6..Рис. 7 Диаграмма использования приложения 2Диаграмма классов приложения 2 на рисунке 6Рис. 10 Диаграмма классов для кода приложения 2 (Ресторан быстрого питания)Курсивом написаны имена абстрактных объектов. Стрелка в виде треугольника с пунктирной линией означает отношение реализации.КлассAbstractProductвпрограмме не создается. Методы в для его создания в программе есть, но они не создают объекта.Рис. 9 Диаграмма взаимодействия для приложения 2(Ресторан быстрого питания)Механизм взаимодействия в программе другой. Вызывая метод абстрактной фабрики, раздача передаёт свой номер в качестве параметра. Интерфейсный модуль абстрактной фабрики вызывает соответствующую этому номеру конкретную фабрику.Результаты работы программы на расчётном узле на рисунке 9. Речь идёт о комплексном питании, где выбор продуктов один и тот же для всех клиентов.Рис. 10 Результаты запуска программыКод программы приведён в приложении 2 .Выгода от использования паттерна состоит в гибкости программного обеспечения. Если вресторане добавятся ещё два зала, то нам нужно будет добавить два объекта и две конкретных фабрики для новых продуктов.Всё остальное не меняется.Литература1. Альтернативное описание паттернов проектированияРежим доступа:https://www.pvsm.ru/python/149262. Босуэлл Д. Читаемый код, или Программирование как искусство/Д. Босуэлл, Т. Фаучер.-СПБ.:Питер, 2012.-208с.3. Галчёнков О.Н. Технологии компьютерного проектирования /О.Н. Галчёнков.-Одесса: ОНПУ, 2012. - 366с4. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования/Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Джонсон. —СПб: Питер, 2001. — 368 с._5. Ларман К. Применение UMLи шаблонов проектирования. _Ь.: Вильямс, 2004.-624с.6. Любанович Б. Простой Python. Современный стиль программирования.-СПб.: Питер, 2016.-480с.7. ЛясинД.Н. Программирование с использованием объектно-ориентированных шаблонов проектирования/ Д.Н. ЛясинюВолгоград:ВГТУ, 2017.-19с.8. Мак-КолмС. Д.Элементарные шаблоны проектирования/ Смит, Джейсон Мак-Колм. — М. : ООО “И.Д. Вильямс”, 2013. —304 с.9. Паттерны проектирования без ООП.Режим доступа:https://habr.com/ru/post/184156/10. Паттерны проектирования и их представление в нотации UMLРежим доступа:https://www.intuit.ru/studies/courses/32/32/lecture/1026?page=111. Паттерны проектирования и их поддержка в языке UML.Режим доступа:https://studfiles.net/preview/6198824/page:2/12. Саммерфельд М. Pythonна практике.-М.: ДМК Пресс, 2011-332с.13. Обзор паттернов проектирования.Режим доступа:http://citforum.ru/SE/project/pattern/14. Описание образцов проектирования на UMLРежимдоступа:http://uml3.ru/library/design_patterns/design patterns.htmlПриложение 1Листинг 1Шаблон прецедента «Абстрактная фабрика» """ Предоставляетметоды для создания семейств связанных или не связанных объектов без указания их конкретных классов. """importabc""" Подключаем библиотеку для работы с абстрактными объектами """class AbstractFactory(metaclass=abc.ABCMeta):""" Класс «Абстрактнаяфабрика» """ @abc.abstractmethoddefcreate_product_a(self):"""Абстрактный метод создания продукта а """pass @abc.abstractmethoddefcreate_product_b(self):"""Абстрактный метод создания продукта b """Pass# Иногда абстрактные методы называют интерфейсамиclass ConcreteFactory1(AbstractFactory):"""Класс«Конкретнаяфабрикаобъектов 1»."""defcreate_product_a(self):"""Конкретный метод создания продукта а """return ConcreteProductA1()defcreate_product_b(self):"""Конкретный метод создания продукта b """return ConcreteProductB1()class ConcreteFactory2(AbstractFactory):""" «Класс Конкретная фабрика объектов 2». """defcreate_product_a(self):"""Конкретный метод создания продукта а """return ConcreteProductA2()defcreate_product_b(self):"""Конкретный метод создания продукта b """return ConcreteProductB2()classAbstractProductA(metaclass=abc.ABCMeta):""" Абстрактный класс «Продукта а». """ @abc.abstractmethodclass ConcreteProductA1(AbstractProductA):""" Конкретныйкласс «ПродуктА1» """class ConcreteProductA2(AbstractProductA): """ Конкретныйкласс «ПродуктА2» """classAbstractProductB(metaclass=abc.ABCMeta):""" АбстрактныйпродуктВ """ @abc.abstractmethodclassConcreteProductB1(AbstractProductB): """ Конкретныйкласс «ПродуктВ1» """classConcreteProductB2(AbstractProductB):""" Конкретныйкласс «ПродуктB2» """defmain():""" Код выполняется в качестве основной программы """for factory in (ConcreteFactory1(), ConcreteFactory2()):product_a = factory.create_product_a()product_b = factory.create_product_b()if __name__ == "__main__":main()Приложение 2Листинг 2Программа создания заказов на еду и напиток"""Предоставляет методы для создания связанных или не связанных объектов"""classAbstractFactory(object):# Класс «Абстрактнаяфабрика»defcreate_drink(self):# Абстрактныйметод «Напиток»raiseNotImplementedError()defcreate_food(self):# Абстрактныйметод «Еда» raiseNotImplementedError()# Иногдаабстратные методы называют интерфейсамиclassDrink(object):# Конкретный класс «Напиток» def __init__(self, name):# Конструкторклассаself._name = namedef __str__(self):# Имяклассаreturnself._nameclass Food(object):# Конкретныйкласс «Еда» def __init__(self, name):# Конструкторклассаself._name = name # Имяклассаdef __str__(self):returnself._nameclass ConcreteFactory1(AbstractFactory):# Конкретнаяфабрика 1 defcreate_drink(self): # Создатьнапитокreturn Drink('Coca-cola')defcreate_food(self):# Создатьедуreturn Food('Hamburger')class ConcreteFactory2(AbstractFactory):# Конкретнаяфабрика 2 defcreate_drink(self):# Создатьнапитокreturn Drink('Pepsi')defcreate_food(self):# Создатьедуreturn Food('Cheeseburger')defget_factory(ident):# Вызовфабрикиifident == 0:return ConcreteFactory1()elifident == 1:return ConcreteFactory2()# Вызовфабрикииеёметодовfactory = get_factory(0)print('Перваяфабрика ')print(factory.create_drink()) print(factory.create_food() )print('Втораяфабрика ')factory = get_factory(1)print(factory.create_drink()) print(factory.create_food() )# CheeseburgerРезультатызапускапрограммыпредставленынарисунке6.

Литература
1. Альтернативное описание паттернов проектирования
Режим доступа:
https://www.pvsm.ru/python/14926
2. Босуэлл Д. Читаемый код, или Программирование как искусство/Д. Босуэлл, Т. Фаучер.-СПБ.:Питер, 2012.-208с.
3. Галчёнков О.Н. Технологии компьютерного проектирования / О.Н. Галчёнков.- Одесса: ОНПУ, 2012. - 366с
4. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования/Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Джонсон. —
СПб: Питер, 2001. — 368 с.
_5. Ларман К. Применение UML и шаблонов проектирования. _Ь.: Вильямс, 2004.-624с.
6. Любанович Б. Простой Python. Современный стиль программирования.-СПб.: Питер, 2016.-480с.
7. Лясин Д.Н. Программирование с использованием объектно-
ориентированных шаблонов проектирования/ Д.Н. ЛясинюВолгоград:ВГТУ, 2017.-19с.
8. Мак-КолмС . Д.Элементарные шаблоны проектирования/ Смит, Джейсон Мак-Колм. — М. : ООО “И.Д. Вильямс”, 2013. —304 с.
9. Паттерны проектирования без ООП.
Режим доступа:
https://habr.com/ru/post/184156/
10. Паттерны проектирования и их представление в нотации UML
Режим доступа:
https://www.intuit.ru/studies/courses/32/32/lecture/1026?page=1
11. Паттерны проектирования и их поддержка в языке UML.
Режим доступа:
https://studfiles.net/preview/6198824/page:2/
12. Саммерфельд М. Python на практике.-М.: ДМК Пресс, 2011-332с.
13. Обзор паттернов проектирования.
Режим доступа:
http://citforum.ru/SE/project/pattern/
14. Описание образцов проектирования на UML
Режим доступа:
http://uml3.ru/library/design_patterns/design patterns.html




Вопрос-ответ:

Что такое паттерн проектирования?

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

Какой паттерн проектирования будет рассмотрен в статье?

В статье будет рассмотрен паттерн "Абстрактная фабрика".

Какова основная проблема, решаемая паттерном "Абстрактная фабрика"?

Основная проблема, решаемая паттерном "Абстрактная фабрика", заключается в том, чтобы создать фабрики, которые группируют объекты с общим интерфейсом, но имеющие разные реализации.

Каким образом паттерн "Абстрактная фабрика" решает проблему?

Паттерн "Абстрактная фабрика" предлагает создание абстрактного класса фабрики, который определяет интерфейс для создания отдельных продуктов. Затем создаются конкретные фабрики, которые реализуют этот интерфейс и создают конкретные продукты.

Какие современные процессы используются при создании информационных систем?

Современные процессы создания информационных систем включают в себя общие этапы, такие как анализ требований, проектирование системы, разработка, тестирование и внедрение. Зачастую применяются гибкие методологии разработки, такие как Scrum или Agile, которые позволяют быстро реагировать на изменения и внедрять новые функциональности.

Что такое паттерны проектирования?

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

Каким образом паттерн "Абстрактная фабрика" решает проблему?

Паттерн "Абстрактная фабрика" позволяет создавать семейства взаимосвязанных объектов, не привязываясь к их конкретным классам. Он решает проблему создания объектов с определенными свойствами, но без привязки к конкретным реализациям.

Какие преимущества предоставляет использование паттерна "Абстрактная фабрика" в разработке на основе UML?

Использование паттерна "Абстрактная фабрика" в разработке на основе UML позволяет достичь высокой гибкости и расширяемости системы. Он обеспечивает независимость клиента от конкретных классов продуктов, а также упрощает добавление новых фабрик и продуктов в систему. При использовании UML можно визуализировать связи между классами и понять структуру системы.

Как происходит разработка программы на основе UML с использованием паттерна "Абстрактная фабрика"?

Разработка программы на основе UML с использованием паттерна "Абстрактная фабрика" включает создание абстрактной фабрики и конкретных фабрик, которые реализуют создание продуктов. Затем клиент вызывает абстрактный метод создания продукта, а абстрактная фабрика вызывает соответствующие методы всех конкретных фабрик. Таким образом, программа использует абстрактную фабрику для создания объектов, без явного указания их конкретных классов.