pascalabcnet/InstallerSamples/!Tutorial/15_Classes/Properties.pas

35 lines
1.5 KiB
ObjectPascal
Raw Permalink Normal View History

// Свойства (properties)
2015-05-14 22:35:07 +03:00
type
/// Класс персоны
2015-05-14 22:35:07 +03:00
Person = class
private
nm: string;
ag: integer;
procedure SetAge(a: integer); // Процедура доступа к свойству располагается обычно в приватной секции
2015-05-14 22:35:07 +03:00
begin
if a<0 then // Перед установкой значения свойства мы можем сделать дополнительные проверки
a := 0; // и скорректировать значение свойства, либо сгенерировать исключение
2015-05-14 22:35:07 +03:00
ag := a;
end;
public
constructor (n: string; a: integer);
begin
nm := n; ag := a;
end;
/// Имя персоны
property Name: string read nm; // Свойство Name доступно только на чтение и возвращает значение поля nm
/// Возраст персоны
2015-05-14 22:35:07 +03:00
property Age: integer read ag write SetAge;
procedure Print;
begin
writeln('Имя: ',nm,' Возраст: ',ag);
2015-05-14 22:35:07 +03:00
end;
end;
var p: Person := new Person('Иванов', 20);
2015-05-14 22:35:07 +03:00
begin
writeln('Имя: ',p.Name); // Менять Name нельзя, доступ - только на чтение
p.Age := -1; // Попытка изменения возраста на отрицательное значение приводит к корректировке: возраст становится = 0
writeln('Возраст: ',p.Age);
2015-05-14 22:35:07 +03:00
end.