Преждевременная оптимизация является первопричиной всех бед в программировании. Дональд Кнут

глоссариум ооп: о

Обобщенная функция (generic function) – операция над каким-то объектом. Обобщенная функция класса может быть переопределена в подклассах; таким образом, для конкретного объекта ее реализация определяется неким множеством методов, объявленных в разных классах, входящих в иерархию наследования. Термины обобщенная функция и виртуальная функция (virtual function) являются синонимами.

Обратное проектирование (reverse-engineering) – воссоздание логической или физической модели системы по выполняемому коду.

Объект (object) – сущность, которой можно оперировать. Объект имеет состояние, поведение и индивидуальность. Структура и поведение похожих объектов определяется в общем для них классе. Термины экземпляр (instance) и объект являются синонимами.

Объектная модель (object model) – совокупность принципов, лежащих в основе объектно-ориентированного проектирования; парадигма программирования, основанная на абстракции, инкапсуляции, модульности, иерархичности, типизации, параллелизме и персистентности.

Объектное программирование (object-based programming) – методология программирования, в которой программы представляют собой совокупности взаимодействующих объектов, каждый из которых является экземпляром определенного типа, входящего в иерархию типов, не связанных отношением наследования. В таких программах классы обычно считаются статичными сущностями, а объекты имеют более динамичную природу, ограниченную статическим связыванием и мономорфизмом.

Объектно-ориентированное программирование (object-oriented programming) – методология программирования, в которой программы представляют собой совокупности взаимодействующих объектов, каждый из которых является экземпляром определенного типа, входящего в иерархию типов, не связанных отношением наследования. В таких программах классы обычно считаются статичными сущностями, а объекты имеют более динамичную природу, поддерживаемую механизмами динамического связывания и полиморфизмом.

Объектно-ориентированная декомпозиция (object-oriented decomposition) – процесс разбиения системы на части, каждая из которых представляет собой некоторый класс или объект из предметной области. Практическое применение методов объектно-ориентированного проектирования приводит к объектно-ориентированной декомпозиции, позволяющей представить весь мир как совокупность объектов, взаимодействующих друг с другом для обеспечения требуемых функциональных свойств.

Объектно-ориентированное проектирование (object-oriented design) – методология проектирования, объединяющая процесс объектно-ориентированной декомпозиции и систему обозначений для представления логической и физической, статической и динамической модели проектируемых систем. В частности, система обозначений состоит из диаграмм классов, объектов, компонентов и процессов.

Объектно-ориентированный анализ (object-oriented analysis) – метод анализа, в котором требования рассматриваются с точик зрения классов и объектов, включенных в словарь предметной области.

Обязанность (responsibility) – поведение, которое обязан обеспечить объект.

Ограничение (constraint) – выражение некоторого семантического условия, которое должно выполняться.

Операция (operation) – действие, выполняемое одним объектом над другим с определенной целью.  Все операции над конкретным объектом сосредоточены в свободных подпрограммах и функциях-членах, или методах. Термины сообщение, метод и операция, как правило, являются синонимами.

Ориентирная структура (reference architecture) – заранее определенный архитектурный шаблон или набор шаблонов, полностью или частично конкретизированный, разработанный или испытанный на конкретных примерах, в сочетании с артефактами, облегчающими его использование.

Открытая часть (public) – часть интерфейса какого-либо класса, объекта или модуля, доступная для всех классов, объектов и модулей.

глоссариум ооп: н

Наследование (inheritance) – отношение между классами, при котором класс использует структуру и поведение, определенное в другом классе (одиночное наследование) или нескольких других классах (множественное наследование). Наследование определяет иерархию классов “общее/частное”, в которой подкласс наследует свойства одного или нескольких более общих суперклассов. Подкласс обычно конкретизирует суперкласс, дополняя или переопределяя его структуру и поведение.

глоссариум ооп: м

Метакласс (metaclass) – Класс классов; класс, экземпляры которого сами являются классами.

