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

UML — язык графического описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
Антипаттерн — это распространённый подход к решению класса часто встречающихся проблем, являющийся неэффективным, рискованным или непродуктивным. В отличие от шаблона проектирования, рассмотрение антипаттерна включает в себя как неправильное решение проблемы с его признаками и последствиями, так и выход из ситуации.
Порождающие шаблоны — шаблоны проектирования, которые абстрагируют процесс наследования. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять наследуемый класс, а шаблон, порождающий объекты, делегирует наследование другому объекту.
Повторное использование кода — методология проектирования компьютерных и других систем, заключающаяся в том, что система частично либо полностью должна составляться из частей, написанных ранее компонентов и/или частей другой системы, и эти компоненты должны применяться более одного раза. Повторное использование — основная методология, которая применяется для сокращения трудозатрат при разработке сложных систем.
Констру́ктор :
- Инженер-конструктор — инженерная специальность.
- Конструктор (игрушка) — детский игровой набор для моделирования, состоящий из набора деталей и, как правило, соединительных элементов.
- Радиоконструктор — набор радиодеталей для самостоятельной сборки какого-нибудь электронного устройства.
- Конструктор игр — программа, включающая в себя необходимые инструменты для создания компьютерных игр.
- «Конструктор» — сторожевой корабль ВМФ СССР.
- Конструктор — импорт подержанных автомобилей в разобранном виде с последующей самостоятельной сборкой.
Эрих Гамма — программист из Швейцарии, один из четырёх авторов классической книги Design Patterns о шаблонах проектирования. Команда авторов книги также известна под названием «банда четырёх». Является ведущим разработчиком JUnit и Eclipse. Работал в IBM над проектом Jazz.

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

Андре́й Александре́ску — румынский программист, известный благодаря своим исследованиям в области проектирования, основанного на стратегиях, и реализованного посредством обобщённого программирования и метапрограммирования шаблонов.
Структурные шаблоны — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры.
Поведенческие шаблоны — шаблоны проектирования, определяющие алгоритмы и способы реализации взаимодействия различных объектов и классов.
Предметно-ориентированное проектирование — набор принципов и схем, направленных на создание оптимальных систем объектов. Сводится к созданию программных абстракций, которые называются моделями предметных областей. В эти модели входит бизнес-логика, устанавливающая связь между реальными условиями области применения продукта и кодом.
Активный объект — это шаблон проектирования, который отделяет поток выполнения метода от потока, в котором он был вызван. Целью данного шаблона является предоставление параллельности выполнения используя асинхронные вызовы методов и планировщик обработки запросов.
В объектно-ориентированном программировании Null Object — это объект с определенным нейтральным («null») поведением. Шаблон проектирования Null Object описывает использование таких объектов и их поведение. Впервые опубликован в серии книг Pattern Languages of Program Design.
Локатор служб — это шаблон проектирования, используемый в разработке программного обеспечения для инкапсуляции процессов, связанных с получением какого-либо сервиса с сильным уровнем абстракции. Этот шаблон использует центральный реестр, известный как «локатор сервисов», который по запросу возвращает информацию, необходимую для выполнения определенной задачи. Обратите внимание, что в некотором случае, локатор служб фактически является анти-шаблоном.
Контейнер свойств — фундаментальный шаблон проектирования, который служит для обеспечения возможности уже построенного и развернутого приложения
Частичная специализация шаблона — механизм языка программирования C++, предназначенный для специализации обобщённых шаблонных классов под конкретные задачи или под конкретное подмножество своих параметризованных типов данных. По мнению американского учёного и создателя C++ Б. Страуструпа специализация шаблонов является эффективным средством предотвращения неконтролируемого разрастания объёмов кода при активном использовании инструментария классов-шаблонов даже при разработке программных проектов умеренного размера. Это связывают с тем, что она не позволяет генерировать избыточные реплики кода под каждый конкретный тип данных, заменяя их более обобщёнными фрагментами кода и вдобавок сокращая время компиляции и компоновки конечного продукта.