Часть II. Объектно-ориентированное программирование
раторов и отдельных блоков программы не было возврата назад. Умри,
но сделай так, чтобы не было возвратов назад! Это обеспечивало более
быструю отладку программы. Выход из цикла — только вперед (вспом-
ните оператор
break
)! Возврат назад — только в пределах оператора
цикла! Передача управления из оператора
if...else
— только вперед!
Долой оператор
goto
! Даже была доказана теорема о том, что любую
схему алгоритма можно представить в виде композиции вложенных
блоков
begin
и
end
, условных операторов
if
,
then
,
else
, циклов с преду-
словием (
while
) и, может быть, дополнительных логических перемен-
ных (флагов). Подход был серьезный. Но жизнь не стоит на месте.
С появлением более новой техники — мощных компьютеров — откры-
лись и новые возможности, о которых раньше даже не мечтали. Да и
о чем ты можешь мечтать, когда оперативная память твоего "компьюте-
ра" — всего 1024 малюсеньких ячейки (1 К), а внешняя — один ленто-
вод на 64 К, который практически все время не работает! И скорость
в 3 тыс. операций в секунду.
Оказалось, что у процедурно-модульно-структурного подхода имеются
значительные недостатки, которые можно устранить, используя мощь
современных компьютеров. Во-первых, в программе данные и подпро-
граммы их обработки (процедуры и функции) формально никак не свя-
заны. А хотелось бы, чтобы было наоборот. Например, вы решаете за-
дачу по обработке данных о каком-то доме. Удобнее было бы, чтобы
данные по дому и функции по обработке этих данных хранились в од-
ной "коробке". Причем, было бы еще удобнее, если бы эта "коробка"
подошла и для решения задачи по другому дому с такими же характери-
стиками, как и первый дом. То есть, говоря языком стандартизации,
чтобы "коробка" была стандартной для данного класса домов. Во-вто-
рых, данные в "коробке" не должны быть доступны всем, кто работает
с коробкой. Они должны быть защищены от прямого доступа к ним.
Только через функции, которые прячутся в этой "коробке". В-третьих,
было бы полезным, чтобы элементы одного дома, спрятанные в "короб-
ке", не хранились там без дела, когда данные дома не обрабатываются,
а были бы использованы, если они подходят и к некоторым другим до-
мам. Чтобы можно было брать такие элементы, не создавая их заново
для другого класса домов, добавлять к ним новые, необходимые для
нового класса, и создавать свою новую "коробку" для нового класса
домов. И т. д. Это уже совсем другой подход к программированию. Он
ориентирован не на модули-процедуры-функции, а на некие объекты, на
то, чтобы в программе они создавались (описывались), чтобы внутри
них хранились функции по обработке данных этих объектов (функции,
естественно, надо разработать, но в рамках описания объекта), чтобы
Do'stlaringiz bilan baham: |