Теоретические сведения для студентов специальностей «Экономика и организация производства», страница 8

Коrда проrрамма должна выполнять операции над дaнными, которые нельзя непосредственно реализовать конструкциями языка проrраммирования, следует построить АТД, в котором специфицировать все выполняемые над ним операции. Только после этого можно приступать к peaлизации операций. При этом необходимо установить, какие данные являются внутренними и какие внешними.

ИНКАПСУЛЯЦИЯ

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

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

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

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

НАСЛЕДОВАНИЕ

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

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

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

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