Разработка классов на языке Object Pascal. Соколов Е.В. - 9 стр.

UptoLike

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

9
лиотечную функцию IntToStr, которая переводит целое число в десятич-
ную систему счисления и возвращает результат в виде ASCII-строки,
символы которой соответствуют цифрам десятичной записи. Из пол у -
ченных таким образом значений функция AsString формирует одну стро-
ку, вставляя между компонентами вектора запятые и заключая всю по-
следовательность в круглые скобки. Разумеется, такой формат не явл я-
ется единственно возможным. Заметим также, что для использования
функции IntToStr необходимо подкл ючить модуль SysUtils.
4. Теперь полученную библиотеку необходимо оформить в виде
модуля. Единственный содержательный момент здесь заключается в том ,
чтобы определить, какие элементы модуля сделать открытыми, а какие
закрытыми. В нашем случае этот вопрос решается однозначно:
1) поскольку вспомогательных подпрограмм библиотека не содер-
жит, все ее проц е дуры и функции должны быть открытыми;
2) тип IVector, необходимый для объявления подпрограмм, также
должен быть открытым;
3) константа, задающая размерность векторов , предшествует опре-
делению типа и, следовательно, заведомо находится в разделе интер-
фейса, т. е. открыта.
Таким образом , все объявления необходимо разместить в разделе
интерфейса, а реализацию подпрограмм в разделе реализации. М о-
дуль SysUtils, о котором шла речь выше , необходим лишь для реализ а-
ции функции AsString. Поэтому его лучше подключить в разделе реал и-
зации (см. обсуждение этого вопроса в § 1.3 из [*]). В результате мы
получаем следующий код .
Пример 1.1.2. Структура модуля из задачи 1.1.
unit UnitIVector;
interface
const Dim = 5;
type IVector = array[1..Dim] of Integer;
function Plus (v1, v2: IVector): IVector;
function Minus (v1, v2: IVector): IVector;
function ScalarProduct(v1, v2: IVector): Integer;
function AreEqual (v1, v2: IVector): Boolean;
procedure Add (var v1, v2: IVector);
procedure Subtract(var v1, v2: IVector);
procedure Assign (var v1, v2: IVector);
function GetLength(v: IVector): Real;
function AsString(v: IVector): String;
л иот ечную функц ию IntToStr, которая перев од ит ц ел ое чис л ов д ес ят ич-
ную с ис т ем у с чис л ения и в оз в ращ ает рез ул ьт ат в в ид е ASCII-с т роки,
с им в ол ы которой с оот в ет с т в уют ц ифрам д ес ят ичной з апис и. И з пол у-
ченны х т аким образ ом з начений функц ия AsString форм ирует од ну с т ро-
ку, в с т ав л яя м ежд у ком понент ам и в ектора з апят ы е и з акл ючая в с ю по-
с л ед ов ат ел ь нос т ь в кругл ы е с кобки. Раз ум еет с я, т акой форм ат не яв л я-
ет с я ед инс т в енно в оз м ожны м . Зам ет им т акже, что д л я ис пол ь з ов ания
функц ии IntToStr необход им опод кл ючит ь м од ул ь SysUtils.
         4. Теперь пол ученную библ иот еку необход им о оформ ит ь в в ид е
м од ул я. Е д инс т в енны й с од ержател ь ны й м ом ент з д ес ь з акл ючает с я в том ,
чтобы опред ел ит ь , какие эл ем ент ы м од ул я с д ел ат ь от кры т ы м и, а какие
з акры т ы м и. В нашем с л учае этот в опрос решает с я од ноз начно:
     1) пос кол ь ку в с пом огат ел ь ны х под програм м библ иот ека не с од ер-
жит, в с е ее проц ед уры и функц ии д ол жны бы т ь от кры т ы м и;
     2) т ип IVector, необход им ы й д л я объяв л ения под програм м , т акже
д ол жен бы т ь от кры т ы м ;
     3) конс т ант а, з ад ающ ая раз м ернос т ь в екторов , пред шес т в ует опре-
д ел ению т ипа и, с л ед ов ат ел ь но, з ав ед ом о наход ит с я в раз д ел е инт ер-
фейс а, т. е. от кры т а.
         Т аким образ ом , в с е объяв л ения необход им ораз м ес т ит ь в раз д ел е
инт ерфейс а, а реал из ац ию под програм м — в раз д ел е реал из ац ии. М о-
д ул ь SysUtils, о котором шл а речь в ы ше, необход им л ишь д л я реал из а-
ц ии функц ии AsString. Поэтом у егол учше под кл ючит ь в раз д ел е реал и-
з ац ии (с м . обс ужд ение этого в опрос а в § 1.3 из [*]). В рез ул ьт ат е м ы
пол учаем с л ед ующ ий код .

Пример1.1.2. С т рукт ура м од ул я из з ад ачи 1.1.

unit UnitIVector;
interface
const Dim = 5;
type IVector = array[1..Dim] of Integer;
function     Plus         (v1, v2: IVector):           IVector;
function     Minus        (v1, v2: IVector):           IVector;
function     ScalarProduct(v1, v2: IVector):           Integer;
function     AreEqual     (v1, v2: IVector):           Boolean;
procedure    Add     (var v1, v2: IVector);
procedure    Subtract(var v1, v2: IVector);
procedure    Assign (var v1, v2: IVector);
function     GetLength(v: IVector): Real;
function     AsString(v: IVector): String;



                                            9