Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Интерфейсы в VB6 Добавлено: 16.08.07 11:38  

Автор вопроса:  Maran
Расскажите, пожалуйста, или скажите где прочитать (помогите найти информацию) про интерфейсы в VB6.
Я имею ввиду не пользовательский интерфейс, а из раздела классы, методы классов, в общем Объектно Ориентированное Программирование.

Столкнулся с задачей разбора кода, а там везде используются интерфейсы. Выглядит это примерно так:

Dim objTable As intUnit


Как удалось разобраться, префикс int означает интерфейс (условное обозначение).
В коде объект используется как обычный объект:

objObject = objTable.Part(список параметров)


Так из какой это "оперы"? Как работать с этими интерфейсами? Для чего они используются?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 16.08.07 17:10
Почитай про COM, интерфейс — это важное понятие в нем.

Ответить

Номер ответа: 2
Автор ответа:
 Maran



Вопросов: 1
Ответов: 5
 Профиль | | #2 Добавлено: 17.08.07 09:22
Общее описание этой технологии я нашел.
Но хотелось бы подробно разобраться в в этом деле, да и дельных примеров найти не удалось.
1)Если мы пишем:
Implements имя_имтерфейса

значит до конца этого класса мы будем реализовывать только этот интерфейс?
2)И в этом классе тогда нужно писать код всех методов, которые будут использоваться в интерфейсе?
3)При создании интерфейса в одном классе нужно только объявить все методы (написать заголовки функций), а уже в другом определять их (писать код, который будет выполняться при их вызове)?

Ответить

Номер ответа: 3
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #3 Добавлено: 17.08.07 13:11
В понятии VB интерфейс это набор функций, который ОБЯЗАТЕЛЬНО должен быть реализован в классе, имплементирующем интерфейс.

Могу, в принципе накидать, простой иллюстративный примерчик, для чего это может понадобиться..

Класс Figure:


Public Sub PrintMe()
   ' пустой метод
End Sub



Класс Circle:


Implements Figure

Public Sub Figure_PrintMe()
   Debug.Print "Йа кружочег!"
End Sub



Класс Triangle:


Implements Figure

Public Sub Figure_PrintMe()
   Debug.Print "Йа треугольничег!"
End Sub



Модуль Module1:


Sub Main()
   '
   Dim f1 As Figure: Set f1 = New Circle
   Dim f2 As Figure: Set f2 = New Triangle
   '
   Dim ff As New Collection
   ff.Add f1
   ff.Add f2
   '
   Dim v, f As Figure
   For Each v in ff
      Set f = v
      f.PrintMe
   Next
   '
End Sub



Таким образом, видим, что сам интерфейс Figure тоже является классом, но переменным этого класса, мы можем присваивать переменные других классов, но только тех которые имплементируют класс Figure.

Ответить

Номер ответа: 4
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #4
Добавлено: 20.08.07 06:58
Таким образом, видим, что сам интерфейс Figure тоже является классом, но переменным этого класса, мы можем присваивать переменные других классов, но только тех которые имплементируют класс Figure.


Неплохой пример.
Немного уточним.

Интерфейс нельзя называть классом. Его можно назвать чисто виртуальным классом (содержащим только абстрактные методы). А если говорить о более низоуровневом взгляде, то это структура.

Мы не можем присваивать переменные интерфейса другим классам по двум причинам.
1. В интерфейсе нет переменных. Есть константы и абстрактные методы (пустые методы).
2. Интерфейс не присваивается, а приводится к классу реализующему его методы.

Dim f1 As Figure: Set f1 = New Circle

Приведение интерфеса к классу.
Это делается для того, чтобы знать к какой реализации обращаться - Circle или Triangle. Так как оба класса реализуют интерфейс Figure.

Имхо.
Вообще говоря идеальным, для изучения ООП начинающими является Java, а если всерьез то С++.
Новые феньки и огрангичения в С#, и VB.NET, касательно ООП, могут внести изрядную путаницу для тех кто только знакомиться с ориентированным на объект, подходом к программированию.

Ответить

Номер ответа: 5
Автор ответа:
 Maran



Вопросов: 1
Ответов: 5
 Профиль | | #5 Добавлено: 20.08.07 14:50
Sub Main()
   '
   ;Dim f1 As Figure: Set f1 = New Circle
   ;Dim f2 As Figure: Set f2 = New Triangle
   '
   ;Dim ff As New Collection
   ff.Add f1
   ff.Add f2
   '
   ;Dim v, f As Figure
   For Each v in ff
      Set f = v
      f.PrintMe
   Next
   '
End Sub

Что тогда он распечатает: "Йа кружочег!" или "Йа треугольничег!"?

Ответить

Номер ответа: 6
Автор ответа:
 el-paso



Вопросов: 0
Ответов: 56
 Профиль | | #6 Добавлено: 20.08.07 15:10
Распечатает:

Йа кружочег!
Йа треугольничег!

(т.е. по очереди вызывается метод обеих созданных фигурок)

Ответить

Номер ответа: 7
Автор ответа:
 Maran



Вопросов: 1
Ответов: 5
 Профиль | | #7 Добавлено: 20.08.07 15:16
Что будет, если написать:

   Dim f1 As Figure: Set f1 = New Circle
   Dim f2 As Figure: Set f2 = New Triangle

   Dim ff As New Collection
   ff.Add f1
   ff.Add f2

   Dim v, f As Figure
   For Each v in ff
      Set f1 = v
      f1.PrintMe
   Next

Что он тогда распечатает?

Ответить

Номер ответа: 8
Автор ответа:
 Maran



Вопросов: 1
Ответов: 5
 Профиль | | #8 Добавлено: 20.08.07 16:55
Думаю, что разобрался!
Спасибо всем ответившим!
Отдельное спасибо vito
Имхо.
Вообще говоря идеальным, для изучения ООП начинающими является Java, а если всерьез то С++.
Новые феньки и огрангичения в С#, и VB.NET, касательно ООП, могут внести изрядную путаницу для тех кто только знакомиться с ориентированным на объект, подходом к программированию.

Натолкнул на полезные размышления!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам