Создание семьи классов

Текст задания :

Описать класс Книга: поля Название, год издания. Методы: вывод информации, конструктор с параметрами.
Описать дочерний (от Книги) класс Учебник: добавить поля: предмет, класс.
Описать дочерний (от Учебника) класс Журнал: добавить поле Номер.
Создать объекты описанных классов с помощью конструктора. Вывести информацию об объектах с помощью метода.

Решение :

Первый наш класс Книга сделаем потомком стандартного класса TObject .

У него будут два строковых поля fNazvanie и fGod , а также процедура заполнения этих полей пустыми значениями InitKniga. У нашего класса будут два конструктора, один с параметрами, другой пустой. Для этого случая есть специальное слово overload. Также у нашего класса есть процедура info, она будет выдавать на монитор сообщение с содержанием полей   fNazvanie и fGod.

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

type
TKniga = class(TObject)
private
fNazvanie: string;// поле название
fGod: string;// поле год
procedure InitKniga;// процедура заполнения
public
constructor Create; overload;
constructor Create(aNazvanie: string; aGod: string); overload;
procedure info;
end;
{ TKniga }

constructor TKniga.Create;
begin
InitKniga;
end;

constructor TKniga.Create(aNazvanie, aGod: string);
begin
InitKniga;
fNazvanie := aNazvanie;
fGod := aGod;
end;

procedure TKniga.InitKniga;
begin
fNazvanie := »;
fGod := »;
end;

procedure TKniga.info;
begin
ShowMessage(‘Книга Название:’ + fNazvanie + ‘ Год:’ + fGod);
end;

[/cc]

Второй наш класс Учебник TUcebnik мы сделаем наследником уже созданного нами класса TKniga. У него добавим два строковых поля fPredmet и fKlass.

Так же добавим процедуру InitUcebnik для первоначального заполнения полей класса.

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

type
TUcebnik = class(TKniga)
private
fPredmet: string;// поле предмет
fKlass: string;// поле класс
procedure InitUcebnik;
public
constructor Create; overload;
constructor Create(aNazvanie: string; aGod: string; aPredmet: string; aKlass: string); overload;
procedure info;
end;

{ TUcebnik }

constructor TUcebnik.Create;
begin
InitUcebnik;
end;

constructor TUcebnik.Create(aNazvanie, aGod, aPredmet, aKlass: string);
begin
InitUcebnik;
fNazvanie := aNazvanie;
fGod := aGod;
fPredmet := aPredmet;
fKlass := aKlass;
end;

procedure TUcebnik.info;
begin
ShowMessage(‘Учебник Название:’ + fNazvanie + ‘ Год:’ + fGod + ‘ Предмет:’ + fPredmet + ‘ Класс:’ + fKlass);
end;

procedure TUcebnik.InitUcebnik;
begin
fNazvanie := »;
fGod := »;
fPredmet := »;
fKlass := »;
end;

[/cc]

Третий наш класс Журнал TJurnal  наследник класса TUcebnik.

У него добавилось лишь одно текстовое поле номер fNomer.

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

type
TJurnal = class(TUcebnik)
private
fNomer: string;
procedure InitJurnal;
public
constructor Create; overload;
constructor Create(aNazvanie: string; aGod: string; aPredmet: string; aKlass: string; aNomer: string); overload;
procedure info;
end;

{ TJurnal }

constructor TJurnal.Create;
begin
InitJurnal;
end;

constructor TJurnal.Create(aNazvanie, aGod, aPredmet, aKlass,
aNomer: string);
begin
InitJurnal;
fNazvanie := aNazvanie;
fGod := aGod;
fPredmet := aPredmet;
fKlass := aKlass;
fNomer := aNomer;
end;

procedure TJurnal.info;
begin
ShowMessage(‘Журнал Название:’ + fNazvanie + ‘ Год:’ + fGod + ‘ Предмет:’ + fPredmet + ‘ Класс:’ + fKlass + ‘ Номер:’ + fNomer);
end;
procedure TJurnal.InitJurnal;
begin
fNazvanie := »;
fGod := »;
fPredmet := »;
fKlass := »;
fNomer := »;
end;

[/cc]

Все созданные классы я описывал в том же модуле, что и основная форма программы. Главную форму я привел вот к такому виду :

Снимок2

Раздел Var основного модуля добавим переменные наших классов, выглядеть это будет так :

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

var
Form1: TForm1;
book: TKniga;
uch: TUcebnik;
jurn: TJurnal;

[/cc]

Опишу только работу кнопок «Создать» и «Вывести информацию» для класса Книга, остальные вы сможете легко написать по аналогии.

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

procedure TForm1.Button1Click(Sender: TObject);
begin
book := TKniga.Create(Edit1.Text, Edit2.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if book = nil then // проверяем существует ли класс
ShowMessage(‘Класс не создан’)
else
book.info;
end;

[/cc]

Далее добавить нечего, задание выполнено.

 

Нашли ошибку в тексте?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *