PersonUnit (Наследование) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Juliet (обсуждение | вклад) (Новая: Категория:Person inheritance) |
Juliet (обсуждение | вклад) м («PersonUnit» переименована в «PersonUnit (Наследование)») |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Категория:Person inheritance]] | [[Категория:Person inheritance]] | ||
+ | <source lang="Delphi"> | ||
+ | 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. | ||
+ | </source> |
Текущая версия на 20:18, 21 мая 2009
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.