
- •Определение. История
- •Этапы разработки программы
- •Состав языка Pascal
- •Типы данных в Pascal
- •Операции над переменными целого типа
- •Операции кроме div и mod
- •16 Вопрос
- •17 Вопрос
- •18 Вопрос
- •19.Конструкторы и деструкторы классов. Синтаксис, пример применения.
- •Свойства
- •20.Зоны видимости полей и методов. Понятие «свойства» класса.
Свойства
Помимо полей и методов, в объекте могут участвовать и свойства. При работе с объектом свойства могут выглядеть как поля. Они принимают определённые значения и могут участвовать в различных операциях. В отличие от полей свойства не занимают место в памяти, а операции их чтения и записи ассоциируются с обычными полями и методами.
Объявление свойства с помощью Property, затем имя свойства и его тип. Помимо этого нужны два спецификатора – read(метод чтения) и write(метод записи).
Property<имя>:<тип>
read<метод чтения>
Write<метод записи>;
После read – поле или метод, к которому происходит обращение при чтении значения свойства
После write – поле или метод, к которому происходит обращение при установлении значения свойства
Type TPoint = class;
X,y:real;
Для защиты полей их дублируют свойствами
Property Fx:real read x
Write set x;
Property Fy:real read y
Write set y;
Function set x(xx:real):real;
…
End;
Function TPoint.SetX(…):real;
Begin
TPoint.Fx:xx;
End;
20.Зоны видимости полей и методов. Понятие «свойства» класса.
Программист может ограничить доступ к атрибутам своих объектов для других программистов (в том числе и для самого себя) с помощью специальных ключевых слов
Type TClass: class;
Private(всё, что объявлено в этой секции, недоступно за пределами модуля, но доступно в пределах этого модуля)
Protected(всё, что объявлено в этой секции, доступно только потомкам данного класса)
Public/Published(всё, что объявлено в этой секции, доступно за пределами данного модуля)
Type TClass = class
Public
A:real;
Function fa:real;
Protected
B:real;
Function fb:real;
Private
C:real;
Function fc:real;
Есть две ситуации:
1.Тот модуль
Var cc:Tclass;
Begin
cc.a:=0; секция открытая, можно присваивать
cc.b:=1;class является потомком самого себя
cc.c:=2;
2. Из другого модуля
На cc.b и cc.c компилятор будет ругаться, а с сс.а – всё ок