PersonUnit (Наследование) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
 
Строка 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>

Версия 21:08, 18 мая 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.