Метод (method) – операция над объектом определенная как часть объявления класса. Все методы являются операциями, но не все операции являются методами. Термины функция-член и метод – синонимы. В некоторых языках программирования методы представляют собой самостоятельные сущности и могут переопределяться в подклассах, в то время как в других языках программирования метод не может быть переопределен и является частью реализации обобщенных, или виртуальных функций, которые можно переопределить в подклассах.

Механизм (mechanism) – структура, c помощью которой объекты взаимодействуют друг с другом, обеспечивая поведение, удовлетворяющее требованиям системы.

Модульность (modularity) – свойство системы, которое состоит в разделении слабосвязанных (loosely coupled) между собой компонентов, образующих одно целое (cohesive).

Мономорфизм (monomorphism) – концепция теории типов, согласно которой имена (например, объявления переменных) могут обозначать только объекты одного и того же класса.

Мощность (cardinality) – количество экземпляров класса; количество экземпляров, участвующих в отношениях между классами.

глоссариум ооп: к

Квалификатор (qualifier) – атрибут, однозначно идентифицирующий отдельный целевой объект.

Класс (class) – множество объектов, имеющих общую структуру и общее поведение. Термины класс и тип (но не всегда) являются синонимами. Класс отличается от типа тем, что он концентрируется на классификации структуры и поведения.

Клиент (client) – объект, пользующийся услугами другого объекта, либо выполняя операции над последним, либо ссылаясь на его состояние.

Ключевая абстракция (key abstraction) – класс или объект, являющийся частью словаря предметной области.

Композиция (composition) – полное или частичное отношение, в котором один объект состоит из одного или нескольких других объектов, каждый из которых рассматривается как часть целого.

Компонент (component) – логическая совокупность классов, взаимодействующих вместе для обеспечения набора услуг, предлагаемых посредством интерфейса. Услуги, требуемые компонентом, запрашиваются с помощью соответствующих интерфейсов. Кроме того, компонент может состоять из других компонентов и быть вложенным в другой компонент.

Конкретизация (инстанциирование) (instantiation) – процесс подстановки параметров шаблона обобщенного или параметризированного класса для создания класса, который может иметь экземпляры.

Конкретный класс (concrete class) – класс, реализация которого является завершенной и который, благодаря этому, может иметь экземпляры.

Конструктор (constructor) – операция, создающая объект и/или инициализирующая его стостояние.

Контейнерный класс (container class) – класс, экземпляры которого содержат другие объекты. Контейнерный класс может описывать как однородные (когда все объекты, включенные в коллекцию, относятся к одному и тому же классу), так и неоднородные совокупности (когда объекты, включенные в коллекцию, могут относиться к разным классам, хотя все они обладают свойствами общего суперкласса). Контейнерные классы часто реализуются с помощью параметризированных классов, в которых класс объектов, содержащихся в контейнере, задается определенным параметром.

Кооперация (collaboration) – процесс, в котором несколько элементов модели взаимодействуют для того, чтобы обеспечить определенное взаимодействие верхнего уровня.

глоссариум ооп: и

Индивидуальность (identity) – природа объекта, отличающая его от всех остальных объектов.

Иерархия (hierarchy) – ранжирование или упорядочение абстракций. Наиболее типичными иерархиями в сложной системе являются структура классов (включая иерархию “общее/частное” (“is/a”)) и структура объектов (включая иерархию “целое/часть” (“part/of”)). Кроме того, иерархии можно обнаружить в архитектурах сложных систем.

Инвариант (invariant) – логическое выражение некоторого условия, истинность которого необходимо гарантировать.

Инкапсуляция (encapsulation) – процесс разделения элементов абстракции, определяющих ее структуру и поведение. Инкапсуляция отделяет контрактный интерфейс абстракции от его реализации.

Интерфейс (interface) – внешний вид класса, объекта, компонента или сложной структуры, демонстрирующий их абстрактные свойства и скрывающий их внутреннее устройство и секреты поведения.

Итератор (iterator) - операция, позволяющая получать доступ к частям объекта.