Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (принципы объектно–ориентированного программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.07.2023

Просмотров: 263

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2.2.3. Модуль обработчика вычисления функции на Visual Basic

На форме разместим кнопку, для которой напишем обработчик, приведенный в Приложении 3.

2.2.4. Результат выполнения программы

Результат ввода исходных данных и расчета Y показан на рисунке 8.

Рисунок 8 – Результат выполнения программы

2.3 Пример 3 Вычисление всех значений функции

2.3.1 Постановка задачи

Вычислить и напечатать все значения функции:

Таблица 4 – Заданные функции

f1

f2

f3

f4

=

Таблица 5 – Заданные условия

Усло-вие_1

Усло-вие_2

Усло-вие_3

Усло-вие_4

Начальное значение аргумента Хи

Конечное значение аргумента Хк

Шаг изменения аргумента dx

x<0

0≤x<4

4≤x≤6

x>6

-4

10

0.7

2.3.2 Алгоритм решения задачи

Алгоритм решения задачи показан на рисунке 9.

Рисунок 9 – Алгоритм решения задачи

2.3.3 Модуль вычисления значений функции на интервале на Visual Basic

На форме разместим кнопку, для которой напишем обработчик, приведенный в Приложении 4.

2.3.4. Результат выполнения программы

Результат вычисления всех значений функции на интервале показан на рисунке 10.


Рисунок 10 – Результат выполнения программы

2.4 Пример 4 Обработка массивов

2.4.1 Постановка задачи

Для элементов, стоящих на четных местах, двух одномерных массивов одинаковой длины определить среднее арифметическое среди элементов, попадающих в интервал (-10,10).

2.4.2 Алгоритм решения задачи

Алгоритм решения задачи показан на рисунке 11.

Рисунок 11 – Алгоритм решения задачи

2.4.4. Программа обработки массивов на Visual Basic

На форме разместим кнопку, для которой напишем обработчик, приведенный в Приложении 5.

2.4.5. Результат выполнения программы

Для ввода каждого элемента массивов выдается окно, показанное на рисунке 12.

Рисунок 12 – Окно ввода элементов массивов

Результат обработки массивов показан на рисунке 13.

Рисунок 13 – Результат выполнения программы

ВЫВОД. Во второй были рассмотрены примеры объектно–ориентированного программирования в Borland Delphi и Visual Basic.

ЗАКЛЮЧЕНИЕ

На основании проделанной работы можно сделать следующие выводы:

1) основными понятиями объектно–ориентированного программирования является класс и объект. Объект является физической реализацией класса. Класс - сложная структура, которая аналогична типу. В класс входит ни только описание данных, процедур и функций, выполняемых над объектом, но и характеристики используемых данных, а также подпрограмм;

2) под объектом в Object Pascal понимается некоторая динамическая структура;

3) под методами понимаются процедуры и функции, которые объявлены при описании класса и выполняют некоторые действия над его объектами;


4) инкапсуляция – это скрытие полей некоторого объекта, так чтобы к ним можно было обращаться только через методы данного класса. Для разграничения прав доступа к полям некоторого объекта реализуется через его свойства. Свойство некоторого объекта характеризуется полем, в котором хранится свойство, а также двумя методами, которые обеспечивают доступ к свойствам поля;

5) объектно–ориентированное программирование дает возможность создавать новые классы при помощи добавления полей, свойств и методов, для уже существующих классов;

6) в описание класса обычно входят директивы, которые устанавливают видимость элементов, принадлежащих определенному классу, в теле программы;

7) под полиморфизмом понимается возможность применения одинаковых имен методов, которые входят в разные классы;

