5.1. Объектно-ориентированный дизайн 111
Текущая версия системы релизована и протестирована для следующих UNIX-
платформ: Sun Sparc/OС Solaris, Intel Pentium/OC Linux, однако, может быть
перенесена и на другие UNIX-платформы.
5.1. Объектно-ориентированный дизайн
Объектно-ориентированный подход [161] к разработке ПО полагается на до-
вольно простые понятия для управления сложными системами. Секрет успешного
применения ООП заключается в построении такой абстрактной модели (имеется
в виду программная модель), которая близко соответствует предметам и понятиям
(прагматике) рассматриваемой области. Хорошая модель обязана своей устойчи-
вости и силе тем инвариантам (существенным признакам и свойствам), которые
присутствуют в предметной области. В большинстве случаев, проблемная область
довольно статична по отношению к классам объектов. Таким образом, абстракт-
ные модели, основанные на предметных классах, имеют внутреннюю гибкость к
неизбежным изменениям, происходящим при эволюции модели.
В свою очередь, другой подход к программированию — процедурно-ориентиро-
ванное программирование, использует для отражения инвариантов предметной об-
ласти несколько иные абстракции — процедуры, которые соответствуют процессам
(операциям, действиям), протекающим в проблемной области. Взаимосвязь между
различными процедурами является главной опорой процедурной модели. Обыч-
но главные процедуры связываются в главный модуль, являющийся «хребтом»
программы. Однако абстрактные процедуры имеют тенденцию к изменению при
доработке старых или разработке новых алгоритмов: эволюция модели приводит
к добавлению новых аспектов проблемной области, что влечет серьезные изме-
нения в процедурах и их дробление. Указанное обстоятельсто может привести к
дальнейшему ветвлению программы и, зачастую, изменению ее логики.
Объектно-ориентированные программы рассматривают проблемную область в
терминах ее объектов и их классов. Может быть выделено несколько классов
объектов, и, соответственно, один или несколько объектов выделенного класса.
Каждый класс характеризуется наборами элементов данных (атрибутов) и опера-
ций (методов). Объекты одного класса имеют идентичные атрибуты, хотя значения
этих атрибутов могут быть различны. Объекты одного класса ведут себя одинако-
во, поскольку используют одинаковые методы.
Поведение класса определяется его методами, которые олицетворяют взаимо-
действие объектов класса с другими объектами. Методы также образуют интер-
фейс объектов данного класса. Тогда как реализация данного метода в рамках
интерфейса может меняться, последний остается достаточно стабильным. Это поз-
воляет развиваться модели путем добавления новых классов не затрагивая су-
ществующие классы. Таким образом, классы объектов и их интерфейсы служат
безопасной структурой для абстрактной модели. Их внутренняя неизменность, по-
лученная из инвариантов проблемной области, приводит к стабильности модели,
делая ее эластичной для изменений.
Понятия абстракции, инкапсуляции и наследования служат дополнительными
источниками стабильности модели, добавляя безопасные способы работы с зави-
симостями между классами.