TeacherUnit (Наследование)
Материал из Вики ИТ мехмата ЮФУ
unit TeacherUnit;
interface
uses System, PersonUnit, System.Collections.Generic;
// -------------------------------------------- Teacher -------------------------------------------
type
/// Преподаватель
Teacher = class (Person)
private
/// Список читаемых курсов
fDisciplines: List<string>;
public
/// <summary>
/// Создает нового преподавателя
/// </summary>
/// <param name="Name">Имя (пустое недопустимо)</param>
/// <param name="Age">Возраст (отрицательный недопустим)</param>
/// <param name="Disciplines">Список читаемых курсов (пустые названия
/// курсов недопустимы)</param>
constructor Create(Name: string; Age: integer; Disciplines: List<string>);
/// Добавляет новый курс в список читемых курсов
procedure AddDiscipline(discipline: string);
/// Удаляет курс из списка читемых курсов
procedure RemoveDiscipline(discipline: string);
///Список читаемых курсов - доступ только на чтение
property Disciplines : List <string> read fdisciplines;
/// Выводит на консоль информацию о преподавателе
procedure Print;
end;
implementation
// -------------------------------------------- Teacher -------------------------------------------
constructor Teacher.Create(Name: string; Age: integer; Disciplines: List <string>);
begin
inherited Create(Name, Age);
foreach d: string in Disciplines do
if d <> '' then
fDisciplines.Add(d)
else
raise new Exception(
'Попытка добавить в список читаемых курсов дисциплину с путым именем.');
end;
procedure Teacher.AddDiscipline(discipline: string);
begin
if discipline <> '' then
fDisciplines.Add(discipline)
else
raise new Exception(
'Попытка добавить в список читаемых курсов дисциплину с путым именем.');
end;
procedure Teacher.RemoveDiscipline(discipline: string);
begin
var index_of_discipline := fDisciplines.IndexOf(discipline);
if index_of_discipline <> 0 then
fDisciplines.RemoveAt(index_of_discipline)
else
raise new Exception(
'Данная дисциплина ("' + discipline +
'") отсутствует в списке читаемых курсов.');
end;
procedure Teacher.Print;
begin
inherited Print;
write('Список читаемых курсов:');
foreach d : string in fDisciplines do
write(' ', d);
end;
end.