- •Макетирование.
- •Экстремальное программирование.
- •Структурирование системы. Архитектурные системные паттерны:
- •Моделирование управления. Паттерны управления.
- •Декомпозиция подсистем на модули.
- •Информационная закрытость.
- •Функциональная связность
- •Информационная связность
- •Коммуникативная связность
- •Процедурная связность
- •Временная связность
- •Логическая связность
- •Связность по совпадению
- •Определение связности модуля
- •Характеристики иерархической структуры программной системы
- •Четыре правила простой архитектуры Кента Бека (в порядке приоритета):
- •Фундаментальные паттерны. Шаблон делегирования.
- •Композиция и агрегирование.
- •Неизменяемый объект.
- •Шаблон единой ответственности.
- •Шаблон интерфейса.
- •Наследование.
- •Полиморфизм.
- •Как оо паттерны позволяют улучшить проектирование.
- •Проектирование с учетом будущих изменений.
Неизменяемый объект.
Immutable object — в объектно-ориентированном программировании объект, который не может быть изменён после своего создания. Объект может быть неизменяемым как полностью, так и частично. Например, применение директивы const к какому-либо члену класса в C++ делает объект частично неизменяемым. В некоторых случаях объект считается неизменяемым с точки зрения пользователя класса, даже если изменяются его внутренние поля. Как правило, неизменяемый объект получает все внутренние значения во время инициализации, либо значения устанавливаются в несколько этапов, но до того, как объект будет использован.
Шаблон единой ответственности.
Functional design — это шаблон проектирования использующийся для упрощения проектирования ПО. Функциональный дизайн гарантирует, что каждый модуль компьютерной программы имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие части программы. Функционально разработанные модули имеют очень маленькое сцепление.
Шаблон интерфейса.
Является общим методом для структурирования компьютерных программ для того, чтобы их было проще понять. В общем, интерфейс — это класс, который обеспечивает программисту простой или более программно-специфический способ доступа к другим классам.
Интерфейс может содержать набор объектов и обеспечивать простую, высокоуровневую функциональность для программиста (например, Шаблон Фасад); он может обеспечивать более чистый или более специфический способ использования сложных классов («класс-обёртка»); он может использоваться в качестве «клея» между двумя различными API (Шаблон Адаптер); и для многих других целей.
Model-view-controller.
MVC, «Модель-представление-поведение», «Модель-представление-контроллер» — архитектура ПО, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента
Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своё состояние.
Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
Поведение (Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции.
Важно отметить, что как представление, так и поведение зависят от модели. Однако модель не зависит ни от представления, ни от поведения. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.
Наследование.
Composition is perfect for building new objects that have a has-a relationship with their subobjects. However, composition (and aggregation) is just one of the two major ways that C++ lets you construct complex classes. The second way is through inheritance. +Повторное использование кода.
спецификаторы доступа и спецификаторы наследования
доступ через разрешение ::
статическое связывание. Указатели и ссылки.