8) были разработаны и реализованы 4 примера объектно-ориентированного программирования: тестирующая программа, реализованная на Borland Delphi; вычисления функции на Visual Basic; вычисление всех значений функции; обработка массивов.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Белов В.В. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное / Белов В.В., Чистяков В.И. – М.: Горячая Линия-Телеком, 2009. – 240 с.
  2. Галисеев Г.В. Программирование в среде Delphi 7. Самоучитель / Г.В.Галисеев. – М.: Диалектика, 2012. – 288 с.
  3. Дарахвелидзе П.Г. Программирование в Delphi 7 / П.Г.Дарахвелидзе, Е.П,Марков. – СПб.: BHV, 2011. – 784 с.
  4. Иванова Г.С. Объектно–ориентированное программирование / Г.С.Иванова. – М.: МГТУ им. Баумана, 2012. – 320 с.
  5. Культин Н.Б. Основы программирования в Delphi 7 / Н.Б.Культин. – СПб.: BHV, 2012. – 640 с.
  6. Лесневский А.С. Объектно–ориентированное программирование для начинающих / А.С.Лесневский. – СПб.: Бином. Лаборатория знаний, 2012. – 232 с.
  7. Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников» / Нил Дж. Рубенкинг. – М.: Диалектика, 2012. – 336 с.
  8. Фаронов В.В. Программирование на языке высокого уровня. Гриф МО РФ / В.В.Фаронов. – СПб.: Питер, 2012. – 640 с.
  9. Фленов М.Е. Библия Delphi / М.Е.Фленов. – СПб.: BHV, 2009. – 800 с.
  10. Хорев П.Б. Объектно–ориентированное программирование: учебное пособие для студентов учреждений высшего профессионального образования / П.Б.Хорев. – М.: Академия, 2011. – 448 с.

Приложения

Приложение 1


КОД ОБРАБОТЧИКОВ ГЛАВНОЙ ФОРМЫ

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs,IniFiles, Menus, StdCtrls, ComCtrls, ExtCtrls;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

Label1: TLabel;

RadioOtvet1: TRadioButton;

RadioOtvet2: TRadioButton;

RadioOtvet3: TRadioButton;

Next: TButton;

vopros: TRichEdit;

