- •Объектно-ориентированная парадигма программирования.
- •Объектно-ориентированный анализ
- •Объектно-ориентированное программирование.
- •Объектно-ориентированное проектирование.
- •Классы и объекты в Object Pascal.
- •Важнейшие принципы объектно-ориентированного программирования.
- •Составляющие класса.
- •Var a:Тcomp;
- •Var X:tStudent;
- •Объекты
- •Создание и уничтожение объектов.
- •IntField:Integer;
- •Var MyObject:tMyClass;
- •Var a,b:Тcomp;
- •Свойства и инкапсуляция.
- •X:integer;
- •Var a:tInt;
- •X:integer;
- •Создание класса комплексных чисел.
- •Interface
- •Implementation
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.