Система PascalABC.NET
PascalABC.NET – это язык Delphi (Object Pascal) для платформы Microsoft.NET, содержащий все основные элементы современных языков программирования, включает в себя простую интегрированную среду, ориентированную на эффективное обучение программированию. Платформа Microsoft.NET - это комплекс программ, устанавливаемый поверх операционной системы и обеспечивающий выполнение программ, написанных специально для .NET. .NET -программы компактны, пользуются единым набором типов данных и библиотек. Интегрированная среда PascalABC.NET обеспечивает подсветку синтаксиса, подсказку по коду (подсказка по точке, подсказка параметров подпрограмм, всплывающая подсказка по коду), форматирование текста программы по запросу, переход к определению и реализации имени, элементы рефакторинга.
Внутренние представления PascalABC.NET позволяют создавать компиляторы других языков программирования и встраивать их в среду с помощью специальных плагинов.
Принципы объектно-ориентированного программирования.
Основой ООП является объект, который представляется как совокупность данных, характеристик, его состояние и функции их обработки, модулирующих его поведение.
Свойства ООП:
1.Абстракция – выделение в реальном объекте его существенных свойств и абстрагирование от мелких деталей.
2. Инкапсуляция – механизм, связывающий вместе код и данные, которыми он манипулирует и защищающего его от внешних помех и несанкционированного использования. Основной единицей является класс, определяющий форму объекта (его шаблон, свойства и др.).
3. Наследование – процесс, с помощью которого один объект приобретает свойства другого, исключающий из программы повтор фрагментов кода, упрощение модификации программ, упрощение создания новых программ, на основе предыдущих – иерархия объектов.
4. Полиморфизм – свойство, позволяющее использовать один и тот же интерфейс для общего класса действий.
Указатели. Ссылочные переменные.
Указатель - это ячейка памяти, хранящая адрес. В PascalABC.NET указатели делятся на типизированные (содержат адрес ячейки памяти данного типа) и бестиповые (содержат адрес оперативной памяти, не связанный с данными какого-либо определенного типа).
Тип указателя на тип T имеет форму ^T, например:
type pinteger = ^integer;
var p: ^record r,i: real end;
Бестиповой указатель описывается с помощью слова pointer.
Для доступа к ячейке памяти, адрес которой хранит типизированный указатель, используется операция разыменования ^:
var
i: integer;
pi: ^integer;
...
pi:= @i; // указателю присвоили адрес переменной i
pi^:= 5; // переменной i присвоили 5
Операция разыменования не может быть применена к бестиповому указателю.
Типизированный указатель может быть неявно преобразован к бестиповому:
var
p: pointer;
pr: ^real;
...
p:= pr;
Обратное преобразование также может быть выполнено неявно:
pr:= p;
pr^:= 3.14;
Указатели можно сравнивать на равенство (=) и неравенство (<>). Для того чтобы отметить тот факт, что указатель никуда не указывает, используется стандартная константа nil (нулевой указатель): p:= nil.
15. Переменная Self:
Внутри каждого нестатического метода неявно определяется переменная Self, ссылающаяся на объект, вызвавший этот метод.
Например:
type
<имя класса> = class
i: integer;
constructor Create(i: integer);
begin
Self.i:= i;
end;
end;
В момент вызова конструктора Create объект будет уже создан. Конструкция Self.i ссылается на поле i этого объекта, а не на параметр i функции Create. Фактически в любом нестатическом методе перед именем любого поля и методу этого класса неявно присутствует Self.
11. Понятие класса. Инициализаторы полей:
Класс представляет собой составной тип, состоящий из полей (переменных), методов (процедур и функций) и свойств. Переменные типа класс называются объектами или экземплярами класса.
Описание класса имеет вид:
type
<имя класса> = class
<описания полей>
<объявления или описания методов и описания свойств>
end;
После слова class в скобках может быть указано имя класса-предка. Поля и методы образуют интерфейс класса.
Объект класса создается с помощью служебного слова new:
var <переменная типа класс>:= new <имя класса>();
При создании объекта его поля инициализируются автоматически нулевыми значениями если они не инициализированы явно. Их инициализация может проводиться как в конструкторе, так и непосредственно при описании. Инициализация поля при описании приводит к тому, что код инициализации вставляется в начало ВСЕХ конструкторов.
12. Видимость членов класса:
Каждое поле, метод или свойство класса имеет атрибут видимости. В PascalABC.NET существуют четыре типа атрибутов видимости: public (открытый), private (закрытый), protected (защищенный) и internal (внутренний). К члену класса, имеющему атрибут public, можно обратиться из любого места программы, члены класса с атрибутом private доступны только внутри методов этого класса, члены класса с атрибутом protected доступны внутри методов этого класса и всех его подклассов, члены класса с атрибутом internal доступны внутри сборки. Кроме того, private и protected члены видны отовсюду в пределах модуля, в котором определен класс.