- •Курсова робота
- •«Шаблони програмування»
- •Метою дослідження є вивчення шаблонів проектування програмних засобів, можливості використання шаблонів програмування як підходу для вирішення задачю. Задачі дослідження:
- •Актуальність теми
- •1. Шаблони програмування
- •Типи шаблонів gof
- •2. Історія
- •3. Шаблони grasp
- •4. Твірні шаблони
- •4.1. Абстрактна фабрика
- •4.2. Будівник
- •4.3. Одинак
- •4.4. Прототип
- •4.5. Фабричний метод
- •5. Структурні шаблони
- •5.1. Адаптор
- •5.2. Декоратор
- •Спосіб вирішення
- •Учасники
- •Наслідки
- •5.3. Замісник
- •5.4. Компонувальник
- •5.6. Легковаговик
- •5.7. Фасад
- •6. Шаблони поведінки
- •6.1. Відвідувач
- •6.2. Інтерпретатор
- •6.3. Ітератор
- •6.4. Команда
- •6.5. Ланцюг обов’язків
- •6.6. Посередник
- •6.7. Спостерігач
- •6.8. Стан
- •6.9. Стратегія
- •6.11. Шаблоний метод
2. Історія
У 70-х роках двадцятого сторіччя архітектор Кристофер Александр (англ. Christopher Alexander) склав перелік шаблонів проектування. В області архітектури ця ідея не отримала такого розвитку, котрого вона досягла пізніше в області розробки програмного забезпечення.
У 1987 році Кент Бек (англ. Kent Beck) і Вард Каннігем (англ. Ward Cunningham) узяли ідеі Крістофер Александра та розробили шаблони відповідно до розробки програмного забезпечення для розробки графічних оболонок мовою Smalltalk.
У 1988 році Ерік Ґамма (англ. Erich Gamma) почав писати докторську роботу при цюрихському університеті про загальну переносимість цієї методики на розробку програм.
У 1989—1991 роках Джеймс Коплін (англ. James Coplien) трудився над розробкою ідіом для програмування мовою C++ та опублікував у 1991 році книгу «Advanced C++ Idioms».
У цьому ж році Ерік Ґамма закінчує свою докторську роботу та переїздить до США, де у співробітництві з Річардом Хелмом (англ. Richard Helm), Ральфом Джонсоном (англ. Ralph Johnson) та Джоном Вліссідсом (англ. John Vlissides) публікує книгу «Design Patterns — Elements of Reusable Object-Oriented Software». У цій книзі описані 23 шаблона проектування. Також команда авторів цієї книги відома суспільству під назвою Банда чотирьох (англ. Gang of Four - GoF). Саме ця книга послужила привідом до прориву методу шаблонів.
3. Шаблони grasp
GRASP - (англ. General Responsibility Assignment Software Patterns) - набір патернів (шаблонів, принципів), що дозволяють вирішувати проблеми розподілу обов’язків між різними класами. За своєю суттю, цей набір патернів більш абстрактний, ніж загально відомий каталог шаблонів від "банди чотирьох" (GOF-шаблони).
До складу шаблонів GRASP входить 9 шаблонів:
Information Expert
Creator
Low Coupling
High Cohesion
Controller
Polymorphism
Pure Fabrication
Indirection
Protected Variations
Наведені патерни чи не вперше наводяться та описуються в книзі Крега Лармана "Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and Iterative Development"
4. Твірні шаблони
Шаблони, що породжують (англ. Creational patterns) — це шаблони проектування, що абстрагують процес інстанціювання. Вони допоможуть зробити систему незалежною від способу створення, композиції та представлення її об'єктів.
Шаблон, який породжує класи, використовує спадкування, щоб варіювати створюваний клас, а шаблон, що створює об'єкти, делегує інстанціювання іншому об'єктові.
Ці шаблони важливі, коли система більше залежить від композиції об'єктів, ніж від спадкування класів.
Таким чином, замість прямого кодування фіксованого набору поведінок, визначається невеликий набір фундаментальних поведінок, за допомогою композиції яких можна отримувати складніші.
Таким чином, для створення об'єктів з конкретною поведінкою потрібно щось більше, ніж просте інстанціювання екземпляру класу.
Шаблони, що породжують, інкапсулюють знання про конкретні класи, які застосовуються у системі та приховують деталі того, як ці класи створюються і стикуються між собою.
Єдина інформація про об'єкти, що відома системі — їхні інтерфейси.
Перелік шаблонів, що породжують:
Абстрактна фабрика (Abstract Factory)
Будівник (Builder)
Одинак (Singleton)
Прототип (Prototype)
Фабричний метод (Factory Method)
