Паскаль Abc Net


Все типы - классы
Май 26, 2016 – 08:55
Несколько приложений

Можно долго программировать в PascalABC.NET в обычном стиле и не замечать, что все типы стали классами. Но в один прекрасный момент кто-то после имени переменной нажмет точку и ... получит список методов для этой переменной как объекта класса. Например, достаточно описать целую переменную

var i: integer;

и потом набрать в коде

begin i.

После точки всплывет окно с так называемыми экземплярными методами, применимыми к переменной i класса integer. Их всего 6, и на первых порах только один метод из них полезен. Это метод ToString, преобразующий значение i к строке:

var s: string; s := i.ToString;

Точечная запись в самом начале обучения воспринимается в основном в штыки: слишком непосилен груз нового в обучении. Вам будут говорить: 1) это не Паскаль! 2) это только в этом дурацком .NET так! 3) объекты школьникам - это зло, а для студентов надо давать C++ 4) .

Но факт остается фактом - так писать можно, а значит, все равно так будут писать, и вряд ли это можно будет удержать. Ведь вспомнить имя стандартной функции

s := IntToStr(i); будет куда как не проще. К тому же, в Delphi для ее использования модуль SysUtils подключать надо. А, да, забыл - есть еще процедура Str с двумя параметрами, один из которых - ссылочный - она еще в теме "Строки" проходится - где-то через полгодика. А здесь мы получили интуитивно понятную запись и сразу начали ее использовать:

Эту запись можно трактовать двояко. Можно считать, что мы даем команду ToString объекту i, и он по этой команде возвращает свое строковое представление. Можно считать, что объект i имеет в своем составе команду ToString и сам ее вызывает. Последняя идея мне нравится больше: все объекты - активные, каждый имеет свою систему команд и готов их вызывать в любой момент.

Здесь мы сталкиваемся с еще одним психологическим барьером: если даже тип integer - класс, то наверняка программа будет работать очень медленно, ведь в ма-аленькой переменной integer - столько методов! они наверняка все и замедляют! Увы - это неверно. На скорость работы программы наличие большого числа методов у объекта класса никак не сказывается.

Source: pascalabc.net
Похожие публикации