Тема 4. введение в объектно-ориентированное программирование. создание класса, его свойств и методов. программирование разветвляющейся структуры алгоритма.
Изучение этой темы позволит:
1) освоить терминологию объективно-ориентированного программирования;
2) создать классы, их методы и свойства;
3) скрывать необходимые данные внутри класса;
4) использовать свойства класса для передачи данных;
5) работать с объектами;
6) понимать назначение структур разветвления;
7) использовать структуры разветвления при построении алгоритмов.
В этой теме рассматриваются вопросы использования классов для представления объектов в программе. Выше уже отмечалось, что любая форма или любой элемент управления является классом. Особенностью таких классов является то, что их можно увидеть на экране. Каждый раз, когда мы перетаскиваем на форму какой-то элемент управления, мы фактически инициируем создание нового экземпляра этого элемента управления (его нового объекта). Например, элемент управления TextBox определяет класс TextBox, который задаёт его внешний вид и возможности. При перетаскивании этого элемента на форму будет создан новый экземпляр класса TextBox, который будет точной копией того, что определено его классом. Можно создать новый экземпляр класса и программно ‑ с помощью ключевого слава New, записав следующий код: Dim Textbox1 As NewTextBox.
Подобные классы создаются самой системой, однако пользователь может разрабатывать и собственные. Классы применяются не только для изучения каких-то реальных вещей, как, например, компьютер или автомобиль, но и более абстрактных ‑ как счёт в банке или проект некоторого сооружения. Подобно тому, как по одному проекту можно построить много зданий, так и по одному классу можно создать много объектов для различных практических целей.
Таким образом, предметы обладают свойствами,определяющими их характеристики, методами, которые определяют выполняемые действия, и событиями, которые обуславливают их реакцию на те или иные действия. Когда создаётся класс, задающий некоторый предмет, то он также имеет иные собственные свойства, методы и события (иногда их называют членами класса), которые распространяются на все экземпляры данного класса.
Рассмотрим, например, класс Account, который мы хотим создать для отслеживания банковского счета. Этот класс должен иметь свойства AccountNumber (‹‹Номер счета››) и AccountBalance (‹‹Остаток на счёте››), методы ‑ как, например, CalculateInterest (‹‹Вычисление процента››), и события — как, например, изменение остатка на счёте BalanceChanged. Некоторые члены класса должны иметь тип Private, поскольку они должны быть доступны только коду внутри класса. Например, необходимо обеспечить условие, чтобы программа за пределами класса могла читать баланс, но эта же программа не должна иметь возможности его изменять. Изменение баланса должно быть доступно только методам класса. Для этих целей надо скрыть соответствующие члены класса, объявляя их Private и обеспечивая к ним доступ только через свойства. Можно открыть доступ к свойству и в то же время запретить его изменение, объявляя величину как ReadOnly (‹‹Только чтение››). Рассмотрим пример кода:
Class Account
Private AccountNumber As String
Private AccountNumber As Decimal
Public Sub UpdateBalance()
’код изменения баланса счета
End Sub
ReadOnly Property Balance() As Decimal
Get
Return AccountBalance
End Get
End Property
End Class
Одна из причин, по которой нужно создавать классы, состоит в том, что если создан класс для определённого предмета, то в этом случае можно повторно использовать этот класс в любом проекте. Например, если создан класс для контроля посещаемости занятий некоторого факультета, то этот класс можно использовать и для других факультетов. Хотя, программы, где используется данный класс, будут те же самые. Каждый студент имеет фамилию, имя, изучает известные дисциплины, по каждой их которых за ним числится определённое количество пропущенных часов.
Класс может быть создан одним из трёх способов: как код в форме для проекта Windows Application, как код в модуле проекта и как код, созданный в отдельном проекте библиотеки Class Library.
Методами класса являются обычные процедуры Sub или Function. Так, в предыдущем примере процедура Sub с именем UpdateBalance() является методом класса Account, и она предназначена для изменения и обновление остатка на счёте. Большинство методов является открытыми (Public), однако можно создавать методы, которые могут быть, использованы только самим классом: для этого надо объявить процедуру как закрытую (Private), и тогда она не будет видима и не сможет быть вызвана за пределами данного класса. Можно менять код закрытой процедуры, но все остальные методы, которые используют этот код, будут по-прежнему работать.
Рассмотрим далее вопросы создания классов, методы которых используют структуры разветвлений. Линейные структуры в основном реализуются операторами присваивание. Однако такие операторы всегда выполняются последовательно друг за другом в том порядке, как они записаны. В то же время при решении многих задач некоторые операторы должны выполняться, а некоторые ‑ нет (в зависимости от определённых условий). Для реализации подобных действий используются структуры разветвлений.
Технология программирования, использующая структуры, была введена для преодоления трудностей, возникающих по мере усложнения задач, решаемых на компьютере. Основная идея структурного подхода состоит в том, что программа представляет собой комбинацию или вложение стандартных структур и в том, и что каждая структура имеет только один вход и только один выход. Выведем некоторые обозначения. Пусть L и L1— это некоторые отношения (условия), например, a ˃ b или х ˃ 0 и т.п. Пусть S, S1, S2 ‑ некоторые действия, например, y = x, или z = m+n,и т.п.
Структурой разветвления(структурой выбора) называется такая структура, которая обеспечивает выбор из двух направлений реализуемого процесса. Выбор зависит от условия, имеющегося в данной структуре.
Имеется две структуры разветвления. Первая из них структура двойного ветвления,применяется, когда имеются две группы действия и структура обеспечивает выбор одной из них. Второй тип структуры разветвления, упрощённая развилка(или структурой типа «обход») используется, когда имеется только одна группа действий и структура либо выбирает их, либо пропускает: рассмотрим структуру двойного ветвления:
Вход |
L |
S1 |
S |
Нет |
Да |
Выход |
Рисунок 10 – Полная структура алгоритма разветвление