Метод инициализации квадратного уравнения




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

 

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

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

В ООП линейное уравнение вида 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

 

Разработка методов

Метод инициализации линейного уравнения

I. Спецификация

1. Назначение: заполнение полей а1 (коэффициент при неизвестном х) и а0 (свободный член) исходными данными.

2. Имя: INIT

3. Вид: процедура

4. Перечень параметров (все параметры входные):

Назначение Имя Тип Вид
Значение коэффициента при неизвестном х a real параметр-значение
Значение свободного члена b real параметр-значение

5. Заголовок: PROCEDURE INIT(a,b:REAL);

II. Метод решения

1) a1:=a

2) a0:=b

 

V. Программная модель

procedure tlinur.init(a,b:real);

begin

a1:=a;

a0:=b

end;

 

Метод решения линейного уравнения

I. Спецификация

1. Назначение: решение линейного уравнения вида a1x+a0=0 для любых вещественных a1 и a0

  1. Имя: LINUR
  2. Вид: процедура
  3. Перечень параметров: без параметров
  4. Заголовок: PROCEDURE LINUR;

II. Метод решения

V. Программная модель

 

procedure tlinur.linur;

begin

if a1<>0 then

begin

k:=1;

x1:=-a0/a1

end

else

if a0=0 then k:=-1

else k:=0

end;

 

Метод вывода решения линейного уравнения

I. Спецификация

1. Назначение: вывод на экран результатов решения линейного уравнения

  1. Имя: PRINT
  2. Вид: процедура
  3. Перечень параметров: без параметров
  4. Заголовок: PROCEDURE PRINT;

II. Метод решения

выбор по значению k из вариантов

 

V. Программная модель

 

procedure tlinur.print;

begin

case k of

-1:writeln('любое значение');

0:writeln('решений нет');

1: writeln('один корень=',x1)

end

end;

 

Метод инициализации квадратного уравнения

I. Спецификация

1. Назначение: заполнение полей а2 (коэффициент при квадрате х), а1 (коэффициент при неизвестном х) и а0 (свободный член) исходными данными.

2. Имя: INIT

3. Вид: процедура

4. Перечень параметров (все параметры входные):

Назначение Имя Тип Вид
Значение коэффициента при квадрате неизвестного x a real параметр-значение
Значение коэффициента при неизвестном х b real параметр-значение
Значение свободного члена с real параметр-значение

5. Заголовок: PROCEDURE INIT(a,b,c:REAL);

II. Метод решения

1) a2:=a

2) a1:=b

3) a0:=c

 

V. Программная модель

 

procedure tkvur.init(a,b,c:real);

begin

a2:=a;

a1:=b;

a0:=c

end;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: