ВУЗ:
Составители:
Рубрика:
59
Все они должны быть замещены в классах-потомках, поэтому добавля-
ем к их открытым интерфейсам объявления:
function IsEqual(n: Number): Boolean; override;
procedure Add (n: Number); override;
procedure Subtract (n: Number); override;
procedure MultiplyBy(n: Number); override;
procedure DivideBy (n: Number); override;
procedure Assign (n: Number); override;
function AsString: String; override;
Очевидно, также, что у нас должна быть возможность определять
и изменять значение, представляемое объектом . Классу Whole для этого
достаточно двух методов :
function GetValue: Integer; virtual; // определение значения
procedure SetValue(val: Integer); virtual; // изменение значения
Что касается класса RGBColor, то здесь возможны два варианта. С
одной стороны , цвет — это вектор длины 3, поэтому, как и в задачах 2.1–
3.1, для чтения-записи компонент можно применять лишь два метода,
передавая им в качестве параметра номер компоненты. С другой стор о-
ны , все цветовые компоненты имеют свои названия и пользователю бы-
ло бы удобнее оперировать именно ими, а не числовыми индексами.
Поэтому мы добавим к классу RGBColor три пары методов , по одной для
каждой компоненты:
procedure SetRed (value: Real); virtual; //
procedure SetGreen(value: Real); virtual; // изменение значений
procedure SetBlue (value: Real); virtual; //
function GetRed: Real; virtual; //
function GetGreen: Real; virtual; // определение значений
function GetBlue: Real; virtual; //
Поскольку теперь мы разрабатываем не один класс, а иерархию,
все введенные методы объявляем виртуальными на случай возможного
наследования от наших классов .
3. Для хранения целого числа добавим к классу Whole одно поле
соот вет с т вующего типа:
value: Integer;
Класс RGBColor снова допускает два варианта: свое поле для ка-
ждой цветовой компоненты или массив из трех вещественных чисел .
Здесь уже необходимо задуматься не об удобстве пользователя (ему поля
все равно недоступны ), а о простоте реализации. Все арифметические
операции выполняются над цветами как над векторами по одним и тем
же правилам для всех компонент. С ледовательно, имеет смысл испол ь -
Вс е они д ол жны бы т ь з ам ещ ены в кл ас с ах-потом ках, поэтом у д обав л я-
ем к их от кры т ы м инт ерфейс ам объяв л ения:
function IsEqual(n: Number): Boolean; override;
procedure Add (n: Number); override;
procedure Subtract (n: Number); override;
procedure MultiplyBy(n: Number); override;
procedure DivideBy (n: Number); override;
procedure Assign (n: Number); override;
function AsString: String; override;
О чев ид но, т акже, чтоу нас д ол жна бы т ь в оз м ожнос т ь опред ел ят ь
и из м енят ь з начение, пред с т ав л яем ое объектом . Кл ас с у Whole д л я этого
д ос т аточнод в ух м етод ов :
function GetValue: Integer; virtual; // определение значения
procedure SetValue(val: Integer); virtual; // изменение значения
Ч токас ает с я кл ас с а RGBColor, тоз д ес ь в оз м ожны д в а в ариант а. С
од ной с тороны , ц в ет — этов ектор д л ины 3, поэтом у, как и в з ад ачах 2.1–
3.1, д л я чт ения-з апис и ком понент м ожно прим енят ь л ишь д в а м етод а,
перед ав ая им в качес т в е парам ет ра ном ер ком понент ы . С д ругой с торо-
ны , в с е ц в етов ы е ком понент ы им еют с в ои наз в ания и пол ь з ов ат ел ю бы -
л о бы уд обнее опериров ат ь им енно им и, а не чис л ов ы м и инд екс ам и.
Поэтом у м ы д обав им к кл ас с у RGBColor т ри пары м етод ов , поод ной д л я
кажд ой ком понент ы :
procedure SetRed (value: Real); virtual; //
procedure SetGreen(value: Real); virtual; // изменение значений
procedure SetBlue (value: Real); virtual; //
function GetRed: Real; virtual; //
function GetGreen: Real; virtual; // определение значений
function GetBlue: Real; virtual; //
Пос кол ь ку т еперь м ы раз рабат ы в аем не од ин кл ас с , а иерархию,
в с е в в ед енны е м етод ы объяв л яем в ирт уал ь ны м и на с л учай в оз м ожного
нас л ед ов ания от наших кл ас с ов .
3. Дл я хранения ц ел огочис л а д обав им к кл ас с у Whole од нопол е
с оот в ет с т в ующ егот ипа:
value: Integer;
Кл ас с RGBColor с нов а д опус кает д в а в ариант а: с в ое пол е д л я ка-
жд ой ц в етов ой ком понент ы ил и м ас с ив из т рех в ещ ес т в енны х чис ел .
Зд ес ь уже необход им оз ад ум ат ь с я не об уд обс т в е пол ь з ов ат ел я (ем у пол я
в с е рав но нед ос т упны ), а о прос тот е реал из ац ии. Вс е арифм ет ичес кие
операц ии в ы пол няют с я над ц в ет ам и как над в екторам и поод ним и т ем
же прав ил ам д л я в с ех ком понент. С л ед ов ат ел ь но, им еет с м ы с л ис пол ь -
59
Страницы
- « первая
- ‹ предыдущая
- …
- 57
- 58
- 59
- 60
- 61
- …
- следующая ›
- последняя »
