Указатели. Ссылочные переменные.




Система 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 члены видны отовсюду в пределах модуля, в котором определен класс.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: