Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема-05-03испр.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
376.1 Кб
Скачать

5.3.5. Иерархия классов и наследование

Наследование – возможность создавать класс со свойствами и методами, которые могут быть использованы в других классах. В терминологии ООП базовый класс называется наследуемым (родительским), а производный от него – наследующим (дочерним). Цель наследования заключается в создании ба­зового класса, где инкапсулируются свойства и методы, необходимые множеству производных классов того же типа. Так, можно создать базовый класс Account и определить в нем метод Get-Balance. Затем на основе этого класса создаются два отдельных класса: SavingAccount и Checkin-gAccount. Поскольку они используют ту же логику для получения информации, что и класс Ac­count, то могут унаследовать от него метод GetBalance. Это позволяет программисту один раз на­писать общий код, который затем будет проще поддерживать. Как правило, производные классы не ограничены свойствами и методами базового класса, а имеют более широкие возможности. В них можно определить присущие только им свойства и методы. Например, правила выполнения банковских операций требуют, чтобы при снятии денег с текущего счета на нем оставалась неко­торая минимально допустимая сумма, при снятии же денег со срочного вклада сохранения на сче­ту какой-то минимальной суммы не требуется. Поэтому каждый из производных классов может содержать собственное определение метода для обработки операции снятия денег со счета Withdraw.

Чтобы с помощью VB создать производный класс, следует в его определении рядом с именем наследуемого класса указать ключевое слово Inherits.

Создание класса CheckingAccount с помощью наследования

Public Class Account

Private m_lngAccountNumber As Long

Public Property AccountNumber( ) As Long

Get

Return m_lngAccountNumber

End Get

Set(ByVal Value As Long)

m_lngAccountNumber = Value

End Set

End Property

Public Function GetBalance() As Double

'Код вычисления остатка на счету в базе данных

End Function

End Class

Public Class CheckingAccount Inherits Account

Private m_dblMinBalance Аs Double

Public Sub Withdraw(ByVal Amount As Double)

'Код обработки операции снятия денег со счета.

End Sub

End Class

Для создания экземпляра класса CheckingAccount необходимо поместить в вызывающей про­грамме приведенный ниже код. В этом коде вызовы методов GetBalance и Withdraw выполняются одинаково. В обоих случаях нигде не указывается имя класса Account, поэтому создается впечат­ление, оба метода принадлежат одному и тому же классу CheckingAccount.

Dim oCheckAccount As CheckingAccount = New CheckingAccount() oCheckAccount.AccountNumber = 1000 oCheckAccount. GetBalance() oCheckAccount.Withdraw(500)

Наследование является полезной концепцией программирования, однако его рекомендуется применять не во всех случаях. Зачастую с подобными задачами лучше справляются интерфейсы (Тема 5.4).

Наследование лучше использовать в следующих случаях.

  1. Иерархия наследования представляет собой отношения тождественности (is-a), а не отношения включения (has-a).

  2. Допускается повторное использование кода базовых классов.

  3. Требуется применение одинаковых классов и методов к различным типам данных.

  4. Иерархия класса включает небольшое число уровней, и другие разработчики вряд ли будут добавлять в нее другие уровни.

  5. Требуется внесение глобальных изменений в производные классы путем изменения базового класса.

Рассмотрим данные пункты далее подробнее.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]