Читаем Описание языка PascalABC.NET полностью

type

Person = class

private

fName: string;

fAge: integer;

public

constructor Create(Name: string; Age: integer);

begin

fName := Name;

fAge := Age;

end;

procedure Print;

property Name: string read fName;

property Age: integer read fAge;

end;

procedure Person.Print;

begin

writelnFormat('Имя: {0} Возраст: {1}', Name, Age);

end;

После слова class в скобках может быть указано имя класса-предка (см. Наследование), а также через запятую список поддерживаемых интерфейсов.

Перед словом class может быть указано ключевое слово final в этом случае от класса запрещено наследовать.

Все описания и объявления внутри класса образуют тело класса. Поля и методы образуют интерфейс класса. Инициализаторы полей описаны здесь.

Классы могут описываться только на глобальном уровне. Локальные определения классов (т.е. определения в разделе описания подпрограмм) запрещены.

Переменные типа класс

В языке PascalABC.NET классы являются ссылочными типами. Это значит, что переменная типа класс хранит в действительности ссылку на объект.

Переменные типа класс называются объектами или экземплярами класса. Они инициализируются вызовом конструктора класса - специального метода, выделяющего память под объект класса и инициализирующего его поля:

var p: Person := new Person('Иванов',20);

После инициализации через переменную типа класс можно обращаться к публичным членам класса (полям, методам, свойствам), используя точечную нотацию:

Print(p.Name,p.Age);

p.Print;

Вывод переменной типа класс

По умолчанию процедура write для переменной типа класс выводит содержимое её публичных полей и свойств в круглых скобках через запятую:

write(p); // Иванов 20

Чтобы изменить это поведение, в классе следует переопределить виртуальный метод ToString класса Object - в этом случае именно он будет вызываться при выводе объекта.

Например:

type

Person = class

...

function ToString: string; override;

begin

Result := string.Format('Имя: {0} Возраст: {1}', Name, Age);

end;

end;

...

var p: Person := new Person('Иванов',20);

writeln(p); // Имя: Иванов Возраст: 20

Присваивание и передача в качестве параметров подпрограмм

Переменная типа класс является ссылкой и хранит ссылку на объект, создаваемый вызовом конструктора.

Как ссылка переменная типа класс может хранить значение nil:

p := nil;

...

if p = nil then ...

При присваивании переменных типа класс копируется только ссылка. После присваивания обе переменные типа класс будут ссылаться на один объект и совместно модифицировать его:

var p1,p2: Person;

...

p1 := new Person('Петров',20);

p2 := p1;

p1.IncAge;

p2.Print; // Имя: Петров Возраст: 21

Сравнение на равенство

При сравнении переменных типа класс на равенство сравниваются ссылки, а не значения.

var p1 := new Person('Петров',20);

var p2 := new Person('Петров',20);

writeln(p1=p2); // False

p2 := p1;

writeln(p1=p2); // True

Это поведение можно изменить, перегрузив операцию = для класса.

<p>Видимость членов класса и модификаторы доступа</p>

Каждое поле, метод или свойство класса имеет модификатор (атрибут) доступа, задающий правила его видимости. В PascalABC.NET существуют четыре вида модификаторов доступа: public (открытый), private (закрытый), protected (защищенный) и internal (внутренний). К члену класса, имеющему атрибут public, можно обратиться из любого места программы, члены класса с атрибутом private доступны только внутри методов этого класса, члены класса с атрибутом protected доступны внутри методов этого класса и всех его подклассов, члены класса с атрибутом internal доступны внутри сборки (термин .NET, сборка в нашем понимании - это множество файлов, необходимых для генерации .exe или .dll-файла). Кроме того, private и protected члены видны отовсюду в пределах модуля, в котором определен класс.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных