Основные шаблоны проектирования

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 18.01.2021
Размер файла 188,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство науки и высшего образования РФ

Пермский национальный исследовательский политехнический университет

Электротехнический факультет

Кафедра «Информационные технологии и автоматизированные системы»

Реферат

по дисциплине: Учебно-исследовательская работа

на тему:

«Основные шаблоны проектирования»

Иванов Иван Иванович

г. Пермь, 2020

СОДЕРЖАНИЕ

  • Введение 3
  • 1. Описание шаблонов проектирования 5
  • 2. Классификация шаблонов проектирования 7
    • 2.1 Основные шаблоны 7
    • 2.2 Порождающие шаблоны проектирования 7
    • 2.3 Структурные шаблоны 8
    • 2.4 Поведенческие шаблоны 10
    • 2.5 Шаблоны параллельного программирования 11
    • 2.6 Архитектурные шаблоны 11
  • Заключение 13
  • Список использованных источников 15

Введение

шаблон проектирование программирование

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

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

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

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

Целью работы является исследование шаблонов как инструмента проектирования информационных систем.

К числу основных задач относятся:

· дать характеристику основным шаблонам проектирования;

· провести структурный анализ реализации шаблонов;

· обосновать потребность в использовании шаблонов проектирования для решения определенных задач;

·

1. Описание Шаблонов Проектирования

Самая трудная задача в объектно-ориентированном проектировании - разложить систему на объекты. При решении приходится учитывать множество факторов: инкапсуляцию, глубину детализации, наличие зависимостей, гибкость, производительность, развитие, повторное использование и т.д. Все это влияет на декомпозицию, причем часто противоречивым образом. Методики объектно-ориентированного проектирования отражают разные подходы. Вы можете сформулировать задачу письменно, выделить из получившейся существительные и глаголы, после чего создать соответствующие классы и операции [1]. Другой путь - сосредоточиться на отношениях и разделении обязанностей в системе. Можно построить модель реального мира и перенести выявленные при анализе объекты. Шаблоны проектирования помогают выявить не вполне очевидные абстракции и объекты, которые могут их использовать.

Шаблон проектирования или шаблон в разработке программного обеспечения - описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте [2].

В отличие от готовых функций или библиотек, шаблон нельзя просто взять и скопировать в программу. Шаблон представляет собой не какой-то конкретный код, а общую концепцию решения той или иной проблемы, которую нужно будет ещё подстроить под нужды вашей программы.

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

В общем случае шаблон состоит из четырех основных элементов:

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

2. Задача. Описание того, когда следует применять шаблон. Необходимо сформулировать задачу и ее контекст. Может описываться конкретная проблема проектирования, например, способ представления алгоритмов в виде объектов. Иногда отмечается, какие структуры классов или объектов свидетельствуют о негибком дизайне. Также может включаться перечень условий, при выполнении которых имеет смысл применять данный шаблон.

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

4. Результаты - это следствия применения шаблона и разного рода компромиссы. Хотя при описании проектных решений о последствиях часто не упоминают, знать о них необходимо, чтобы можно было выбрать между различными вариантами и оценить преимущества и недостатки данного шаблона [2].

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

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

2. Классификация шаблонов проектирования

Шаблоны проектирования различаются степенью детализации и уровнем абстракции и должны быть каким то образом организованы. Предлагается следующая общая классификация шаблонов по категориям их применения [4].

2.1 Основные шаблоны

Необходимы для использования общих методов структурирования компьютерных программ. Одним из распространённым шаблоном является интерфейс.

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

2.2 Порождающие шаблоны проектирования

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

· Абстрактная фабрика - позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов;

· Фабричный метод - определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов;

· Прототип - предоставляет возможность копировать объекты, не вдаваясь в подробности их реализации;

· Одиночка - гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

Пример реализации шаблона смотрите Рисунок 1. Все реализации одиночки сводятся к тому, чтобы скрыть конструктор по умолчанию и создать публичный статический метод, который и будет контролировать жизненный цикл объекта-одиночки.

Рисунок 1. Структура шаблона итератор

Метод getInstance() либо создаёт объект, либо отдаёт существующий объект, если он уже был создан. Если есть доступ к классу одиночки, значит, будет доступ и к этому статическому методу. Из какой точки кода вы бы его ни вызвали, он всегда будет отдавать один и тот же объект.

2.3 Структурные шаблоны

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

· Адаптер - позволяет объектам с несовместимыми интерфейсами работать вместе;

