PersonUnit (Наследование)
Материал из Вики ИТ мехмата ЮФУ
(перенаправлено с «PersonUnit»)
unit PersonUnit;
interface
uses System;
const
/// Минимальный возможный возраст
MIN_AGE = 1;
/// Максимальный возможный возраст
MAX_AGE = 120;
// --------------------------------------------- Person -------------------------------------------
type
/// Персона
Person = class
private
/// Имя
fName: string;
/// Возраст
fAge: integer;
/// Устанавливает имя равным name, если оно не пусто
procedure SetName(name: string);
/// Устанавливает возраст равным age, если он положителен
/// и не превышает максимально возможного (MAX_AGE)
procedure SetAge(age: integer);
public
/// <summary>
/// Создает новую персону
/// </summary>
/// <param name="Name">Имя (пустое недопустимо)</param>
/// <param name="Age">Возраст (отрицательный недопустим)</param>
constructor Create(Name: string; Age: integer);
/// Имя
property Name: string read fName write SetName;
/// Возраст
property Age: integer read fAge write SetAge;
/// Выводит на консоль информацию о персоне
procedure Print;
end;
implementation
// --------------------------------------------- Person -------------------------------------------
{Устанавливает имя равным name, если оно не пусто}
procedure Person.SetName(name: string);
begin
if name <> '' then
fName := name
else
raise new Exception(
'Попытка задать персоне пустое имя.');
end;
{Устанавливает возраст равным age, если он положителен
и не превышает максимально возможного (MAX_AGE)}
procedure Person.SetAge(age: integer);
begin
if age > 0 then
fAge := age
else
raise new Exception(
'Выход за границы диапазона допустимого возраста [' +
MIN_AGE.ToString + '..' + MAX_AGE.ToString + '].');
end;
constructor Person.Create(Name: string; Age: integer);
begin
SetName(Name);
SetAge(Age);
end;
procedure Person.Print;
begin
WriteFormat(
'Имя: {0} Возраст: {1} ',
fName, fAge);
end;
end.