Ада-95. Компилятор GNAT

       

Объектно-ориентированное программирование


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

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

В обоих случаях задачей программы является преобразование некоторого заданного набора значений данных из некоторой входной или начальной формы к некоторой выходной или конечной форме.

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

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

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

Фактически хороший программист никогда не создает непрерывные последовательности недопустимо большой длины, разбивая их на серию подпрограмм.

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

Как правило, большинство данных находятся в глобальных структурах, к которым имеют доступ все подпрограммы.

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

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

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




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

Единственными операциями, определяемыми над данным объектом, являются соответствующие подпрограммы.

Такую структуру данных называют объектом, а связанный с ней набор операций - "пакетом".

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

Эти общедоступные операции имеют строго определенные спецификации.

Тела их подпрограмм и любых подпрограмм, от которых эти тела могут в дальнейшем зависеть, можно обособить и сделать полностью скрытыми.

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

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

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


Содержание раздела