- •Понятие ооп.
- •Обработка ошибок
- •Создание новых классов.
- •Шаблоны проектирования
- •Состояние и стратегия
- •Фабричный метод. Абстрактная фабрика.
- •Реестр. Строитель.
- •Одиночка. Загрузка по требованию.
- •Команда. Шаблонный метод.
- •Фасад. Компоновщик.
- •Рефакторинг. Основные идеи.
- •Модульное тестирование.
- •Mvc. Наблюдатель.
Создание новых классов.
Сделаем класс стека с использованием списка.
Композиция – возможность пользоваться другим классов, вписав его в одно из полей и используем:
Class stack {
List m_items;
Public void Push (object a_item) {
M_items_Add (a_item);
}
Public object Top(){
Return m_Items.Last();
// return m_items (m_Items.count-1);
}
Наследование
Class stack List {
Public void Push(object a_Item) {
Add(a_Item);
}
Шаблоны проектирования
В разработке программного обеспечения, шаблон проектирования или паттерн — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста.
Обычно шаблон не является законченным образцом, который может быть прямо преобразован в код; это лишь пример решения задачи, который можно использовать в различных ситуациях. Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться.
Виды:
Порождающие (сценарии поведения)
Структурные (способы взаимосвязи объектов)
Поведения (взаимодействие объектов)
Порождающие шаблоны — шаблоны проектирования, которые абстрагируют процесс инстанцирования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять инстанцируемый класс, а шаблон, порождающий объекты, делегирует инстанцирование другому объекту.
Структурные шаблоны - определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
Поведенческие шаблоны определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
Состояние и стратегия
Состояние — шаблон проектирования. Используется в тех случаях, когда во время выполнения программы объект должен менять свое поведение в зависимости от своего состояния.
Паттерн состоит из 3 блоков:
Widget — класс, объекты которого должны менять свое поведение в зависимости от состояния.
IState — интерфейс, который должно реализовать каждое из конкретных состояний. Через этот интерфейс объект Widget взаимодействует с состоянием, делегируя ему вызовы методов. Интерфейс должен содержать средства для обратной связи с объектом, поведение которого нужно изменить. Для этого используется событие (паттерн Publisher — Subscriber). Это необходимо для того, чтобы в процессе выполнения программы заменять объект состояния при появлении событий. Возможны случаи, когда сам Widget периодически опрашивает объект состояние на наличие перехода.
StateA … StateZ — классы конкретных состояний. Должны содержать информацию о том, при каких условиях и в какие состояния может переходить объект из текущего состояния. Например, из StateA объект может переходить в состояние StateB и StateC, а из StateB — обратно в StateA и так далее. Объект одного из них должен содержать Widget при создании.
Стратегия — поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Strategy позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
Задача: По типу клиента (или по типу обрабатываемых данных) выбрать подходящий алгоритм, который следует применить. Если используется правило, которое не подвержено изменениям, нет необходимости обращаться к шаблону «стратегия».
