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

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

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

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

Добавлен: 13.05.2023

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Принципы объектно–ориентированного программирования

1.1. Понятие класса

1.2. Понятие объекта

1.3. Методы и их использование

1.4. Понятие инкапсуляции и ее влияние на свойства объекта

1.5. Понятие наследования

1.6. Понятие области видимости

1.7. Понятие полиморфизма и виртуальных методов

2.1. Пример 1 Тестирующая программа, реализованная на Borland Delphi

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

2.1.2. Главная форма (Form1)

2.1.3. Форма результатов теста (result)

2.1.4. Модуль обработчиков главной формы

2.1.5. Модуль обработчиков формы результатов

2.1.6. Результаты работы программы

2.2 Пример 2 Вычисление значения функции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

Приложение 1

Приложение 2

Приложение 3

Приложение 4

Приложение 5

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

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); {Вывод в таблицу номер вопроса}