W Cat - Описание языка PascalABC.NET

Здесь есть возможность читать онлайн «W Cat - Описание языка PascalABC.NET» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, Детская образовательная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Описание языка PascalABC.NET: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Описание языка PascalABC.NET»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

Описание языка PascalABC.NET — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Описание языка PascalABC.NET», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Например:

type

Complex = record

...

class function operator implicit(d: real): Complex;

begin

Result.re := d;

Result.im := 0;

end;

class function operator explicit(c: Complex): string;

begin

Result := Format('({0},{1})',c.re,c.im);

end;

class procedure operator+=( varc: Complex; value: Complex);

begin

c.re += value.re;

c.im += value.im;

end;

class function operator+(c,c1: Complex): Complex;

begin

Result.re := c.re + c1.re;

Result.im := c.im + c1.im;

end;

end;

Можно перегружать операции с помощью методов расширения - в этом случае при описании подпрограммы не писать слово class. Например, так в системном модуле реализовано добавление числа к строке:

function string.operator+(str: string; n: integer): string;

begin

result := str + n.ToString;

end;

Классовые поля, методы и конструкторы

В классе можно объявить так называемые классовые ( статические ) поля и методы. Они не принадлежат конкретному экземпляру класса, а связаны с классом. Для их вызова используется точечная нотация, причем, перед точкой используется не имя объекта, а имя класса. Чтобы поле или метод сделать классовым (статическим), перед его именем следует указать ключевое слово class.

Например, определим для класса Person количество созданных объектов этого класса как статическое поле и организуем доступ к этому полю на чтение с помощью статической функции. После каждого вызова конструктора значение статического поля будет увеличиваться на 1:

type

Person = class

private

name: string;

age: integer;

classcnt: integer := 0;

public

constructor(n: string; a: integer);

begin

cnt += 1;

name := n;

age := a;

end;

class functionCount: integer;

begin

Result := cnt;

end;

end;

begin

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

varp1: Person := new Person('Петров',18);

writeln(Person.Count); // обращение к классовому методу Count

end.

В отличие от классовых полей и методов, обычные поля и методы называются экземплярными. Из обычных методов можно обращаться к экземплярным и классовым полям, но из классовых методов можно обращаться только к классовым полям.

Аналогично можно определить также классовый (статический) конструктор, предназначенный для автоматической инициализации классовых полей. Классовый конструктор описывается с ключевым словом classи гарантированно вызывается перед вызовом любого статического метода и созданием первого объекта этого класса.

Например, определим в классе Person классовое поле - массив объектов типа Person - и инициализируем его в классовом конструкторе. Потом указанный массив можно использовать в реализации классовой функции RandomPerson, возвращающей случайный объект типа Person:

type

Person = class

private

classarr: array ofPerson;

name: string;

age: integer;

public

classconstructor;

begin

SetLength(arr,3);

arr[0] := newPerson('Иванов',20);

arr[1] := newPerson('Петрова',19);

arr[2] := newPerson('Попов',35);

end;

//...

class functionRandomPerson: Person;

begin

Result := arr[Random(3)];

end;

end;

constcnt = 10;

begin

vara := newPerson[cnt];

for vari:=0 toa.Length-1 do

a[i] := Person.RandomPerson;

end.

Методы расширения

Любой существующий класс, хранящийся во внешней dll, и все классы стандартной библитеки .NET можно расширить новыми методами. Такие методы расширения отличаются от обычных подпрограмм тем. что перед именем подпрограммы ставится имя расширяемого класса с точкой. Например:

procedureinteger.Print;

begin

write(Self)

end;

begin

var i := 1;

i.Print;

end.

Можно расширить интерфейс, тогда все классы, реализующие этот интерфейс, получат этот метод. Например, в системном модуле PABCSystem так расширен стандартный интерфейс IEnumerable методом Print:

function System.Collections.Generic.IEnumerable.Print(): IEnumerable;

begin

var g := Self.GetEnumerator();

if g.MoveNext() then

write(g.Current);

while g.MoveNext() do

write(' ', g.Current);

Result := Self;

end;

В результате все классы, реализующие интерфейс IEnumerable, расширяются методом Print:

function System.Collections.Generic.IEnumerable.Print(): IEnumerable;

begin

var g := Self.GetEnumerator();

if g.MoveNext() then

write(g.Current);

while g.MoveNext() do

write(' ', g.Current);

Result := Self;

end;

С помощью методов расширения можно перегружать операции.

Для методов расширения имеется ряд ограничений:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Описание языка PascalABC.NET»

Представляем Вашему вниманию похожие книги на «Описание языка PascalABC.NET» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Catie Disabato - The Ghost Network
Catie Disabato
Отзывы о книге «Описание языка PascalABC.NET»

Обсуждение, отзывы о книге «Описание языка PascalABC.NET» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x