Файл: Применение объектно-ориентированного подхода при проектировании информационной системы ( Visual Basic ).pdf
Добавлен: 13.05.2023
Просмотров: 319
Скачиваний: 2
СОДЕРЖАНИЕ
1. Принципы объектно–ориентированного программирования
1.3. Методы и их использование
1.4. Понятие инкапсуляции и ее влияние на свойства объекта
1.6. Понятие области видимости
1.7. Понятие полиморфизма и виртуальных методов
2.1. Пример 1 Тестирующая программа, реализованная на Borland Delphi
2.1.3. Форма результатов теста (result)
2.1.4. Модуль обработчиков главной формы
2.1.5. Модуль обработчиков формы результатов
2.1.6. Результаты работы программы
2.2 Пример 2 Вычисление значения функции
2.2.2. Алгоритм решения задачи
2.2.3. Модуль обработчика вычисления функции на Visual Basic
2.2.4. Результат выполнения программы
2.3 Пример 3 Вычисление всех значений функции
2.3.3 Модуль вычисления значений функции на интервале на Visual Basic
2.3.4. Результат выполнения программы
2.4 Пример 4 Обработка массивов
2.4.4. Программа обработки массивов на Visual Basic
2.4.5. Результат выполнения программы
Метод write, называемый методом записи, устанавливает значение некоторого поля, а метод read – выполняет чтение значения поля.
Перед описанием свойства в классе используется ключевое слово property, означаемое свойство. Сначала записывается имя свойства, затем тип свойства, после чего перечисляются имена всех методов, которые обеспечиваю доступ к значению некоторого свойства. За словом read идет имя метода, которое обеспечивает чтение свойства, за словом write следует имя метода, который записывает значение свойства[21].
Рассмотрим пример описание класса
Type
Tcountry:string[20];
Ttown:string[20];
Tstreet:strring[30];
Tflat:integer;
TTAddress=class
Private
FCountry: Tcountry; // значение свойства Country
Ftown: Ttown; // значение свойства Town
FStreet: Tstreet; // значение свойства Street
FFlat: Tflat; // значение свойства Flat
Constructor.Create(Address: TAddress);
Procedure Pokaz;
Function GetCountry: TCountry;
Function GetTown: TTown;
Procedure SetStreet(NerStreet: TStreet);
Public
Property Street: TStreet;
read GetStreet;
write SetStreet;
end;
При выполнении программы, чтобы установить значение некоторого свойства, нет необходимости использовать оператор установки свойств для объекта, достаточно применение оператора присваивания свойству некоторого значения[22]. К примеру, для присвоения значения свойству town объекта Address можно записать[23]
Address.town:=’Москва’;
Этот оператор будет перетранслирован в вызов метода:
Address.town(’Москва’);
На первый взгляд создается впечатление, что в программе применение свойств не отличается от применения полей объекта. Однако, свойство и поле объекта имеет принципиальное отличие: когда происходит присвоение и чтение значение некоторого свойства, будет автоматически вызвана процедура, выполняющая определенную работу.
Методы свойства в программе также могут выполнять дополнительные задачи. Так, применяя метод, можно проверять правильность присваиваемых значений, устанавливать значение связанных полей, вызвать другую процедуру[24].
Обозначение данных объекта в виде свойств, дает возможность ограничения доступа к полям, в которых хранится значение некоторого свойства объекта. Можно, например, разрешить только чтение. Для разрешения только чтения значения некоторого свойства, следует указывать в его описании только метод чтения.
Если попытаться присвоить новое значение свойству, которое предназначено только для чтения, приведет к ошибке при выполнении компиляции программы[25].
Изменение значения свойства, которое защищено от записи, возможно при инициализации объекта[26].
Рассмотрим методы класса TTAddress, которые позволяют создать объект класса TTAddress и получить доступ к его свойствам.
// Конструктор объекта TTAddress
Construcror TTAddress.Create(Address: TAddress);
Begin
FAddress:=Address;
End;
// Метод получения значения свойства Address
Function TTAddress.GetAddress;
Begin
Result:=FAddress;
End;
// метод изменения значения свойства Town
Procedure TTAddress.SetTown(NewTown:TTown);
Begin
if FTown =’’ then FTown:=NewTown;
end;
Описанный выше конструктор выполняет создание объекта и установление значения поля FAddress, которое определяет значение свойства Address.
Для создания объекта класса TTAddress и задания его свойств, могут быть, например, следующими[27]:
people:=TTAddress.create(‘Петров’);
people.Town:=’ Москва’;
1.5. Понятие наследования
Объектно–ориентированное программирование дает возможность создавать новые классы при помощи добавления полей, свойств и методов, для уже существующих классов[28].
Указанный процесс получения новых классов получил название порождения. При этом новый класс получает (наследует) свойства и методы от своего родительского (базового) класса[29].
При объявлении некоторого класса–потомка указывается класс его родителя.
1.6. Понятие области видимости
Кроме объявления таких элементов класса, как поля, методы и свойства, в описание класса обычно входят директивы, которые устанавливают видимость элементов, принадлежащих определенному классу, в теле программы[30].
Существуют несколько директив видимости, рассмотрим их более подробно.
1) Private. Все, описанное в разделе Private (поля, свойства, методы) являются личными или закрытыми. В раздел Private обычно помещаются элементы (обычно поля), выполняющие определенные функции в объекте и которые должны быть скрыты от остальных частей программы. Также в данном разделе могут описываться элементы, к которым должен быть закрыт доступ из других объектов.
2) Public. Описанные в данном разделе элементы являются доступными из всех процедур и могут использоваться в любом месте программы.
3) Protected. Те элементы класса, которые объявляются в защищенном (protected), которые доступны только в классах, которые порождены от исходного класса. В данном разделе помещаются элементы, которые важны только для определенного класса, а также его потомков. В секции protected помещаются методы класса.
4) Published. Все поля, свойства, а также методы, которые описаны в разделе Published носят название опубликованных. Область видимости, расположенных в данном разделе совпадает с областью видимости общедоступных описаний. Отличие от общедоступных описаний состоит в том, что информация о них становится видна через Инспектор объектов. Если включена директива {$M+}, то все описания, идущие после заголовка класса, становятся опубликованными[31].
5) Automated. Те элементы класса, которые объявлены в данном разделе носят название автоматических. Они имеют видимость, аналогичную общедоступным операциям. Но в отличии от общедоступных, для автоматических генерируется дополнительная информация, используемая при реализации механизма OLE. Применение данной директивы целесообразно при объявлении класса TAutoObject[32].
1.7. Понятие полиморфизма и виртуальных методов
Под полиморфизмом понимается возможность применения одинаковых имен методов, которые входят в разные классы. При полиморфизме обеспечивается использование именно метода, соответствующего классу объекта[33].
ВЫВОД. Рассмотренное в первой главе позволяет получить представление об основах объектно–ориентированного подхода, применяемого при проектировании информационных систем.
2. Примеры применения объектно–ориентированного программирования
2.1. Пример 1 Тестирующая программа, реализованная на Borland Delphi
2.1.1. Постановка задачи
Разработать приложение, позволяющее выполнять пример психологического тестирования
2.1.2. Главная форма (Form1)
Вид главной формы в режиме конструктора показан на рисунке 1.
Рисунок 1 – Вид главной формы приложения (Form1)
Описание элементов главной формы приложения приведено в таблице 1.
Таблица 1 – Описание элементов главной формы
|
Имя элемента |
Тип |
Назначение в программе |
|
Image1 |
TImage |
Для вывода картинки к вопросу |
|
Label1 |
TLabel |
Вывод пояснения требуемого действия |
|
MainMenu |
TMainMenu |
Главное меню приложения |
|
Next |
TButton |
Кнопка для перехода к следующему вопросу |
|
RadioOtvet1 |
TRadioButton |
Выбор первого варианта ответа |
|
RadioOtvet2 |
TRadioButton |
Выбор второго варианта ответа |
|
RadioOtvet3 |
TRadioButton |
Выбор третьего варианта ответа |
|
Vopros |
TRichEdit |
Вывод текста вопроса |
2.1.3. Форма результатов теста (result)
Вид формы результатов теста приведен на рисунке 2.
Рисунок 2 – Вид формы результатов теста
Описание элементов главной формы приложения приведено в таблице 2.
Таблица 2 – Описание элементов формы результатов теста
|
Имя элемента |
Тип |
Назначение в программе |
|
Button1 |
TButton |
Кнопка для завершения работы |
|
ItogoA |
TLabel |
Вывод количества ответов типа А |
|
ItogoB |
TLabel |
Вывод количества ответов типа Б |
|
ItogoV |
TLabel |
Вывод количества ответов типа В |
|
Label1 |
TLabel |
Вывод текста «Итого» |
|
RichEdit1 |
TRichEdit |
Многострочное поле для вывода пояснений |
|
StringGrid1 |
TStringGrid |
Таблица для вывода ответов на каждый вопрос |
2.1.4. Модуль обработчиков главной формы
Текст модуля обработчиков главной формы приведен в Приложении 1.
2.1.5. Модуль обработчиков формы результатов
Текст модуля обработчиков формы результатов приведен в Приложении 2.
2.1.6. Результаты работы программы
При запуске приложения, открывается главное окно, показанное на рисунке 3.
Для начала теста необходимо выбрать пункт меню Тест → Начать тест.
Вид вопроса без графического пояснения показан на рисунке 4.
|
Рисунок 3 – Начальное окно приложения |
Рисунок 4 – Вид вопроса без графического пояснения |
Если для вопроса имеется графическое пояснение, то вопрос будет выглядеть, как показано на рисунке 5.
Рисунок 5 – Вид вопроса с графическим пояснением
После окончания теста, будет выдано окно со статистикой, как показано на рисунке 6.
Рисунок 6 – Результаты тестирования
По полученному результату можно сделать вывод, что у тестируемого недостаточно развит тип А, гармонично развит тип Б и в «избытке» тип В.
2.2 Пример 2 Вычисление значения функции
2.2.1. Постановка задачи
Вычислить и напечатать значение функции Y = f1 + f2 + f3 + f4. Значение аргумента x задать с клавиатуры. Значения A, B, C, D задать с клавиатуры при помощи оператора присваивания. Значения α, β, γ задать в разделе констант.
Таблица 3 – Исходные данные к примеру 2
|
f1 |
f2 |
f3 |
f4 |
|
= |
2.2.2. Алгоритм решения задачи
На рисунке 7 показан алгоритм вычисления функции.