Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Паскалю / Простой пример объектно.doc
Скачиваний:
30
Добавлен:
02.05.2014
Размер:
87.04 Кб
Скачать

Простой пример объектно-ориентированного программирования

Разработаем модуль решения линейных, квадратных и биквадратных уравнений в области вещественных чисел для любых вещественных коэффициентов ( в том числе и нулей).

Разработка структурной организации объектов

В ООП линейное уравнение вида a1x+a0=0 и его решение можно определить как совокупность полей, представляющих собой

  • коэффициент при неизвестном a1,

  • свободный член a0,

  • значение единственного корня x1,

  • количество корней k (значение минус 1 – множество корней, 0 – корней нет, 1 – один корень),

и методов, осуществляющих

  • задание полей a1 и a0 (метод INIT),

  • решение линейного уравнения – формирование полей x1 и k (метод LINUR),

  • вывод решения на экран (метод PRINT).

Объектный тип для решения линейного уравнения назовем именем TLINUR.

Объектный тип для решения квадратного уравнения вида a2x2+a1x+a0=0 (дадим имя TKVUR) построим на базе типа TLINUR. При определении типа TKVUR добавим следующие поля:

  • коэффициент a2 при квадрате неизвестного,

  • значение второго корня x2,

переопределим метод INIT, так как необходимо задавать значения трех исходных данных

и добавим методы:

  • решение квадратного уравнения KVUR,

  • вывод решения на экран, использующий ранее определенный метод PRINT (метод PRINT2).

Объектный тип TBIKVUR для решения биквадратного уравнения вида a2x4+a1x2+a0=0 построим на базе типа TBIKVUR. При этом добавим поля для возможных третьего и четвертого корней х3 и х4 и методы BIKVUR – решение биквадратного уравнения и PRINT4 – вывод решений биквадратного уравнения на экран, использующий ранее определенный метод PRINT2.

Исходя из вышесказанного, определим объектные типы следующим образом

type {линейное уравнение}

tlinur=object

a0,a1:real;{свободный член и коэффициент при х}

k:integer; {количество корней – минус 1, 0, 1}

x1:real; {значение корня}

procedure init (a,b:real); {инициализация}

procedure linur; {решение линейного уравнения}

procedure print; {вывод решения на экран}

end;

{квадратное уравнение}

tkvur=object(tlinur)

a2,x2:real; {коэффициент при квадрате неизвестного и второй корень}

procedure init(a,b,c:real); {инициализация}

procedure kvur; {решение квадратного уравнения}

procedure print2; {вывод решения на экран}

end;

{биквадратное уравнение}

tbikvur=object(tkvur)

x3,x4:real; {третий и четвертый корни}

procedure bikvur; {решение биквадратного уравнения}

procedure print4; {вывод решения на экран}

end;

Структура данных для объекта типа линейное уравнение (TLINUR):

a0

?

a1

?

k

?

x1

?

Адреса методов для объектов типа TLINUR:

@TLINUR.INIT

@TLINUR.LINUR

@TLINUR.PRINT

Объектный тип TKVUR наследует все поля типа TLINUR, после этого добавляются собственные поля а2 и х2. Поэтому структура данных для объекта нового типа:

a0

?

a1

?

k

?

x1

?

а2

?

х2

?

При наследовании методов собственный метод INIT заменяет одноименный родительский метод и добавляются методы KVUR и PRINT2.

@TKVUR.INIT

@TLINUR.LINUR

@TLINUR.PRINT

@TKVUR.KVUR

@TKVUR.PRINT2

Структура данных для объекта типа TBIKVUR – биквадратного уравнения выглядит так:

a0

?

a1

?

k

?

x1

?

а2

?

х2

?

x3

?

x4

?

Таблица методов для типа TBIKVUR:

@TKVUR.INIT

@TLINUR.LINUR

@TLINUR.PRINT

@TKVUR.KVUR

@TKVUR.PRINT2

@TBIKVUR.BIKVUR

@TBIKVUR.PRINT4