Объектно-информационные модели

Объектный подход к информационному моделированию берет свое начало в парадигме объектно-ориентированного программирования (ООП), возникшей в 1970-х годах (см. “Объектно-ориентированное программирование”). Главным понятием здесь является “объект”.

Объект — часть окружающей нас действительности.

Понятие объекта является очень широким и объединяет в себе как реальные, осязаемые предметы (например: кресло, автомобиль, мост), так и образы, созданные мышлением человека (например: стихотворение, музыкальное произведение, математическая теорема).

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

У каждого конкретного объекта свойства имеют определенные значения. В нашем примере добавим значения свойств объектов (см. таблицу на с. 5).

Эти значения могут быть количественными величинами (10 лет, 5 Гб), но могут быть и именами других объектов. Например, “Иван Иванович Иванов” и “Математика” сами могут рассматриваться как объекты.

Состояние объекта характеризуется перечнем всех возможных его свойств и текущими значениями каждого из этих свойств. Изменение состояния объекта отражается в его информационной модели изменением значений его свойств. Как правило, объекты не остаются неизменными. Например, растет стаж работы учителя И.И. Иванова; на жестком диске изменяется объем занятой памяти; документ может быть перенесен на другой диск, в другую папку и пр. Все эти процессы в информационной модели отражаются изменениями значений свойств.

В объектно-информационной модели отражаются не только свойства, но также и поведение объекта. Поведение объекта — действия, которые могут выполняться над объектом или которые может выполнять сам объект. Теперь опишем поведение объектов из нашего примера.

Объекты, обладающие одинаковыми свойствами и поведением, образуют класс объектов.

Каждый объект является экземпляром какого-либо класса. Все преподаватели обладают одним и тем же набором свойств (имя, стаж работы, читаемый курс) и поэтому образуют класс объектов. Присвоим этому классу имя “Преподаватель”. Каждый конкретный преподаватель — экземпляр этого класса (или объект). Следовательно, “Мой преподаватель” — экземпляр класса “Преподаватель”. Аналогично можно ввести класс “Жесткий диск”, объединив в нем все жесткие диски. Тогда “Мой жесткий диск” — экземпляр класса “Жесткий диск”. Если принять во внимание, что класс “Документ” описывает свойства и поведение всех документов, то “Важный документ” — экземпляр класса “Документ”.

Таким образом, экземпляр класса (объект) — это конкретный предмет или образ, а класс определяет множество объектов с одинаковыми свойствами и поведением. Класс может порождать произвольное число объектов, однако любой объект относится к строго фиксированному классу.

Иерархии классов. Объектно-информационные модели имеют иерархическую структуру (дерево). Иерархичность проявляется в том, что некоторый класс сам может быть подмножеством другого, более широкого класса. Вот пример иерархической классификации из биологии: вид “Насекомые” включает в себя два отряда: “Крылатые” и “Бескрылые”; в свою очередь, “Крылатые” насекомые делятся на подотряды: “Мотыльки”, “Бабочки”, “Мухи” и т.д.

В такой иерархической структуре между классами определяется отношение наследования.

Фрагмент классификации насекомых

Наследование — это такое отношение между классами, когда один класс повторяет свойства и поведение другого класса.

Такой способ классификации, в частности, хорошо согласуется с механизмом биологического наследования в мире насекомых. Классы верхних уровней являются более общими по отношению к нижним. При спуске по дереву каждый следующий класс является более специфичным и в то же время наследует все свойства своих предшественников. Класс, свойства и поведение которого наследуются, называется суперклассом (или базовым классом). Производный от суперкласса класс называется подклассом. В нашем примере “Насекомые” — суперкласс для подклассов “Крылатые”, “Бескрылые”, “Мотыльки”, “Бабочки”, “Мухи”, а “Крылатые” — суперкласс для подклассов “Мотыльки”, “Бабочки”, “Мухи”. В подклассе дополняются свойства и уточняется поведение суперкласса. При определении класса “Мухи” нет необходимости вводить свойство “Наличие крыльев”, так как это свойство наследуется из суперкласса “Крылатые”.

Еще один пример. Рассмотрим систему классов, отражающих сведения о различных видах транспорта.

Свойства и поведение, присущие каждому классу, отражены в таблице ниже. Здесь звездочками отмечены наследуемые свойства и действия.

Все самые общие свойства располагаются в суперклассе “Транспорт”. Эти свойства наследуются классами “Автомобиль”, “Грузовик”, “Корабль”, “Авианосец” и “Самолет”. Кроме того, свойства “Марка” и “Пробег” наследуются классом “Грузовик” от базового класса “Автомобиль”, а свойства “Нахождение” и “Водоизмещение” наследуются классом “Авианосец” от базового класса “Корабль”. Столбец Поведение (действия) позволяет проследить наследование действий.

А теперь определим экземпляры классов (объекты) и значения их свойств.

Таким образом, определены три экземпляра класса “Автомобиль”. Для определения экземпляров (объектов) других классов необходимо аналогичным образом задать значения свойств.

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

Методические рекомендации

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

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

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

Освоение программирования на объектно-ориентированных языках (С++, Delphi и др.) в школе может происходить на уровне профильного обучения в старших классах. Его отличие от традиционного процедурного программирования заключается в способе мышления, сводящемся к умению выстраивать объектно-информационные модели (иерархии классов).