Объектная модель в ООП

В прошлых записях были рассмотрены основы объектно-ориентированного программирования: объекты, классы, наследование, полиморфизм и отношения между классами. Сегодня я хотел бы опубликовать небольшую заметку об объектных моделях.

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

Объектная модель — критерии сравнения

Фундаментальные понятия объектно-ориентированного подхода могут быть воплощены по-разному при построении систем. В основе той или иной реализации системы лежит объектная модель среды, в рамках которой эта система разработана. Для программной системы первоочередное значение имеет объектная среда языка программирования. Объектно-ориентированный язык — это такой язык, который удовлетворяет следующим критериям:

  • поддерживает объекты как абстракции данных с определенным интерфейсом поименованных операций и скрытым состоянием;
  • объекты принадлежат к какому-либо типу (классу);
  • типы (классы) могут наследовать атрибуты своих базовых классов.

Объектные модели разных языков программирования реализованы по-разному. Поэтому, прежде чем переходить к рассмотрению объектных моделей конкретных сред программирования, остановимся немного на критериях по которым мы будем их сравнивать. Все эти среды являются объектно-ориентированными. Это значит, что они обладают следующими свойствами:

  1. наличием объектов и возможностью описания динамики системы как реакции на сообщения, пересылаемыми между объектами;
  2. возможностью создания новых классов;
  3. наличием механизма наследования для расширения или уточнения поведения имеющихся классов;
  4. наличием полиморфизма между классами или объектами.

Для каждой среды программирования нужно четко представлять ее характеристики:

  • Система типов языка определяет, какие типы предопределены в языке и каким образом можно создавать новые типы. Поскольку мы имеем дело с объектно-ориентированными языками, создание новых типов — это создание новых классов.
  • Наследование — у каждого языка существуют свои особенности реализации механизма наследования. У всех объектно-ориентированных языков имеется возможность наследования интерфейсов и состояний.
  • Создание и уничтожение объектов — это организация времени жизни объектов в данном языке.
  • Идентификация объектов — это то, каким образом определяется тождество и равенство объектов.
  • Метаданные языка описывают классы и объекты, имеющиеся в программе на данном языке. Также, рассматривается наличие метаклассов.
  • Модули и компоненты языка описывают, возможность структуризации больших программ на данном языке.
  • Определение динамики поведения объектов касается того, какова динамическая структура программы.

В следующих статьях будут рассмотрены объектные модели наиболее популярных языков программирования. Подписывайтесь на мой RSS-канал!

Наследование, полиморфизм и отношения между классами в ООП
Объектная модель C++
ITandLife.ru