Зачем нужны интерфейсы? - Visual Basic .NET
Формулировка задачи:
Почитав MSDN и еще пару сайтов до меня так и не дошло что мне дадут интерфейсы
нашел пример реализации интерфейса (код ниже), но я не понимаю чем он лучше? я мог бы создать другой класс Client, в котором не упоминал бы Implements и попросту выбросил бы Interface IAccount из кода
подскажите чего я не вижу в этом коде, потому что для меня этот класс Client с использованием Implements выглядит точно таким же как и без Implements
Листинг программы
- Public Class Form1
- Dim s As Client = New Client("я", "такой", "РНКБ", 200)
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- s.Put(100)
- s.Withdraw(50)
- MsgBox(s.CurentSum)
- End Sub
- End Class
- Public MustInherit Class Person
- Public Property FirstName() As String
- Public Property LastName() As String
- 'Абстрактный метод
- Public MustOverride Sub Display()
- Public Sub New(fName As String, lName As String)
- FirstName = fName
- LastName = lName
- End Sub
- End Class
- Public Class Employee
- Inherits Person
- Public Property Bank As String
- Public Overrides Sub Display()
- MsgBox(FirstName & " " & LastName & " works in " & Bank)
- End Sub
- Public Sub New(fName As String, lName As String, _bank As String)
- MyBase.New(fName, lName)
- Bank = _bank
- End Sub
- End Class
- Public Class Client
- Inherits Person
- Implements IAccount
- 'Переменная для хранения суммы
- Dim _sum As Integer
- 'Переменная для хранения процента
- Dim _procentage As Integer
- Public Property Bank As String
- 'Текущая сумма на счете
- ReadOnly Property CurentSum() As Integer Implements IAccount.CurentSum
- Get
- Return _sum
- End Get
- End Property
- 'Метод для добавления денег на счет
- Sub Put(sum As Integer) Implements IAccount.Put
- _sum += sum
- End Sub
- 'Метод для снятия денег со счета
- Sub Withdraw(sum As Integer) Implements IAccount.Withdraw
- If sum <= CurentSum Then
- _sum -= sum
- End If
- End Sub
- 'Процент начислений
- ReadOnly Property Procentage() As Integer Implements IAccount.Procentage
- Get
- Return _procentage
- End Get
- End Property
- Public Overrides Sub Display()
- MsgBox(FirstName & " " & LastName & " has an account in bank " & Bank)
- End Sub
- Public Sub New(fName As String, lName As String, _bank As String, _sum As Integer)
- MyBase.New(fName, lName)
- Bank = _bank
- Me._sum = _sum
- End Sub
- End Class
- Public Interface IAccount
- 'Текущая сумма на счете
- ReadOnly Property CurentSum() As Integer
- 'Метод для добавления денег на счет
- Sub Put(sum As Integer)
- 'Метод для снятия денег со счета
- Sub Withdraw(sum As Integer)
- 'Процент начислений
- ReadOnly Property Procentage() As Integer
- End Interface
Решение задачи: «Зачем нужны интерфейсы?»
textual
Листинг программы
- Interface IInterface
- Event CallEvent(sender As IInterface)
- ReadOnly Property Name As String
- End Interface
- Class TestClass
- Private _c1 As Class1
- Private _c2 As Class2
- Sub New()
- _c1 = New Class1
- _c2 = New Class2
- 'привязка событий к классам
- AddHandler _c1.CallEvent, AddressOf Me.CallEvenet_
- AddHandler _c2.CallEvent, AddressOf Me.CallEvenet_
- End Sub
- Sub TestClass1() 'тест вызоы из Class1
- _c1.TestClass1()
- End Sub
- Sub TestClass2() 'тест вызоы из Class2
- _c2.TestClass2()
- End Sub
- Sub CallEvenet_(sender As IInterface) 'общий метод
- MessageBox.Show(sender.Name)
- End Sub
- End Class
- Class Class1
- Implements IInterface
- Public Event CallEvent(sender As IInterface) Implements IInterface.CallEvent
- Public ReadOnly Property Name As String Implements IInterface.Name
- Get
- Return "Class1"
- End Get
- End Property
- Sub TestClass1() 'тест вызов
- RaiseEvent CallEvent(Me)
- End Sub
- End Class
- Class Class2
- Implements IInterface
- Public Event CallEvent(sender As IInterface) Implements IInterface.CallEvent
- Public ReadOnly Property Name As String Implements IInterface.Name
- Get
- Return "Class2"
- End Get
- End Property
- Sub TestClass2() 'тест вызов
- RaiseEvent CallEvent(Me)
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д