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