Введение в объектно-ориентированное программирование на языке Object Pascal. Соколов Е.В. - 8 стр.

UptoLike

Составители: 

8
Основное назначение раздела инициализации задание старто-
вых значений переменных (например, с помощью датчика случайных
чисел ) и размещение в памяти динамических структур данных. Раздел
финализации испол ь зуется для освобождения ресурсов , которые могли
быть заняты в процессе выполнения раздела инициализации и подпро-
грамм из раздела реализации. Т ипичными задачами являются удаление
динамически созданных переменных, закрытие файлов и т . п .
Следует учитывать, что раздел финализации может быть вызван
до завершения раздела инициализации. Такая ситуация возникает, если в
процес се выполнения последнего появляется ошибка или, говоря более
точно, необработанная исключительная ситуация.
В заключение этого параграфа приведем пример реализации би б-
лиотеки для работы с рациональными числами. Она включает определ е-
ния нового типа Rational записи с двумя полями целого типа num и den
для хранения числителя и знаменателя и восьми подпрограмм, рабо-
тающих с данными этого типа. Первые четыре: функции Plus, Minus, Dot
и Slash, представляют собой обычные операторы сложения, вычитания,
умножения и деления рациональных чисел . Оставшиеся процедуры реа-
лизуют так называемые операторы с присвоением. Их отл ичие состоит в
том , что рез ультат выполнения соответствующей операции сохраняется в
первом аргументе. Так, например, вызов процед уры Add:
Add(r1, r2);
эквивалентен выражению
r1 := Plus(r1, r2);
Очевидно, что использование первой инструкции эффективнее:
исчезает лишняя операция присваивания. Кроме того, в следующей час ти
мы увидим , что разрабатывать и использовать операторы с присвоением
иногда оказывается проще, чем обычные алгебраические опера ции.
Пример 1.1. Библиотека для работы с рациональными числами.
unit UnitRational;
interface
// объявление типа Rational
type
Rational = record // рациональное число
num: Integer; // числитель (numerator)
den: Integer; // знаменатель (denominator)
end;
         Ос нов ное наз начение раз д ел а инициал из ации — з ад ание с т арто-
в ы х з начений перем енны х (наприм ер, с пом ощь ю д ат чика с л учайны х
чис ел ) и раз м ещение в пам ят и д инам ичес кихс т рукт ур д анны х. Раз д ел
финал из ации ис пол ь з ует с я д л я ос в обожд ения рес урс ов , которы е м огл и
бы т ь з анят ы в процес с е в ы пол нения раз д ел а инициал из ации и под про-
грам м из раз д ел а реал из ации. Т ипичны м и з ад ачам и яв л яют с я уд ал ение
д инам ичес ки с оз д анны хперем енны х, з акры т ие файл ов и т. п.
         Сл ед ует учит ы в ат ь , что раз д ел финал из ации м ожет бы т ь в ы з в ан
д оз ав ерш ения раз д ел а инициал из ации. Т акая с ит уация в оз никает, ес л и в
процес с е в ы пол нения пос л ед негопояв л яет с я ош ибка ил и, гов оря бол ее
точно, необработ анная ис кл ючит ел ь ная с ит уация.
         В з акл ючение э тогопараграфа прив ед ем прим ер реал из ации биб-
л иот еки д л я работ ы с рационал ь ны м и чис л ам и. Она в кл ючает опред ел е-
ния нов огот ипа Rational — з апис и с д в ум я пол ям и цел огот ипа num и den
д л я хранения чис л ит ел я и з нам енат ел я — и в ос ь м и под програм м , рабо-
т ающихс д анны м и э тогот ипа. Перв ы е чет ы ре: функции Plus, Minus, Dot
и Slash, пред с т ав л яют с обой обы чны е операторы с л ожения, в ы чит ания,
ум ножения и д ел ения рационал ь ны хчис ел . Ос т ав ш иес я процед уры реа-
л из уют т ак наз ы в аем ы е опе ра торы с присвое н ием. И хотл ичие с ос тоит в
том , чторез ул ьт ат в ы пол нения с оотв ет с т в ующей операции с охраняет с я в
перв ом аргум ент е. Т ак, наприм ер, в ы з ов процед уры Add:
                                   Add(r1, r2);
э кв ив ал ент ен в ы ражению
                                r1 := Plus(r1, r2);
        Очев ид но, что ис пол ь з ов ание перв ой инс т рукции э ффект ив нее:
ис чез ает л иш няя операция прис в аив ания. Кром е того, в с л ед ующей час т и
м ы ув ид им , чтораз рабат ы в ат ь и ис пол ь з ов ать операторы с прис в оением
иногд а оказ ы в ает с я проще, чем обы чны е ал гебраичес кие операции.

Пример 1.1. Б ибл иот ека д л я работ ы с рационал ь ны м и чис л ам и.

unit UnitRational;

interface
// объявление типа Rational
type
  Rational = record // рациональное число
     num: Integer;  // числитель (numerator)
     den: Integer;  // знаменатель (denominator)
  end;



                                         8