StudentUnit (Наследование) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Juliet (обсуждение | вклад) (Новая: Категория:Person inheritance <source lang="Delphi"> </source>) |
Juliet (обсуждение | вклад) |
||
Строка 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.