О... ещё вопр... а можно переменные объявлять с начальными значениями, как в С++? Например Public b As New DX = NULL?






Как зачем?GSerg писал(а):Нет (а зачем?) и нет (все в ноль).

Vovik писал(а):Можно ли как-нть отследить сколько раз объявляется переменная с типом моего класса? Мне б как-нть запретить это дело.:
Vovik писал(а):О... ещё вопр... а можно переменные объявлять с начальными значениями, как в С++? Например Public b As New DX = NULL?


oNew = ClassFactory(constMyObject)

sanches писал(а):так это ты про .НЕТ?

oNew = ClassFactory(constMyObject)

Private Function IIntegrationBuilder_GetIntegrationRules() As classIntegrationRule
Set oRule = New classIntegrationRule
oRule.Groups.Add 0, "Договор"
oRule.Groups.Add 0, "Приложение"
oRule.InSignalsGroups.Add "Договор", "2"
oRule.InSignalsGroups.Add "Договор", "14"
oRule.InSignalsGroups.Add "Приложение", "4"
oRule.InSignalsGroups.Add "Приложение", "5"
Set IIntegrationBuilder_GetIntegrationRules = oRule
End Function
Set oRule = oBuilder.GetIntegrationRules


Konst_One писал(а):В VB это назвается имплементацией и использовать можно с замечательным словом Implements Class1, например, в заголовке Class2 будет обозначать наследование всех описателей класса 1



Konst_One писал(а):В VB это назвается имплементацией и использовать можно с замечательным словом Implements Class1, например, в заголовке Class2 будет обозначать наследование всех описателей класса 1

Konst_One писал(а):2 codemaster Это как рассмаривать. ты рассматриваешь это с точки зрения java/c , а в VB - Implements именно для того, о чем спрашивал первый товарищ. чтобы можно было создать класс на основе другого

Fedorfx писал(а):
Имплементация
фабрика классов
Fedorfx писал(а):
с наследованием
Fedorfx писал(а):Вообще интерисуют красивые примеры.

'Class1
public property Get MyProperty() as string
MyProperty="myproperty"
end property
'Class2
Implements Class1
public property Get MyProperty() as string
'
end property
public Property Get MyPropertyNext() as long
MyPropertyNext=2
end property

Dim dd(1000) as double
dd(0)=1
CopyMemory dd(1), dd(0), ubound(dd)*4
dd(0)=2



Konst_One писал(а):Могу не согласиться. Как раз я могу создать класс на основе своего другого класса и это и будет полиморфизм. Но я ничего не знаю о так называемом наследовании реализации.
'------------Class 1------------
Public Function GetName() As String
GetName = "Class1"
End Function
Private Sub Class_Terminate()
Debug.Print "Class1_Terminate "
End Sub
'------------Class 2------------
Public Function GetName() As String
GetName = "Class2"
End Function
Private Sub Class_Terminate()
Debug.Print "Class2_Terminate "
End Sub
'-------- тест----------
Private Sub pTest()
Dim i As Integer
Dim objArr(1) As Object
'
Set objArr(0) = New Class1
Set objArr(1) = New Class2
'
For i = 0 To UBound(objArr)
' собственно полиморфизм
Debug.Print objArr(i).GetName
Next i
'<-- попоробуйте закомент. Erase objArr и см.
'Class_Terminate классов
Erase objArr
'
End Sub
Class1
Class2
Class1_Terminate
Class2_Terminate Class1
Class2
Class1_Terminate
Class2_Terminate 

GSerg писал(а):Замечания:
Зачем комментировать erase?
С ним:
- Код: Выделить всё
Class1
Class2
Class1_Terminate
Class2_Terminate
Без него:
- Код: Выделить всё
Class1
Class2
Class1_Terminate
Class2_Terminate
Критика:
Это не полиморфизм. Это два абсолютно не связанных объекта, которые абсолютно случайно имеют методы, называющиеся одинаково.

sanches писал(а):странно, у меня есть книжка от Microsoft. Про Implements там все сказано и вообще про ООП там есть, но никих упоминаний о какой-то фабрике.
sanches писал(а):И я кстати так и не понял, что же это за зверь такой и чем он лучше имплемента? (зы Вопрос немного корявый, но суть в этом)

codemaster писал(а):
Ну что поговорим о IDispatch , vTable раннем и позднем связывании !!!! ????
'Зачем комментировать erase?
смотрим где возникает ClassX_Terminate
P.S. Берем книгу и читаем определение полиморфизма.
Сейчас этот форум просматривают: AhrefsBot и гости: 9