۰۴-بهمن-۱۳۸۷, ۲۲:۲۰:۵۰
سلام
یکی از ایرادات بزرگی که برنامه نویسان دیگر زبانها به قدرت پاوربیسیک می گرفتن و درست هم بود
شی گرا نبودن پاوربیسیک بود که با آمدن پاوربیسیک 9 تمامی این مشکلات حل شد
و پاوربیسیک نیز به زبان های شی گرا پیوست(البته می توان بصورت ساخت یافته و رویدادگرا هم برنامه نوشت)
یعنی قابلیت استفاده از کلاسها و Property ها و ... در پاوربیسیک 9 ایجاد شد
این کد ها را در PB9/Win یا همان PowerBASIC9 اجرا کنید
یه مثال :
این کدها را برنامه نویسان VB.net بهتر درک می کنند
یکی از ایرادات بزرگی که برنامه نویسان دیگر زبانها به قدرت پاوربیسیک می گرفتن و درست هم بود
شی گرا نبودن پاوربیسیک بود که با آمدن پاوربیسیک 9 تمامی این مشکلات حل شد
و پاوربیسیک نیز به زبان های شی گرا پیوست(البته می توان بصورت ساخت یافته و رویدادگرا هم برنامه نوشت)
یعنی قابلیت استفاده از کلاسها و Property ها و ... در پاوربیسیک 9 ایجاد شد
این کد ها را در PB9/Win یا همان PowerBASIC9 اجرا کنید
یه مثال :
کد:
Class cContainer
Instance m_Width As Single
Instance m_Length As Single
Instance m_height As Single
Interface iContainer
Inherit IDispatch
Property Get Width () As Single
Property = m_Width
End Property
Property Set Width (ByVal Value As Single)
m_Width = Value
End Property
Property Get Length() As Single
Property = m_Length
End Property
Property Set Length(ByVal Value As Single)
m_Length = Value
End Property
Property Get Height() As Single
Property = m_Height
End Property
Property Set Height(ByVal Value As Single)
m_Height = Value
End Property
End Interface
End Class
Class cShip
Instance m_ContainerCount As Word
Instance m_Volume As Single
Instance m_VolumeUsed As Single
Instance m_Containers() As iContainer
Class Method Create()
ReDim m_Containers(0) As Instance iContainer
End Method
Interface iShip
Inherit IDispatch
Method SetMaxSize(ByVal nLength As Single, ByVal nWidth As Single, ByVal nHeight As Single)
m_Volume = nLength * nWidth * nHeight
End Method
Method AddContainer(ByVal iC As iContainer) As Long
Local ContainerVolume As Single
If IsObject(iC) Then
If IC.Width And iC.Height And iC.Length Then
ContainerVolume = iC.Width * iC.Height * iC.Length
If ContainerVolume + m_VolumeUsed <= m_Volume Then
Incr m_ContainerCount
ReDim Preserve m_Containers(m_ContainerCount - 1) As Instance iContainer
m_Containers(m_ContainerCount - 1) = iC
m_VolumeUsed = m_VolumeUsed + ContainerVolume
Method = 1
Else
Method = 0
End If
End If
End If
End Method
Method GetVolumeUsed() As Single
Method = m_VolumeUsed
End Method
Method GetCapacityLeft() As Single
Method = m_Volume - m_VolumeUsed
End Method
Method GetContainerCount() As Word
Method = m_ContainerCount
End Method
Method GetContainer(ByVal nItem As Word) As iContainer
If nItem > 0 And nItem <= m_ContainerCount Then
Method = m_Containers(nItem - 1)
Else
Method = Nothing
End If
End Method
End Interface
End Class
Function PBMain() As Long
Local cCont As iContainer
Local cBoat As iShip
Local s$
cBoat = Class "cShip"
cCont = Class "cContainer"
cBoat.SetMaxSize(20, 20, 40)
cCont.Length = 20
cCont.Width = 30
cCont.Height = 20
cBoat.AddContainer(cCont)
s$ = "Str$(cBoat.GetContainerCount()) = " & Str$(cBoat.GetContainerCount()) & $CrLf
Local cOneContainer As iContainer
cOneContainer = Class "cContainer"
cOneContainer = cBoat.GetContainer(1)
s$ = s$ & "Width of first container = " & Format$(cOneContainer.Width) & $CrLf
s$ = s$ & "Volume used : " & Format$(cBoat.GetVolumeUsed) & " square feet" & $CrLf
s$ = s$ & "Capacity left: " & Format$(cBoat.GetCapacityLeft) & " square feet" & $CrLf
?s$
End Function
این کدها را برنامه نویسان VB.net بهتر درک می کنند