- •Объектно-ориентированный анализ
- •Объектно-ориентированное программирование.
- •Объектно-ориентированное проектирование.
- •Основные понятия объектно-ориентированного проектирования.
- •Классы и объекты в Object Pascal.
- •Важнейшие принципы объектно-ориентированного программирования.
- •Составляющие класса.
- •Объекты
- •Создание и уничтожение объектов.
- •Наследование конструкторов и деструкторов.
- •Свойства и инкапсуляция.
- •Статические методы.
- •Полиморфизм. Виртуальные и динамические методы.
- •Абстрактные методы.
- •Перекрытие виртуальных и динамических методов.
- •Как устроен объект изнутри
- •Перезагрузка методов.
- •Задача с использованием полиморфизма
- •Области видимости.
- •Создание класса комплексных чисел.
- •Создание класса векторов
- •Объект-список
- •Модуль по работе со списками
- •Основная программа по работе с объектами-списками
- •Система программирования Delphi
- •Терминология Delphi.
- •Первые шаги визуального программирования в среде Delphi.
- •Иерархия компонентов.
- •Собственники компонентов
- •Элементы управления.
- •Компоненты (tComponent)
- •Оконные не оконные
- •Родительские и дочерние компоненты.
- •Объектно-событийное программирование. События
- •Реакции на события
- •Программирование реакции на событие
- •Особенности реализации событий
- •Делегирование событий
- •Виды событий
- •Диалоги. Работа с файлами. Открытие и закрытие файлов с использованием стандартных диалоговых окон.
- •TOpenDialog и tSaveDialog – диалоги открытия и сохранения файлов (страница dialogs )
- •Компонент класса tform
- •Создание и использование форм
- •Шаблоны форм
- •Программы со многими формами
- •Модульный принцип построения программ.
- •Программные файлы. Основные типы файлов проекта. Простейшее приложение.
- •Структура головного файла проекта.
Создание класса комплексных чисел.
Создадим класс комплексных чисел, в котором реализована комплексная арифметика. Для этого создадим модуль 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;
//методы сложения, вычитания и умножения объектов класса Comp
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. Здесь действует правило: при выполнении двуместных операций первым операндом является сам объект (т.е. его поля), вторым операндом – тот который является формальным параметром метода, а результат сохраняется в полях первого операнда.
Запишем программу, которая использует созданные поля и методы класса 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:3);
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.