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
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Виртуальные методы и полиморфизм

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

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

Для пояснения рассмотрим переопределение метода в подклассе:

type

Base = class

public

procedurePrint;

begin

writeln('Base');

end;

end;

Derived = class(Base)

public

procedurePrint;

begin

writeln('Derived');

end;

end;

Присвоим переменной базового класса Base объект производного класса Derived и вызовем метод Print.

varb: Base := new Derived;

b.Print;

Какая версия метода Print вызывается - класса Base или класса Derived? В данном случае решение будет принято еще на этапе компиляции: вызовется метод Print класса Base, заявленного при описании переменной b. Говорят, что имеет место раннее связывание имени метода с его телом. Если же решение о том, какой метод вызывать, принимается на этапе выполнения программы в зависимости от реального типа объекта, на который ссылается переменная b, то в данном случае вызывается метод Derived.Print (говорят также, что имеет место позднее связывание ). Методы, для которых реализуется позднее связывание, называются виртуальными , а переменная базового класса, через которую осуществляется вызов виртуального метода, - полиморфной переменной . Таким образом, полиморфизм реализуется вызовом виртуальных функций через переменную базового класса. Тип класса, который хранится в данной переменной на этапе выполнения, называется динамическим типом этой переменной.

Для того чтобы сделать метод виртуальным, следует в объявлении этого метода после заголовка указать ключевое слово virtualс последующей ;. Для переопределения виртуального метода следует использовать ключевое слово override:

type

Base = class

public

procedurePrint; virtual;

begin

writeln('Base');

end;

end;

Derived = class(Base)

public

procedurePrint; override;

begin

writeln('Derived');

end;

end;

Теперь в аналогичном участке кода.

varb: Base := new Derived;

b.Print;

вызывается метод Print класса Derived за счет того что решение о вызове метода откладывается на этап выполнения программы.

Говорят, что методы Print завязаны в цепочку виртуальности . Чтобы разорвать ее (не вызывать методы в подклассах виртуально) используется ключевое слово reintroduce:

type

DerivedTwice1 = class(Derived)

public

procedurePrint; reintroduce;

begin

writeln('DerivedTwice1');

end;

end;

Если мы хотим начать новую цепочку виртуальности, то следует использовать и virtualи reintroduce:

type

DerivedTwice2 = class(Derived)

public

procedurePrint; virtual; reintroduce;

begin

writeln('DerivedTwice2');

end;

end;

Если переопределить виртуальную функцию невиртуальной без ключевого слова reintroduce, то ошибки не произойдет - будет выведено лишь предупреждение о том, что цепочка виртуальности нарушена. Таким образом, ключевое слово reintroduceв этой ситуации лишь подавляет вывод предупреждения.

При переопределении виртуального метода в подклассе его уровень доступа должен быть не ниже, чем в базовом классе. Например, publicвиртуальный метод не может быть переопределен в подклассе private-методом.

Абстрактные методы

Методы, предназначенные для переопределения в подклассах, объявляются с ключевым словом abstractи называются абстрактными. Данные методы являются виртуальными, но ключевое слово virtualиспользовать не нужно. Например:

type

Shape = class

private

x,y: integer;

public

constructorCreate(xx,yy: integer);

begin

x := xx;

y := yy;

end;

procedureDraw; abstract;

end;

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

Классы с абстрактными методами используются как полуфабрикаты для создания других классов. Например:

type

Point = class(Shape)

public

procedureDraw; override;

begin

PitPixel(x,y,Color.Black);

end;

end;

Использование overrideпри переопределении абстрактных методов обязательно, поскольку абстрактные методы являются разновидностью виртуальных.

Перегрузка операций

Перегрузка операций - это средство языка, позволяющее вводить операции над типами, определяемыми пользователем. В PascalABC.NETможно использовать только предопределенные значки операций. Перегрузка операций для типа T, являющегося классом или записью, осуществляется при помощи статической (классовой) функции-метода со специальным именем operator ЗнакОперации . Перегрузка специальных операций +=, -=, *=, /= осуществляется с помощью статической (классовой) процедуры-метода, первый параметр которой передается по ссылке.

Например:

type

Complex = record

re,im: real;

class function operator+(a,b: Complex): Complex;

begin

Result.re := a.re + b.re;

Result.im := a.im + b.im;

end;

class function operator=(a,b: Complex): boolean;

begin

Result := (a.re = b.re) and(a.im = b.im);

end;

end;

Для перегрузки операций действуют следующие правила:

* Перегружать можно все операции за исключением @ (взятие адреса), as, is, new. Кроме того, можно перегружать специальные бинарные операции +=, -=, *=, /=, не возвращающие значений.

* Перегружать можно только еще не перегруженные операции.

* Тип по крайней мере одного операнда должен совпадать с типом класса или записи, внутри которого определена операция.

* Перегрузка осуществляется с помощью статической функции-метода, количество параметров которой совпадает с количеством параметров соответствующей операции (2 - для бинарной, 1 - для унарной).

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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