Страница: 1 |
Страница: 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-сайт:
Профиль | | #1
Добавлено: 16.08.07 17:10
Почитай про COM, интерфейс — это важное понятие в нем.
Номер ответа: 2
Автор ответа:
Maran
Вопросов: 1
Ответов: 5
Профиль | | #2
Добавлено: 17.08.07 09:22
Общее описание этой технологии я нашел.
Но хотелось бы подробно разобраться в в этом деле, да и дельных примеров найти не удалось.
1)Если мы пишем:
значит до конца этого класса мы будем реализовывать только этот интерфейс?
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-сайт:
Профиль | | #4
Добавлено: 20.08.07 06:58
Неплохой пример.
Немного уточним.
Интерфейс нельзя называть классом. Его можно назвать чисто виртуальным классом (содержащим только абстрактные методы). А если говорить о более низоуровневом взгляде, то это структура.
Мы не можем присваивать переменные интерфейса другим классам по двум причинам.
1. В интерфейсе нет переменных. Есть константы и абстрактные методы (пустые методы).
2. Интерфейс не присваивается, а приводится к классу реализующему его методы.
Приведение интерфеса к классу.
Это делается для того, чтобы знать к какой реализации обращаться - Circle или Triangle. Так как оба класса реализуют интерфейс Figure.
Имхо.
Вообще говоря идеальным, для изучения ООП начинающими является Java, а если всерьез то С++.
Новые феньки и огрангичения в С#, и VB.NET, касательно ООП, могут внести изрядную путаницу для тех кто только знакомиться с ориентированным на объект, подходом к программированию.
Номер ответа: 5
Автор ответа:
Maran
Вопросов: 1
Ответов: 5
Профиль | | #5
Добавлено: 20.08.07 14:50
'
 im f1 As Figure: Set f1 = New Circle
 im f2 As Figure: Set f2 = New Triangle
'
 im ff As New Collection
ff.Add f1
ff.Add f2
'
 im 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, касательно ООП, могут внести изрядную путаницу для тех кто только знакомиться с ориентированным на объект, подходом к программированию.
Натолкнул на полезные размышления!