Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

Val(Edit1.Text,k,sig);

if sig<>0 then

ShowMessage ('Требуется ввести положительное целое число');

Val(Edit2.Text,l,sig);

if sig<>0 then

ShowMessage ('Требуется ввести положительное целое число');

MyObj.Init(k,l);

Edit3.Text:=IntToStr(MyObj.Res);

end;

Реализация дополнительного модуля с объектом.

unit modul2;

interface

 

Type

Calc6=Object

I,j :byte;

Procedure Init(Newi,Newj:byte);

Function Res :byte;

End;

implementation

Procedure Calc6.Init(Newi,Newj :byte);

Var

sig:integer;

Begin

i:=Newi;

j:=Newj;

end;

Function Calc6.Res:byte;

begin

Res:=2*i+6*j;

end;

end.

При классическом подходе в Delphi как и в Borland Pascal объявление переменной типа объект (Var MyObj:Calc6;) означает выделение памяти для MyObj . Обратим здесь внимание на это обстоятельство потому, что в следующем примере будет по-другому.

Пример 2. Подход Delphi.

Пусть наше приложение состоит из одной формы и двух модулей: первый модуль соответствует форме, а второй – содержит объявление классов. Форма приведена на рис. 5.2.

Рис. 5.2. Окно приложения

Модуль объявления классов.

unit Modul2A;

interface

Type

Esimene=Class(TObject)

{Объявим класс, по умолчанию предшественником всех классов }

{является класс Delphi TObject; его можно явно и не задавать}

I,j :integer;

Constructor Create (Ni,Nj :integer);

{При работе с классами конструктор обязателен }

{его имя–дань традициям}

Function Geti :integer;

Function Getj :integer;

End;

Teine=Class(Esimene)

{ Esimene –имя класса – предшественника}

K :integer;

Constructor Create(Ni,Nj,Nk :integer);

Procedure Matem(var res :real);

End;

Implementation {Далее следуют тексты методов}

Constructor Esimene.Create(Ni,Nj: integer);

Begin

i:=Ni;

j:=Nj;

End;

Function Esimene.Geti :integer;

Begin

Geti:=i;

End;

Function Esimene.Getj :integer;

Begin

Result:=j;

End;

Constructor Teine.Create(Ni,Nj,Nk :integer);

Begin

Inherited Create (Ni,Nj);

{Конструктор класса – наследника должен инициализировать}

{и переменные класса предшественника, путем вызова }

{его конструктора }

k:=Nk;

End;

Procedure Teine.Matem(var res :real);

Begin

res:=(i+j)/k; {Простейшее вычисления, только для иллюстрации }

End;

end.

Модуль формы

var

Form1: TForm1; {Вставит Delphi}

Dan : Tlist; {Будет создан список объектов; описание TList см. выше}

MyObj:Teine; {Обявим объект MyObj классаTeine}

implementation

procedure TForm1.Button3Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.FormCreate(Sender: TObject);

{Выполняется при запуске приложения, см. п.2.4.2}

begin

Dan:=TList.Create;

Dan.Capacity:=10;

end;

procedure TForm1.Button1Click(Sender: TObject);

{Реализация кнопки “Ввод исходных данных”}

Var

p,q,r,sig1,sig2,sig3 :integer;

begin

Val(Edit1.Text, p, sig1);

Val(Edit2.Text, q, sig2);

Val(Edit3.Text, r, sig3);

if (sig1+sig2+sig3)<>0 then

ShowMessage('Надо ввести целые числа')

else

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Dan.Add (Teine.Create(p,q,r));

{Создается очередной объект, для этого вызывается}

{ конструктор Create класса Teine}

{указатель на созданный объект будет добавлен в список Dan типаTList}

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

{Реализация кнопки “Вычисляй”}

Var

sig,n :integer;