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

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая: Категория:Person inheritance <source lang="Delphi"> </source>)
 
Строка 1: Строка 1:
 
[[Категория:Person inheritance]]
 
[[Категория:Person inheritance]]
 
<source lang="Delphi">
 
<source lang="Delphi">
 +
unit StudentUnit;
  
 +
interface
 +
uses System, PersonUnit;
 +
 +
const
 +
  /// Первый курс
 +
  FIRST_COURSE = 1;
 +
  /// Последний курс для студентов младших курсов
 +
  LAST_UNDERGRADUATE_COURSE = 4;
 +
 +
 +
// -------------------------------------------- Student -------------------------------------------
 +
type
 +
  /// Студент
 +
  Student = class (Person)
 +
  private
 +
    ///Курс
 +
    fCourse: integer;
 +
    ///Группа
 +
    fGroup: integer;
 +
   
 +
    /// Устанавливает номер группы равным group,
 +
    /// если он неотрицателен
 +
    procedure SetGroup(group: integer);
 +
   
 +
  public
 +
    /// <summary>
 +
    /// Создает нового студента
 +
    /// </summary>
 +
    /// <param name="Name">Имя (пустое недопустимо)</param>
 +
    /// <param name="Age">Возраст (отрицательный недопустим)</param>
 +
    /// <param name="Course">Курс (отрицательный или больший LAST_UNDERGRADUATE_COURSE недопустим)</param>
 +
    /// <param name="Group">Группа (отрицательная недопустима)</param>
 +
    constructor Create(Name: string; Age, Course, Group: integer);
 +
 +
    /// Переводит студента на следующий курс, если он меньше LAST_UNDERGRADUATE_COURSE
 +
    procedure NextCourse;
 +
 +
    /// Курс — доступ только на чтение
 +
    property Course: integer read fCourse;
 +
    /// Группа
 +
    property Group: integer read fGroup write SetGroup;
 +
   
 +
    /// Выводит на консоль информацию о студенте
 +
    procedure Print;
 +
  end;
 +
 +
implementation
 +
 +
// -------------------------------------------- Student -------------------------------------------
 +
{Устанавливает номер группы равным Group, если он неотрицателен}
 +
procedure Student.SetGroup(group: integer);
 +
begin
 +
  if group > 0 then
 +
    fGroup := group
 +
  else
 +
    raise new Exception(
 +
    'Попытка присвоить номеру группы отрицательное значение.');
 +
end;
 +
 +
constructor Student.Create(Name: string; Age, Course, Group: integer);
 +
begin
 +
  inherited Create(name, age);
 +
  SetGroup(Group);
 +
 
 +
  if (Course >= FIRST_COURSE) and (Course <= LAST_UNDERGRADUATE_COURSE) then
 +
    fCourse := Course
 +
  else
 +
    raise new Exception(
 +
    'Выход за границы диапазона допустимых курсов [' +
 +
    FIRST_COURSE.ToString + '..' + LAST_UNDERGRADUATE_COURSE.ToString + ']!');
 +
end;
 +
 +
{Переводит студента на следующий курс, если он меньше LAST_UNDERGRADUATE_COURSE}
 +
procedure Student.NextCourse;
 +
begin
 +
  if fCourse < LAST_UNDERGRADUATE_COURSE then
 +
    fCourse += 1
 +
  else
 +
    raise new Exception(
 +
    'Выход за границы диапазона допустимых курсов [' +
 +
    FIRST_COURSE.ToString + '..' + LAST_UNDERGRADUATE_COURSE.ToString + ']!');
 +
end;
 +
 +
procedure Student.Print;
 +
begin
 +
  inherited Print;
 +
 
 +
  WriteFormat(
 +
    'Курс: {0}  Группа: {1}  ',
 +
    fCourse, fGroup);
 +
end;
 +
 +
end.
 
</source>
 
</source>

Версия 21:09, 18 мая 2009

unit StudentUnit;

interface
uses System, PersonUnit;

const
  /// Первый курс
  FIRST_COURSE = 1;
  /// Последний курс для студентов младших курсов
  LAST_UNDERGRADUATE_COURSE = 4;
 

// -------------------------------------------- Student ------------------------------------------- 
type
  /// Студент
  Student = class (Person)
  private
    ///Курс
    fCourse: integer;
    ///Группа
    fGroup: integer;
    
    /// Устанавливает номер группы равным group,
    /// если он неотрицателен
    procedure SetGroup(group: integer);
    
  public
    /// <summary>
    /// Создает нового студента
    /// </summary>
    /// <param name="Name">Имя (пустое недопустимо)</param>
    /// <param name="Age">Возраст (отрицательный недопустим)</param>
    /// <param name="Course">Курс (отрицательный или больший LAST_UNDERGRADUATE_COURSE недопустим)</param>
    /// <param name="Group">Группа (отрицательная недопустима)</param>
    constructor Create(Name: string; Age, Course, Group: integer);

    /// Переводит студента на следующий курс, если он меньше LAST_UNDERGRADUATE_COURSE
    procedure NextCourse;
 
    /// Курс — доступ только на чтение
    property Course: integer read fCourse;
    /// Группа
    property Group: integer read fGroup write SetGroup;
    
    /// Выводит на консоль информацию о студенте
    procedure Print;
  end;

implementation

// -------------------------------------------- Student ------------------------------------------- 
{Устанавливает номер группы равным Group, если он неотрицателен}
procedure Student.SetGroup(group: integer);
begin
  if group > 0 then
    fGroup := group
  else
    raise new Exception(
    'Попытка присвоить номеру группы отрицательное значение.');
end;

constructor Student.Create(Name: string; Age, Course, Group: integer);
begin
  inherited Create(name, age);
  SetGroup(Group);
  
  if (Course >= FIRST_COURSE) and (Course <= LAST_UNDERGRADUATE_COURSE) then
    fCourse := Course
  else
    raise new Exception(
    'Выход за границы диапазона допустимых курсов [' + 
    FIRST_COURSE.ToString + '..' + LAST_UNDERGRADUATE_COURSE.ToString + ']!');
end;
 
{Переводит студента на следующий курс, если он меньше LAST_UNDERGRADUATE_COURSE}
procedure Student.NextCourse;
begin
  if fCourse < LAST_UNDERGRADUATE_COURSE then
    fCourse += 1
  else
    raise new Exception(
    'Выход за границы диапазона допустимых курсов [' + 
    FIRST_COURSE.ToString + '..' + LAST_UNDERGRADUATE_COURSE.ToString + ']!');
end;
 
procedure Student.Print;
begin
  inherited Print;
  
  WriteFormat(
    'Курс: {0}  Группа: {1}  ', 
    fCourse, fGroup);
end;

end.