你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
VB.Net中文教程(2) Composite样式(2)
 

Form1 = Me
'This call is required by the Win Form Designer.
InitializeComponent()
'TODO: Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Public Overrides Sub Dispose()
MyBase.Dispose()
components.Dispose()
End Sub
#Region " Windows Form Designer generated code "
......
#End Region
Protected Sub Form1_Click(ByVal sender As Object, ByVal
e As System.EventArgs)
Dim ord As New Order("Order777")
Dim pline As OrderLine
pline = New OrderLine("Pencil", 88.25)
ord.AddLine(pline)

pline = New OrderLine("Ballpen", 110.5)
ord.AddLine(pline)
Messagebox.Show(ord.getOrderID + "'s amount = " + str(ord.Amount()))
End Sub
End Class

此程序输出:
Order777's cost = 198.75

在Order 类别中定义了lines变量﹐其型态ArrayList﹐表示lines将可代表1 个ArrayList之对象﹐其本质上就是lines变量,内含一个参考值﹐参考到ArrayList之对象。在Order类别的建构程序 ---- New()里,诞生了ArrayList对象﹐并将参考值存入lines里。各程序之定义如下﹕
Order 类别的Amount()程序计算出该订单的总金额。AddLine() 则在订单上新增一个采购项目。在Form1_Click()中﹐ord 对象内含一个lines集合对象﹐它容纳2 个OrderLine对象。如此就表达了订单与采购项目之间的Whole-part关系了。
上述程序相当于 -----

'ex02.bas
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms
Imports System.Collections
'----------------------------------------------------
Class Order
Class OrderLine
Public pname As String
Public amt As Double
End Class

Private OrderID As String
Private lines As ArrayList

Public Sub New(ByVal id As String)
OrderID = id
lines = New ArrayList()
End Sub
Public Sub AddLine(ByVal pna As String, ByVal am As Double)
Dim ln As OrderLine
ln = New OrderLine()
ln.pname = pna
ln.amt = am
lines.Add(ln)
End Sub
Public Function Amount() As Double
Dim total As Double = 0
Dim ln As OrderLine
For Each ln In lines
total = total + ln.amt
Next
Amount = total
End Function
Public Function getOrderID() As String
getOrderID = OrderID
End Function
End Class
'-----------------------------------------------------
Public Class Form1
Inherits System.WinForms.Form

Public Sub New()
MyBase.New()

Form1 = Me
'This call is required by the Win Form Designer.
InitializeComponent()
'TODO: Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Public Overrides Sub Dispose()
MyBase.Dispose()
components.Dispose()
End Sub
#Region " Windows Form Designer generated code "
......
#End Region
Protected Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ord As New Order("Order777")
ord.AddLine("Pencil", 88.25)
ord.AddLine("Ballpen", 110.5)
Messagebox.Show(ord.getOrderID + "'s amount = " + str(ord.Amount()))
End Sub
End Class

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089