Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все ответы.docx
Скачиваний:
8
Добавлен:
26.09.2019
Размер:
2.71 Mб
Скачать

Модуль Unit1

UNIT UNIT1;

INTERFACE

Type

{Описание класса One}

One = class

public // Открытый

a:byte;

protected // Защищенный

b:real;

private // Закрытый

c:char;

end;

{Описание класса Two - наследника One}

Two = class (One)

public // Открытый

d:string;

function e():Integer;

end;

IMPLEMENTATION

{ Two }

function Two.e: Integer;

begin

result:=10*a;

end;

END.

Модуль Unit2

UNIT UNIT2;

INTERFACE

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, UNIT1;

Type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

{Описание класса Three - класс One объявлен в ДРУГОМ модуле}

Three = class (One)

private // Закрытый

g:Word;

public // Открытый

procedure h (var ss:string);

end;

var

Form1: TForm1;

IMPLEMENTATION

{$R *.dfm}

{Объявление переменных. В текущем модуле объявлен только класс Three, классы One, Two объявлены в модуле Unit1}

var

O: One;

Tw: Two;

Tr: Three;

{ Three }

procedure Three.h (var SS:string);

begin

ss:='Работа процедуры THREE.H'

end;

{Внешняя функция, обращающаяся к объекту}

function getResult:Real;

begin

result:=Tr.b; // Прямое обращение к полю b класса Tr

end;

procedure TForm1.Button1Click(Sender: TObject);

var

s:string;

begin

Memo1.lines.Add('Обращения к объекту O класса One');

O.a:=33;

Memo1.lines.Add(' O.A: '+IntToStr(o.a));

//O.b:=1.2; {ОШИБКА - поле недоступно}

//O.c:='O'; {ОШИБКА - поле скрыто}

Memo1.lines.Add('>Недоступны O.b и O.c');

Memo1.lines.Add('');

Memo1.lines.Add('Обращения к объекту TW класса TWO');

TW.a:=44; // Поле a наследуется из класса One

Memo1.lines.Add('TW.A: '+IntToStr(Tw.a));

//tw.b:=44; {ОШИБКА - поле недоступно}

//tw.c:='Д'; {ОШИБКА - поле скрыто}

tw.d:='Строка в объекте TW';

Memo1.lines.Add('TW.D: '+Tw.d);

Memo1.lines.Add('TW.E (вызов функции 10*a):' +IntToStr(Tw.e));

Memo1.lines.Add('>Недоступны TW.B и TW.C');

Memo1.lines.Add('');

Memo1.lines.Add('Обращения к объекту TR класса THREE');

TR.a:=55;

Memo1.lines.Add('TR.A: '+IntToStr(TR.a));

TR.b:=55.55; {поле доступно: определение класса Three - в текущем модуле}

Memo1.lines.Add('TR.B: '+FloatToStr(TR.B));

//TR.c:='Д'; {ОШИБКА - поле скрыто}

TR.g:=66; // Хотя поле g скрыто, но класс описан в текущем модуле

Memo1.lines.Add('TR.G: '+IntToStr(TR.G));

TR.H(s);

Memo1.lines.Add('TR.H:'+s);

Memo1.lines.Add('>Недоступно TR.C');

end;

INITIALIZATION

{Объекты o, tw, tr создаются при запуске приложения}

O:=One.create;

TW:=Two.Create;

TR:=Three.Create;

FINALIZATION

{Объекты o, tw, tr удаляются при завершении работы приложения}

O.Free;

TW.Free;

TR.Free;

END.