· Мост - разделяет один или несколько классов на две отдельные иерархии: абстракцию и реализацию;

· Компоновщик - позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект;

· Заместитель - предоставляет возможность подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

Шаблон Заместитель, смотрите Рисунок 2, предлагает создать новый класс-дублёр, имеющий тот же интерфейс, что и оригинальный служебный объект. При получении запроса от клиента объект-заместитель сам бы создавал экземпляр служебного объекта и переадресовывал бы ему всю реальную работу[4].

Рисунок 2. Структура шаблона заместитель

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

2.4 Поведенческие шаблоны

Определяют взаимодействие между объектами, увеличивая таким образом его гибкость.

· Состояние - позволяет объектам менять поведение в зависимости от своего состояния;

· Стратегия - определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы;

· Наблюдатель - создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.

· Итератор - даёт возможность последовательно обходить элементы составных объектов, не раскрывая их внутреннего представления.

Рассмотрим пример структуры паттерна Итератор Рисунок 1, а именно - из каких классов он состоит, какие роли эти классы выполняют и как они взаимодействуют друг с другом[4].

Рисунок 3. Пример структуры шаблона итератор

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

2.5 Шаблоны параллельного программирования

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

· Блокировка - один поток блокирует ресурс для предотвращения доступа или изменения его другими потоками

· Монитор - объект, предназначенный для безопасного использования более чем одним потоком.

2.6 Архитектурные шаблоны

Описывают структурную схему программной системы в целом. В данной схеме указываются отдельные функциональные составляющие системы, называемые подсистемами, а также взаимоотношения между ними. Примером архитектурного паттерна является хорошо известная программная парадигма «модель-представление-контроллер» (MVC) смотрите Рисунок 4.

Рисунок 4. Структура шаблона MVC

шаблон проектирование программирование

· Модель предоставляет данные и реагирует на команды контроллера, изменяя своё состояние.

· Представление отвечает за отображение данных модели пользователю, реагируя на изменения модели

· Контроллер интерпретирует действия пользователя, оповещая модель о необходимости изменений.

Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и / или с различных точек зрения [5].

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

Заключение

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

Для правильного решения конкретной проблемы приведена классификация. Данная классификации поможет с выбором шаблонов проектирования, так как для каждого перечисленного шаблона имеется описание в каких целях он применяется. Важно помнить, то шаблоны проектирования - это не набор готовых решений, которые можно объединять, как компоненты, при построении проекта. Шаблоны - это предлагаемые подходы к решению распространенных задач. В этих решениях воплощены некоторые основные принципы проектирования.

В итоге написания реферата, можно сделать вывод, что все поставленные цели и задачи были выполнены успешно.

Список использованных источников

1. Мордвинов В.А. Использование шаблонов для проектирования информационных систем

2. К. Ларман. Применение UML и паттернов проектирования, Вильямс, 2002 - 405 c.

3. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Шаблоны проектирования. -

4. Итератор [Электронный ресурс] URL: https://refactoring.guru/ru/design-patterns/iterator (Дата обращения: 11.04.2020).

5. Левыкин В.М. Шаблоны проектирования требований к информационным системам: моделирование и применение: монография [Текст] / В.М. Левыкин, М.В. Евланов, М.А. Керно-сов. - Харьков: ООО «Компашя «Смгг», 2014. 320 с.

Размещено на Allbest.ru

...

Подобные документы

  • Основные типы шаблонов проектирования. Типы связей, которые могут применяться при объектно-ориентированном программировании. Обзор и реализация порождающих, структурных и поведенческих шаблонов проектирования. Шаблоны "Command", "Front Controller".

    курсовая работа [3,1 M], добавлен 01.06.2014

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

    краткое изложение [485,9 K], добавлен 29.03.2010

  • Построение концептуальной (инфологической) модели базы данных. Выбор языка и среды программирования, требования к клиентскому приложению. Выбор шаблонов проектирования, UML диаграмма классов с учетом выбранных шаблонов. Тестирование слайдера "Slick".

    дипломная работа [2,5 M], добавлен 10.07.2017

  • История развития рынка CAD/CAM/CAE-систем. Развитие приложений для проектирования шаблонов печатных плат и слоев микросхем. Проект разработки компанией Shorts Brothers фюзеляжа для самолета бизнес-класса Learjet 45, преимущества от применения программ.

    контрольная работа [19,4 K], добавлен 14.04.2014

  • Договор как самая устойчивая правовая форма. Правила их оформления. Работа по созданию, изменению шаблонов, а также по оформлению документов, в частности договоров, на основе шаблонов. Копирование элементов различных их видов через диалог Организатор.

    курсовая работа [4,6 M], добавлен 30.12.2013

  • Понятия шаблонов функции и класса, правила описания на языке С++. Разработка и отлаживание в среде программирования программ, содержащих шаблоны функций и классов. Шаблон функции square, возвращающей квадрат переменной. Создание шаблона класса массива.

    лабораторная работа [162,6 K], добавлен 25.05.2013

  • Описание технологии ASP.NET исполняемой на платформе Net FrameWork, ее преимущества. Возможности применения коллекции ViewState. Примеры использования шаблонов. Основные контролы Web приложений. Разработка программы-словаря с использованием ASP.NET.

    курсовая работа [1,2 M], добавлен 13.09.2012

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

    реферат [40,0 K], добавлен 01.04.2010

  • Обзор процесса проектирования. Характерные черты удачных проектов. Понятие и типы домена. Способ обработки событий. Архитектурные классы Form, Imitator, AE. Статическая модель прикладного домена. Исходные тексты операций обработки событий и их описание.

    курсовая работа [375,4 K], добавлен 26.01.2011

  • Оценка временной сложности алгоритма. Механизм сортировки пузырьком и вставками. Основные положения технологии параллельного программирования Ореn MР. Оценка временной сложности некоторых классов алгоритма с помощью параллельного программирования.

    дипломная работа [1,7 M], добавлен 27.10.2017

  • Компас-3D как универсальная система трехмерного проектирования. Классический процесс трехмерного параметрического проектирования. Особенности универсальной системы автоматизированного проектирования Компас-График. Преимущества и недостатки системы Компас.

    реферат [2,8 M], добавлен 30.05.2010

  • Семантика языков программирования. Процедурные и объектно-ориентированные языки программирования. Стандартная библиотека шаблонов. Независимость байт-кода от операционной системы и оборудования и возможность выполнения Java-приложения на любом устройстве.

    реферат [50,5 K], добавлен 24.11.2009

  • Виды и структура художественного проектирования. Феномен и специфика графического дизайна. Закономерности и принципы формообразования объектов художественного проектирования. Основные средства композиции. Этапы процесса художественного проектирования.

    курсовая работа [8,1 M], добавлен 13.03.2014

  • Создание сложных текстовых документов с помощью шаблонов и мастеров Word. Разработка собственных шаблонов. Разоаботка общей структуры документа, настройка параметров страницы, перемещение по тексту с помощьюпанели схемы документа. Внешний вид текста.

    методичка [30,1 K], добавлен 14.02.2009

  • Структура и классификация систем автоматизированного проектирования. Виды обеспечения САПР. Описание систем тяжелого, среднего и легкого классов. Состав и функциональное назначение программного обеспечения, основные принципы его проектирования в САПР.

    курсовая работа [37,7 K], добавлен 18.07.2012

  • Ландшафт, ландшафтные объекты и способы их описания. Основные этапы проектирования. Особенности проектирования ландшафтных объектов. Обоснование необходимости автоматизации процесса проектирования ландшафтных объектов. Разработка АРМ.

    дипломная работа [2,9 M], добавлен 06.12.2006

  • Особенности применения светодиодной индикации в микроконтроллерных системах. Характеристика основных приемов программирования универсальных портов ввода-вывода микроконтроллеров AVR. Этапы проектирования елочной гирлянды с микроконтроллерным управлением.

    лабораторная работа [291,7 K], добавлен 17.11.2012

  • Понятие шаблона документа, анализ последовательности действий для его создания. Несколько замечаний по поводу тактики создания шаблонов. Специфика создания документов с использованием слияния. Особенность использования программы Microsoft Graph.

    реферат [17,1 K], добавлен 05.10.2011

  • Основные составляющие информационной технологии. Классические принципы построения архитектуры ЭВМ. Принцип последовательного выполнения операций. Перспективы применения экспертных систем в землеустроительных системах автоматизированного проектирования.

    контрольная работа [13,8 K], добавлен 13.11.2012

  • Основные направления развития системы автоматизированного проектирования, состав его лингвистического обеспечения. Назначение и принципиальное устройство ввода-вывода информации. Сущность и группы языков программирования, их роль в переработке информации.

    курсовая работа [1,9 M], добавлен 18.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.