- •9 Ноября 2011 г. Проектирование структуры базы данных
- •Объектно-ориентированный подход
- •Объектно-ориентированный анализ
- •Методологические основы case технологии
- •Унифицированный язык моделирования uml.
- •Диаграмма состояний
- •Построение диаграммы реализации
- •Реализация объектов. Модуль
- •Лр 17. Разработка технического проекта на разработку программного продукта
- •Методология rad
- •Практики экстремального программирования
- •Дополнительные практики экстремального программирования.
- •Концепция шаблонов проектирования
- •Типы шаблонов проектирования
- •Com, Active X технология
- •Лр 26. Использование и создание элементов Active X в Delphi7 Технология datarun
- •Технология rup (Rational Unified Process)
- •Метод oracle
- •Тестирование программного обеспечения
- •Методы тестирования
- •Виды тестирования
- •Стадии процесса тестирования
- •Лр 27. Тестирование и отладка пп Управление конфигурацией, документирование по, процесс верификации и сопровождение программного обеспечения
- •Оценка затрат на разработку по
- •Оценка трудоемкости
- •Оценка стоимости продолжительности и разработки проекта
- •Методы защиты по от несанкционированного доступа
Типы шаблонов проектирования
Основные шаблоны:
Шаблон делегирования – объект внешне выражает некоторое поведение, но в реальности передает ответственность за выполнение этого поведения связанному объекту.
Неизменяемый объект – объект, который не может быть изменен после своего создания.
Интерфейс – общий метод для структурирования компьютерных программ для того, чтобы их было проще понять.
Порождающие шаблоны – позволяют сделать систему независимой от способа создания, композиции и представления объекта.
Абстрактная фабрика – класс, который представляет собой интерфейс для создания компонентов системы.
Строитель – класс, который представляет собой интерфейс для создания сложных объектов.
Одиночка – класс, который может иметь только один экземпляр.
Структурные шаблоны – определяет различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию позволяя облегчить разработку и оптимизировать программу.
Адаптер – объект, обеспечивающий взаимодействие двух других объектов, один из которых используют, а другой предоставляет не совместимый с первым интерфейс.
Мост – структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса.
Декоратор – класс, расширяющий функционал другого класса без использования наследования.
Поведенческие шаблоны – определяют взаимодействие между объектами, увеличивая, таким образом, их гибкость.
Команда – представляет действие, объект команды заключает в себе само действие и его параметры.
Посредник – обеспечивает взаимодействие множества объектов, формируя при этом, слабую связность и избавляя объекты от необходимости ссылаться друг на друга.
Посетитель – описывает операцию, которая выполняется над объектами других классов, при изменении класса посетитель нет необходимости изменять обслуживаемые классы.
Шаблон одиночка гарантирует, что у класса есть только один экземпляр и предоставляет к нему глобальную точку доступа. Существенно то, что можно пользоваться именно экземпляром класса. Так как при этом становится доступной более широкая функциональность.
Достоинства
Контролируемый доступ к единственному экземпляру
Уменьшение числа имен
Допускает уточнение операций и представления
Допускает переменное число экземпляров
Большая гибкость, чем у операций классов
Недостатки
Глобальные объекты могут быть вредны для объектного программирования, в некоторых случаях приводя к созданию немасштабируемого проекта
Применение шаблона Одиночка рекомендовано в том случае, когда должен быть ровно один экземпляр некоторого класса. Легко доступный всем клиентам. Единственный экземпляр должен расширяться путем порождения подклассов и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода.
Возможная реализация на С++ известная как симболтон майерса, где одиночка представляет собой статический локальный объект. Важным моментом является то, что конструктор класса объявлен как private, что позволяет предотвратить создание экземпляров класса за пределами его реализации. Приведенный ниже пример потока не безопасен. Для работы с классом из нескольких потоков нужно защищать переменную the single от одновременного доступа например с помощью мьютекса или критической секции.
Class onlyone
{public;
Static OnlyOne*instance()
If (TheSingleInstance=0)
TheSingleInstance=new OnlyOne;
Return TheSingleInstance;
Private
Static OnlyOne*TheSingleInstance;
OnlyOne(){};
};
OnlyOne*OnlyOne::TheSingleInstance=0;