Зачем нужны интерфейсы? - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Почитав MSDN и еще пару сайтов до меня так и не дошло что мне дадут интерфейсы нашел пример реализации интерфейса (код ниже), но я не понимаю чем он лучше? я мог бы создать другой класс Client, в котором не упоминал бы Implements и попросту выбросил бы Interface IAccount из кода подскажите чего я не вижу в этом коде, потому что для меня этот класс Client с использованием Implements выглядит точно таким же как и без Implements
Листинг программы
  1. Public Class Form1
  2. Dim s As Client = New Client("я", "такой", "РНКБ", 200)
  3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4. s.Put(100)
  5. s.Withdraw(50)
  6. MsgBox(s.CurentSum)
  7. End Sub
  8. End Class
  9. Public MustInherit Class Person
  10. Public Property FirstName() As String
  11. Public Property LastName() As String
  12. 'Абстрактный метод
  13. Public MustOverride Sub Display()
  14. Public Sub New(fName As String, lName As String)
  15. FirstName = fName
  16. LastName = lName
  17. End Sub
  18. End Class
  19. Public Class Employee
  20. Inherits Person
  21. Public Property Bank As String
  22. Public Overrides Sub Display()
  23. MsgBox(FirstName & " " & LastName & " works in " & Bank)
  24. End Sub
  25. Public Sub New(fName As String, lName As String, _bank As String)
  26. MyBase.New(fName, lName)
  27. Bank = _bank
  28. End Sub
  29. End Class
  30. Public Class Client
  31. Inherits Person
  32. Implements IAccount
  33. 'Переменная для хранения суммы
  34. Dim _sum As Integer
  35. 'Переменная для хранения процента
  36. Dim _procentage As Integer
  37. Public Property Bank As String
  38. 'Текущая сумма на счете
  39. ReadOnly Property CurentSum() As Integer Implements IAccount.CurentSum
  40. Get
  41. Return _sum
  42. End Get
  43. End Property
  44. 'Метод для добавления денег на счет
  45. Sub Put(sum As Integer) Implements IAccount.Put
  46. _sum += sum
  47. End Sub
  48. 'Метод для снятия денег со счета
  49. Sub Withdraw(sum As Integer) Implements IAccount.Withdraw
  50. If sum <= CurentSum Then
  51. _sum -= sum
  52. End If
  53. End Sub
  54. 'Процент начислений
  55. ReadOnly Property Procentage() As Integer Implements IAccount.Procentage
  56. Get
  57. Return _procentage
  58. End Get
  59. End Property
  60. Public Overrides Sub Display()
  61. MsgBox(FirstName & " " & LastName & " has an account in bank " & Bank)
  62. End Sub
  63. Public Sub New(fName As String, lName As String, _bank As String, _sum As Integer)
  64. MyBase.New(fName, lName)
  65. Bank = _bank
  66. Me._sum = _sum
  67. End Sub
  68. End Class
  69. Public Interface IAccount
  70. 'Текущая сумма на счете
  71. ReadOnly Property CurentSum() As Integer
  72. 'Метод для добавления денег на счет
  73. Sub Put(sum As Integer)
  74. 'Метод для снятия денег со счета
  75. Sub Withdraw(sum As Integer)
  76. 'Процент начислений
  77. ReadOnly Property Procentage() As Integer
  78. End Interface

Решение задачи: «Зачем нужны интерфейсы?»

textual
Листинг программы
  1.     Interface IInterface
  2.         Event CallEvent(sender As IInterface)
  3.         ReadOnly Property Name As String
  4.     End Interface
  5.  
  6.     Class TestClass
  7.         Private _c1 As Class1
  8.         Private _c2 As Class2
  9.  
  10.         Sub New()
  11.             _c1 = New Class1
  12.             _c2 = New Class2
  13.             'привязка событий к классам
  14.             AddHandler _c1.CallEvent, AddressOf Me.CallEvenet_
  15.             AddHandler _c2.CallEvent, AddressOf Me.CallEvenet_
  16.         End Sub
  17.  
  18.         Sub TestClass1() 'тест вызоы из Class1
  19.             _c1.TestClass1()
  20.         End Sub
  21.  
  22.         Sub TestClass2() 'тест вызоы из Class2
  23.             _c2.TestClass2()
  24.         End Sub
  25.  
  26.         Sub CallEvenet_(sender As IInterface) 'общий метод
  27.             MessageBox.Show(sender.Name)
  28.         End Sub
  29.  
  30.     End Class
  31.  
  32.     Class Class1
  33.         Implements IInterface
  34.  
  35.         Public Event CallEvent(sender As IInterface) Implements IInterface.CallEvent
  36.  
  37.         Public ReadOnly Property Name As String Implements IInterface.Name
  38.             Get
  39.                 Return "Class1"
  40.             End Get
  41.         End Property
  42.  
  43.         Sub TestClass1() 'тест вызов
  44.             RaiseEvent CallEvent(Me)
  45.         End Sub
  46.  
  47.     End Class
  48.  
  49.     Class Class2
  50.         Implements IInterface
  51.  
  52.         Public Event CallEvent(sender As IInterface) Implements IInterface.CallEvent
  53.  
  54.         Public ReadOnly Property Name As String Implements IInterface.Name
  55.             Get
  56.                 Return "Class2"
  57.             End Get
  58.         End Property
  59.  
  60.         Sub TestClass2() 'тест вызов
  61.             RaiseEvent CallEvent(Me)
  62.         End Sub
  63.  
  64.     End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут