Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП ОЗО 1.doc
Скачиваний:
39
Добавлен:
13.04.2015
Размер:
164.35 Кб
Скачать

X:integer;

begin

{ TODO …………………………………………………}

a:=TInt.Create; {создаем объект a с помощью конструктора}

{Create не прописывается. Он берется из TObject}

a.Impdata(5); {с помощью метода Impdata полю data присвоим 5}

writeln('data=', a.Outdata); {метод Outdata читает полученное значение поля data объекта a и выводит его на экран}

write('x=');

readln(x); {вводим x с клавиатуры }

a.Add(x);{объект a вызывает метод Add с парам. x, т.е. к полю data прибавляется x)}

writeln('data=', a.Outdata); {метод Outdata читает значение поля data объекта a }

a.Free; {уничтожаем объект a с помощью деструктора}

readln;

End.

Программа со свойством

program Integer_class2;

{$APPTYPE CONSOLE}

uses SysUtils;

Type TInt=class

data:integer;

Procedure impdata (x:integer);

Function Outdata:integer;

Procedure Add(x:integer);

Property dataInt:integer //свойство

read Outdata //чтение из поля

write Impdata; //запись в поле

end;

Procedure TInt.impdata;

begin

data:=x;

end;

Function TInt.Outdata;

begin

result:=data;

end;

Procedure TInt.Add;

begin

data:=data+x;

end;

Var a:tInt;

X:integer;

Begin

{ TODO……………………………… }

a:=TInt.Create; {создаем объект a с помощью конструктора}

a.dataInt:=5;{св-во dataInt, вызванное объектом a, с помощью метода impdata заносит 5 в поле data}

writeln('data=', a.dataInt); { св-во dataInt, вызванное объектом a, с помощью метода Outdata выводит значение поля data}

write('x=');

readln(x);

a.Add(x);

writeln('data=', a.dataInt);

a.Free;

readln;

end.

Создание класса комплексных чисел.

Создадим класс комплексних чисел, в котором реализована комплексная арифметика. Для этого создадим модуль Complex с описанием класса Comp.

Unit Complex;

Interface

Uses SysUtils, Dialogs;

Type comp=class

re,im:real;

function modul:real;

//методы ввода и вывода значений действительных части объекта класса Comp

procedure Impre(x:real);

Function Outre:real;

//методы ввода и вывода значений мнимой части объекта класса Comp

procedure Impim(y:real);

Function Outim:real;

procedure Add(z:comp);

procedure Sub(z:comp);

procedure Mul(z:comp);

end;

Implementation

Procedure Comp.Impre;

begin re:=x;

end;

procedure Comp.Impim;

begin im:=y;

end;

function Comp.Outre;

begin result:=re;

end;

function Comp.Outim;

begin result:=im;

end;

procedure Comp.Add(z:Comp);

begin re:=re+z.re;

im:=im+z.im;

end;

{Комплексное число z (параметр метода) прибавляется к исходному числу объекту класса Comp}

procedure Comp.Sub(z: Comp);

begin re:=re – z.re;

im:=im – z.im;

end;

procedure Comp.Mul(z: Comp);

var x:real;

begin x:=re*z.re – im*z.im;

im:=re*z.im + im*z.re;

re:=x;

end;

function Comp.modul;

begin result:=sqrt(sqr(re)+sqr(im));

end;

End.

Заметим, что методы Add, Sub, Mul используются для сложения, вычитания и умножения двух комплексных чисел. Здесь действует правило: при выполнении двухместных операций, первым операндом является сам объект (т.е. его поля), вторым операндом – тот который является формальным параметром метода, а результат сохраняется в полях первого операнда.

Запишем программу, которая использует созданные поля и методы класса Comp из Unit Complex для конкретных объектов a и b.

Program Use_ Complex;

Uses SysUtils,Dialogs,

Complex in ‘Complex.pas’;

var a,b:Comp;

t:real;

Begin a:=Comp.Create; {конструктор создает объекты a и b}

b:=Comp.Create;

{ Impre и Impim вводят значение действительной и мнимой части объектов a и b}

a.Impre(1);

b.Impre(3);

a.Impim(5);

b.Impim(4);

t:=b.Modul; {объект b вызывает метод Modul }

writeln(‘t=’,t:10);

a.Add(b); {объект a вызывает метод Add с параметром b}

writeln(‘Add a=’,a.Outre,‘ ’,a.Outim); {методы Outre и Outim выводят значения суммы объектов a и b }

a.Impre(1);

a.Impim(5);

a.Sub(b);

writeln(‘Sub a=’, a.Outre,‘ ’,a.Outim);

a.Impre(1);

a.Impim(5);

a.Mul(b);

writeln(‘Mul a=’, a.Outre,‘ ’,a.Outim);

Showmessage(‘результат’); {вывод в окно сообщения слова “результат” с кнопкой “ОК”}

b.Free; {уничтожение не нужных объектов методом Free}

a.Free;

End.

Заметим, что в данном примере конструктор и деструктор не описаны при описании класса, поскольку они унаследованы от предка класса Comp – класса TObject.