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

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая: Категория:Person inheritance <source lang="Delphi"> </source>)
 
м TeacherUnit» переименована в «TeacherUnit (Наследование)»)
 
(не показана 1 промежуточная версия этого же участника)
Строка 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>

Текущая версия на 20:19, 21 мая 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.