Image1: TImage;

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure NextClick(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

TTest= Record {Запись для хранения вопросов и ответов}

vopros: string[255];{Вопрос теста}

kolotv: integer;{Количество вариантов ответов}

otvet1: string[255];{Текст первого ответа}

otvet2: string[255];{Текст второго ответа}

otvet3: string[255];{Текст третьего ответа}

picture: string[20];{Имя файла картинки}

end;

var

Form1: TForm1;{Главная форма приложения}

IniFile: TIniFile; {Переменная для связи с INI-файлом}

Test: array [1..20] of TTest;{Массив записей вопросов и ответов}

exename: string;{Имя файла теста}

exepath: string;{Путь к файлу теста}

lenpath: integer;{Длина пути к файлу теста}

k: integer;{Позиция последнего / в полном имени файла}

i: integer;{Переменная цикла}

ini: TIniFile;{Переменная связи с INI-файлом}

vsegovoprosov: integer; {Количество вопросов в тесте}

nomervoprosa: integer; {Номер текущего вопроса}

section: string; {Секция INI-файла}

picturefilename: string; {Путь к файлу картинки}

otvet: array[1..20] of char; {Выбранные ответы на каждый вопрос}

vsegoA: integer; {Количество выбранных ответов А}

vsegoB: integer; {Количество выбранных ответов Б}

vsegoV: integer; {Количество выбранных ответов В}

implementation

uses unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

exename:=Application.ExeName; {Определение полного имени файла}

lenpath:=length(exename); {Определение длины полного имени файла}

k:=0; {Положение / }

for i:=lenpath downto 1 do {Цикл по длине полного имени файла}

if ((copy(exename,i,1)='\') and (k=0)) then begin {Если текущий символ = /}

{Выделить имя файла из пути}

exepath:=copy(exename,1,i);

k:=i; {Запомнить положение /}

end;

ini:=TIniFile.Create(exepath+'TEST.INI'); {Связать переменную с INI-файлом}

vsegovoprosov:=Ini.ReadInteger('всеговопросов','всего',0); {Прочитать количество вопросов}

for nomervoprosa:=1 to vsegovoprosov do {Цикл по количеству вопросов}

begin

section:='вопрос'+inttostr(nomervoprosa); {Определение имени секции INI-файла}

test[nomervoprosa].vopros:=ini.ReadString(section,'вопрос',''); {Чтение вопроса}

test[nomervoprosa].otvet1:=ini.ReadString(section,'ответ1',''); {Чтение 1-го ответа}

test[nomervoprosa].otvet2:=ini.ReadString(section,'ответ2',''); {Чтение 2-го ответа}

test[nomervoprosa].otvet3:=ini.ReadString(section,'ответ3',''); {Чтение 3-го ответа}

test[nomervoprosa].picture:=ini.ReadString(section,'картинка',''); {Чтение имени файла картинки}


end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

// Начать тест

nomervoprosa:=1; {Начать с 1-го вопроса}

vsegoA:=0;vsegoB:=0;vsegoV:=0; {Обнулить количество ответов каждого вида}

vopros.Clear; {Очистка поля для вывода вопроса}

vopros.Lines.Add(test[nomervoprosa].vopros); {Вывод текста вопроса}

RadioOtvet1.Caption:=test[nomervoprosa].otvet1; {Вывод 1-го ответа}

RadioOtvet2.Caption:=test[nomervoprosa].otvet2; {Вывод 2-го ответа}

RadioOtvet3.Caption:=test[nomervoprosa].otvet3; {Вывод 3-го ответа}

RadioOtvet1.Checked:=true; {Выбор 1-го ответа}

Label1.Caption:='Выберите один из вариантов отбетов на следующий вопрос:'; {Вывод пояснения}

vopros.Visible:=true; {Сделать вопрос видимым}

RadioOtvet1.Visible:=true; {Сделать 1-й ответ видимым}

RadioOtvet2.Visible:=true; {Сделать 2-й ответ видимым}

RadioOtvet3.Visible:=true; {Сделать 3-й ответ видимым}

Next.Visible:=true; {Сделать кнопку перехода к следующему вопросу видимой}

end;

procedure TForm1.NextClick(Sender: TObject);

// Кнопка перехода к следующему вопросу

begin

if (nomervoprosa<vsegovoprosov) then {Пока номер вопроса менььше наибольшего}

begin

if (RadioOtvet1.Checked=true) then otvet[nomervoprosa]:='А'; {Увеличение счетчика ответов А}

if (RadioOtvet2.Checked=true) then otvet[nomervoprosa]:='Б'; {Увеличение счетчика ответов Б}

if (RadioOtvet3.Checked=true) then otvet[nomervoprosa]:='В'; {Увеличение счетчика ответов В}

nomervoprosa:=nomervoprosa+1; {Увеличение номера вопроса}

label1.Caption:='Выберите наиболее подходящий для Вас вариант ответа на вопрос'; {Вывод пояснения}

vopros.Clear; {Очистка поля вопроса}

vopros.Lines.Add(test[nomervoprosa].vopros); {Вывод вопроса}

RadioOtvet1.Caption:=test[nomervoprosa].otvet1; {Вывод 1-го ответа}

RadioOtvet2.Caption:=test[nomervoprosa].otvet2; {Вывод 2-го ответа}

RadioOtvet3.Caption:=test[nomervoprosa].otvet3; {Вывод 3-го ответа}

if (test[nomervoprosa].picture<>'') then begin {Если в вопросе есть картинка}

{Получить имя файла картинки}

picturefilename:=exepath+'vopros'+inttostr(nomervoprosa)+'.bmp';

{Загрузка картинки из файла}

image1.Picture.LoadFromFile(picturefilename);

{Показать картинку}

image1.Visible:=true;

end

else

{Скрыть картинку}

image1.Visible:=false;

RadioOtvet1.Checked:=true; {Выбрать 1-й варинт ответа}

end

else

begin

{Если выбран 1-й ответ, увеличить счетчик ответов А}

if (RadioOtvet1.Checked=true) then otvet[nomervoprosa]:='А';

{Если выбран 2-й ответ, увеличить счетчик ответов Б}

if (RadioOtvet2.Checked=true) then otvet[nomervoprosa]:='Б';

{Если выбран 3-й ответ, увеличить счетчик ответов В}

if (RadioOtvet3.Checked=true) then otvet[nomervoprosa]:='В';

result.StringGrid1.Cells[0,0]:='Номер вопроса'; {Вывод заголовка столбца таблицы результатов теста}

result.StringGrid1.Cells[1,0]:='Ответ'; {Вывод заголовка столбца таблицы результатов теста}

for i:=1 to vsegovoprosov do {Цикл по количеству вопросов}

begin

result.StringGrid1.Cells[0,i]:=inttostr(i); {Вывод в таблицу номер вопроса}

result.StringGrid1.Cells[1,i]:=otvet[i]; {Вывод в таблицу выбранного варианта ответа}