ВУЗ:
Составители:
Рубрика:
20
Таким образом , первый аргумент просто ставится перед именем подпро-
грам мы и отделяется от него точкой .
Отсюда следует, в частности, что каждому методу передается по
крайней мере один аргумент — объект, для которого этот метод вызыва-
ется. Данное правило вполне соответствует пониманию метод а как
свойства объекта: нельзя говорить о свойстве, не указав, к чему именно
оно относится. Становится ясно также, почему в рассмотренном выше
примере методы Square и Perimeter объявлены без параметров : необхо-
димая информация будет передана им автоматически.
Новая, не совсем обычная, форма записи в действительности по-
зволяет несколько сократить количество используемых скобок , увеличи-
вая тем с амым читабельность выражений. В самом деле, если элемент
данных, возвращаемый методом - функцией, в свою очередь является объ -
ектом , то для него снова могут быть вызваны соответствующие методы.
В результате, возникают последов а тельности вида
Объект.Метод1(¼).Метод2(¼).Метод3(¼).¼
где метод с номером k относится к классу, которому принадлежит объект,
возвращаемый методом с номером k
-
1.
Рассмотрим , наконец, небольшую программу, демонстрирующую
работу с объектами класса Triangle. Сама возможность привести такой
пример уже сейчас показывает, что для использования класса достаточ-
но лишь иметь представление о его и нтерфейсе и совершенно не обяз а -
тельно знать, как именно реал изуются методы.
Пример 2.2. Использование класса Triangle.
program TestTriangle;
{$APPTYPE CONSOLE}
uses UnitTriangle; // подключаем модуль, в котором
// определен класс Triangle
var t1, t2: Triangle; // объявление объектных переменных
begin
t1:=Triangle.Create; // объекты размещаются в памяти и их адреса
t2:=Triangle.Create; // присваиваются объектным ссылкам
t1.a:=2; t2.a:=3; // полям объектов приписываются
t1.b:=3; t2.b:=4; // конкретные числовые значения
t1.c:=4; t2.c:=5; //
WriteLn('Square of triangle 1: ', t1.Square);
WriteLn('Perimeter of triangle 1: ', t1.Perimeter);
WriteLn('Square of triangle 2: ', t2.Square);
WriteLn('Perimeter of triangle 2: ', t2.Perimeter);
Т аким образ ом , перв ы й аргум ент прос тос т ав ит с я перед им енем под про- грам м ы и отд ел яет с я от неготочкой. От с юд а с л ед ует, в час т нос т и, чтокажд ом у м етод у перед ает с я по крайней м ере од ин аргум ент — объект, д л я которогоэ тот м етод в ы з ы в а- ет с я. Данное прав ил о в пол не с оот в ет с т в ует поним анию м етод а как с в ойс т в а объект а: нел ь з я гов орит ь ос в ойс т в е, не указ ав , к чем у им енно оно от нос ит с я. Ст анов ит с я яс но т акже, почем у в рас с м от ренном в ы ш е прим ере м етод ы Square и Perimeter объяв л ены без парам ет ров : необхо- д им ая информ ация буд ет перед ана им ав том ат ичес ки. Н ов ая, не с ов с ем обы чная, форм а з апис и в д ейс т в ит ел ь нос т и по- з в ол яет нес кол ь кос ократ ит ь кол ичес т в оис пол ь з уем ы хс кобок, ув ел ичи- в ая т ем с ам ы м чит абел ь нос т ь в ы ражений. В с ам ом д ел е, ес л и эл ем ент д анны х, в оз в ращаем ы й м етод ом -функцией, в с в ою очеред ь яв л яет с я объ- ектом , тод л я негос нов а м огут бы т ь в ы з в аны с оот в ет с т в ующие м етод ы . В рез ул ьт ат е, в оз никают пос л ед ов ат ел ь нос т и в ид а Объект.Метод1(¼).Метод2(¼).Метод3(¼).¼ гд е м етод с ном ером k от нос ит с я к кл ас с у, котором у принад л ежит объект, в оз в ращаем ы й м етод ом с ном ером k - 1. Рас с м от рим , наконец, небол ь ш ую програм м у, д ем онс т рирующую работ у с объект ам и кл ас с а Triangle. Сам а в оз м ожнос т ь прив ес т и т акой прим ер уже с ейчас показ ы в ает, чтод л я ис пол ь з ов ания кл ас с а д ос т аточ- нол иш ь им ет ь пред с т ав л ение оегоинт ерфейс е и с ов ерш енноне обяз а- т ел ь ноз нат ь , как им еннореал из уют с я м етод ы . Пример 2.2. И с пол ь з ов ание кл ас с а Triangle. program TestTriangle; {$APPTYPE CONSOLE} uses UnitTriangle; // подключаем модуль, в котором // определен класс Triangle var t1, t2: Triangle; // объявление объектных переменных begin t1:=Triangle.Create; // объекты размещаются в памяти и их адреса t2:=Triangle.Create; // присваиваются объектным ссылкам t1.a:=2; t2.a:=3; // полям объектов приписываются t1.b:=3; t2.b:=4; // конкретные числовые значения t1.c:=4; t2.c:=5; // WriteLn('Square of triangle 1: ', t1.Square); WriteLn('Perimeter of triangle 1: ', t1.Perimeter); WriteLn('Square of triangle 2: ', t2.Square); WriteLn('Perimeter of triangle 2: ', t2.Perimeter); 20
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »