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