ВУЗ:
Составители:
Рубрика:
56
4. РЕАЛИЗАЦИЯ ОБЪЕКТНОЙ МОДЕЛИ
4.1. Указатели на подпрограммы
Поскольку появление объектно-ориентированного программиро-
вания не привело к расширению набора команд , выполняемых процес -
сорами, становится очевидно, что обобщенные алгоритмы можно созда-
вать и при помощи традиционных языков . В этой части мы построим
пример реализации функций сложения и умножения произвольных мат-
риц, использующий лишь средства процедурного программирования, и
по ходу дела отметим преимущества, которые дает применение объект -
ного расширения. Приводимый здесь код пом огает также понять, как
реализуется объектная модель в некоторых современных яз ы к ах.
Для выполнения динамического связывания нам потребуется ма-
нипулировать адресами подпрограмм. Делается это при помощи специ-
альных указ ателей, описанию которых и посвящен данный параграф.
Читатели, знакомые с этим материалом , могут сразу перейти к § 4.2.
Как известно, любой элемент данных в компьютерах фон - Ней-
маннов ского типа характеризуется тремя величинами: размером области
памяти, которую он занимает, адресом этой области и собственно значе-
нием . Объявление переменной x типа Integer трактуется компилятором
как необходимость зарезервировать область памяти размером в одно
машинное слово (именно столько требует для хранения тип Integer) и
обозначить ее адрес через x. После этого любое обращение к перемен-
ной x интерпретируется им как операция с ячейкой п о а д ресу x.
Поскольку каждая подпрограмма размещается в той же физиче-
ской п а мяти, что и данные, для нее также определены указанные три
величины , из которых нас интересует только одна — адрес . Как и в слу-
чае переменных, символическим обозначением этого адреса служит имя
подпрограммы, для операций же с ним используются указатели особого
вида — процедурные.
Для начала рассмотрим пример функции, вычисляющей опред е-
ленный интеграл методом трапеций.
function Integral(xmin, xmax: Real): Real;
var i: Integer; dx: Real;
begin
dx:=(xmax-xmin)/100;
result:=(f(xmin)+f(xmax))*dx/2;
4. Р Е А Л И ЗА Ц И Я О Б ЪЕ К Т Н О Й М О Д Е Л И
4.1. У казатели на п одп ро граммы
Пос кол ь ку появ л ение объект но-ориент иров анного програм м иро-
в ания не прив ел о к рас ш ирению набора ком анд , в ы пол няем ы хпроцес -
с орам и, с т анов ит с я очев ид но, чтообобщенны е ал горит м ы м ожнос оз д а-
в ат ь и при пом ощи т рад иционны хяз ы ков . В э той час т и м ы пос т роим
прим ер реал из ации функций с л ожения и ум ножения произ в ол ь ны хм ат -
риц, ис пол ь з ующий л иш ь с ред с т в а процед урного програм м иров ания, и
поход у д ел а от м ет им преим ущес т в а, которы е д ает прим енение объект -
ного рас ш ирения. Прив од им ы й з д ес ь код пом огает т акже понят ь , как
реал из ует с я объект ная м од ел ь в некоторы хс ов рем енны хяз ы ках.
Дл я в ы пол нения д инам ичес кого с в яз ы в ания нам пот ребует с я м а-
нипул иров ат ь ад рес ам и под програм м . Дел ает с я э топри пом ощи с пеци-
ал ь ны х указ ат ел ей, опис анию которы х и пос в ящен д анны й параграф.
Ч ит ат ел и, з наком ы е с э т им м ат ериал ом , м огут с раз у перейт и к § 4.2.
Как из в ес т но, л юбой эл ем ент д анны х в ком пь ют ерах фон-Н ей-
м аннов с когот ипа характ ериз ует с я т рем я в ел ичинам и: раз м ером обл ас т и
пам ят и, которую он з аним ает, ад рес ом э той обл ас т и и с обс т в енноз наче-
нием . Объяв л ение перем енной x т ипа Integer т ракт ует с я ком пил ятором
как необход им ос т ь з арез ерв иров ат ь обл ас т ь пам ят и раз м ером в од но
м аш инное с л ов о (им енно с тол ь ко т ребует д л я хранения т ип Integer) и
обоз начит ь ее ад рес через x. Пос л е э того л юбое обращение к перем ен-
ной x инт ерпрет ирует с я им как операция с ячейкой поад рес у x.
Пос кол ь ку кажд ая под програм м а раз м ещает с я в той же физ иче-
с кой пам ят и, что и д анны е, д л я нее т акже опред ел ены указ анны е т ри
в ел ичины , из которы хнас инт ерес ует тол ь коод на — ад рес . Как и в с л у-
чае перем енны х, с им в ол ичес ким обоз начением э тогоад рес а с л ужит им я
под програм м ы , д л я операций же с ним ис пол ь з уют с я указ ат ел и ос обого
в ид а — процед урны е.
Дл я начал а рас с м от рим прим ер функции, в ы чис л яющей опред е-
л енны й инт еграл м етод ом т рапеций.
function Integral(xmin, xmax: Real): Real;
var i: Integer; dx: Real;
begin
dx:=(xmax-xmin)/100;
result:=(f(xmin)+f(xmax))*dx/2;
56
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »
