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

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

W Cat - Описание языка PascalABC.NET краткое содержание

Описание языка PascalABC.NET - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru


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


PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.


PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.

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

Описание языка PascalABC.NET - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

varp: Person;

p := Person.Create('Иванов',20);

2 способ.С помощью операции new - в стиле C# (предпочтительный).

varp: Person;

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

Деструктор в Object Pascal - специальная процедура, уничтожающая объект и освобождающая динамическую память, которую этот объект занимал. При описании деструктора вместо служебного слова procedureиспользуется служебное слово destructor.

Например:

destructorDestroy;

begin

...

end;

Поскольку в PascalABC.NETпамять управляется сборщиком мусора, деструктор в PascalABC.NETне играет никакой роли и представляет собой обычную процедуру-метод.

Предварительное объявление классов

Два или более класса могут содержать в качестве полей объекты других классов, циклически ссылающиеся друг на друга.

Например:

type

AAA = class

b: BBB;

end;

BBB = class

a: AAA;

end;

Данный код вызовет ошибку компиляции, поскольку тип BBB в момент описания поля b еще не определен. В такой ситуации следует воспользоваться предварительным описанием класса в виде

ИмяКласса = class;

Предварительно описанный класс должен быть полностью описан в той же секции type:

type

BBB = class;

AAA = class

b: BBB;

end;

BBB = class

a: AAA;

end;

Переменная Self

Внутри каждого нестатического метода неявно определяется переменная Self, ссылающаяся на объект, вызвавший этот метод.

Например:

type

A = class

i: integer;

constructorCreate(i: integer);

begin

Self.i := i;

end;

end;

В момент вызова конструктора Create объект будет уже создан. Конструкция Self.i ссылается на поле i этого объекта, а не на параметр i функции Create. Фактически в любом нестатическом методе перед именем любого поля и методу этого класса неявно присутствует Self.

Свойства

Свойство внешне выглядит как поле класса, однако, при доступе к нему на чтение или запись позволяет выполнять некоторые действия. Свойство описывается в классе следующим образом:

propertyProp: тип readимя функции чтения writeимя процедуры записи;

Как правило, каждое свойство связано с некоторым полем класса и возвращает значение этого поля с помощью функции чтения , а меняет - с помощью процедуры записи . Функция чтения и процедура записи должны быть методами этого класса и иметь следующий вид:

functiongetProp: тип;

proceduresetProp(v: тип);

Обычно функция чтения и процедура записи описываются в приватной секции класса. Они могут быть виртуальными, в этом случае их уместно описывать в защищенной секции класса.

Вместо имени функции чтения и имени процедуры записи может фигурировать имя поля, с которым данное свойство связано. Любая из секций readили writeможет быть опущена, в этом случае мы получаем свойство с доступом только на запись или только на чтение.

Например:

type

Person = class

private

nm: string;

ag: integer;

proceduresetAge(a: integer);

begin

ifa>=0 then

ag := a

else raisenew Exception('Возраст не может быть отрицательным');

end;

functiongetId: string;

begin

Result := nm + ag.ToString;

end;

public

...

propertyAge: integer readаg writesetAge;

propertyName: string readnm;

propertyId: string readgetId;

end;

varp: Person;

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

p.Age := -3; // генерируется исключение

vari: integer := p.Age;

writeln(p.Id);

Всякий раз, когда мы присваиваем свойству Age новое значение, вызывается процедура setAge с соответствующим параметром. Всякий раз, когда мы считываем значение свойства Age, происходит обращение к полю ag. Поле nm доступно только на чтение. Наконец, свойство Id осуществляет доступ на чтение к информации, находящейся в двух полях.

Обычно для доступа к полю на чтение в секции readсвойства указывается именно поле, так как обычно при чтении поля никаких дополнительных действий производить не требуется.

Свойства не могут передаваться по ссылке в процедуры и функции. Например, следующий код ошибочен:

Inc(p.Age); // ошибка!

Если требуется обработать значение свойства, передав его по ссылке, то надо воспользоваться вспомогательной переменной:

a := p.Age;

Inc(a);

p.Age := a;

Однако, свойства соответствующих типов можно использовать в левой части операций присваивания += -= *= /=:

p.Age += 1;

Свойства очень удобны при работе с визуальными объектами, поскольку позволяют автоматически перерисовывать объект, если изменить какие-либо его визуальные характеристики. Например, если создана кнопка b1 типа Button, то для визуального изменения ее ширины достаточно присвоить значение ее свойству Width:

b1.Width := 100;

Процедура для записи этого свойства в приватное поле fwidth будет выглядеть примерно так:

procedureSetWidth(w: integer);

begin

if(w>0) and(w<>fwidth) then

begin

fwidth := w;

код перерисовки кнопки

end

end;

Следует обратить внимание на вторую часть условия в операторе if: w<>fwidth. Добавление этой проверки позволяет избежать лишней перерисовки кнопки в случае, если ее ширина не меняется.

Индексные свойства

Индексные свойства ведут себя аналогично полям-массивам и используются, как правило, для доступа к элементам контейнеров. Как и при использовании обычных свойств, при использовании индексных свойств могут попутно выполняться некоторые действия.

Индексное свойство описывается в классе следующим образом:

propertyProp[описание индексов]: тип readимя функции чтения writeимя процедуры записи;

В простейшем случае одного индекса описание индексного свойства выглядит так:

propertyProp[ind: тип индекса]: тип readимя функции чтения writeимя процедуры записи;

В этом случае функция чтения и процедура записи должны быть методами этого класса и иметь следующий вид:

functionGetProp(ind: тип индекса): тип;

procedureSetProp(ind: тип индекса; v: тип);

Всякий раз, когда мы для объекта a, содержащего свойство Prop, выполняем присваивание a.Prop[ind] := value, вызывается процедура SetProp(ind,value), а когда считываем значение a.Prop[ind], вызывается функция GetProp(ind).

Индексное свойство, после которого добавлено ключевое слово defaultс последующей ;, называется индексным свойством по умолчанию и позволяет пользоваться объектами класса как массивами, т.е. использовать запись a[ind] вместо a.Prop[ind].

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

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Описание языка PascalABC.NET отзывы


Отзывы читателей о книге Описание языка PascalABC.NET, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x