说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB 6.0中类聚集关系的实现

HTML文档下载 WORD文档下载 PDF文档下载
VB 6.0中类聚集关系的实现
作者:武汉交通科技大学
杨青 刘洪星
---- 类之间最主要的关系有两种,它们是聚集(Aggregation)和继承(Generelization)。聚集表示类之间的关系是整体与部分的关系,例如一个家庭有一个父亲、一个母亲和若干个孩子。类之间的聚集关系又称包含关系,一个类由若干个其他类组合而成,当该类的实例被创建后,组成它的各类的实例将自动被创建。

---- 下图描述了Family类与组成它的各类之间的关系。Family类与Father类、Mother类的关系是一对一的关系,而Family类与Child类的关系是一对多的关系。为了简化类之间的关系,我们增加了一个Children类,Children类是Child类的集合,因此Family类与Children类直接关联,形成一对一的关系。

Family------------ > Father
|
-------- > Mother
|
-------- > Childred ------ >child

---- VB6.0对类聚集关系的实现提供了较好的支持。在下面的程序中,我们仅给出了与Falimy类、Children类、Child类的具体实现有关的代码,以此为例说明类聚集关系的实现方法。
---- 程序中定义了三个类模块:Falimy类模块,Children类模块,Child类模块。在Falimy类模块中,利用属性过程,Mother类、Father类、Children类被定义为Family类的只读属性。下面是Family 类模块中声明部分的代码。

Option Explicit
Private mFather As New Father
Private mMother As New Mother
Private mChildren As New Children
Public Property Get Father() As Father
Set Father=mMother
End Property
Public Property Get Mother()As Mother
Set Mother()=mMother
End Property
Public Property Get Children() As Children
Set Children= mChildren
End Property

---- 下面是Children类模块的代码,首先在类模块的说明部分创建了集合类Collection的实例mcolChildren。在定义公共方法Add时,通过引用mcolChildren的Add方法将新的Child 对象添加到集合中,Children类被定义成Child类的集合。通过直接引用mcolChildren的属性Count定义了Children类的公共属性Count,通过直接引用mcolChildren的方法Item定义了Children类的公共方法Item。
---- 我们还可以根据需要实现其他的属性和方法。通过创建Children类,与Children类有关的所有代码都封装起来,使得Children类可以进一步重用,从而较好地体现了面向对象程序设计的原则。

Option Explicit
Private mcolChildren As New Collection
Public Property Get Count() As Long
Count = mcolChildren.Count
End Property
Public Function Add(ByVal Name As String,
ByVal BirthDayAs Date,ByVal Sex As Boolean ) As Child
Dim empNew As New Child
Static intNum As Integer
With empNew
intNum = intNum + 1
.Name = Name
.BirthDay= BirthDay
.Sex=Sex
mcolChildren.Add empNew
End With
Set Add = empNew
End Function
Public Function Item(ByVal Index As Variant) As Child
Set Item = mcolChildren.Item(Index)
End Function

---- 下面是Child类声明部分的代码。
Option Explicit
Public Name As String
Public BirthDay As Date
Public Sex As Boolean

---- 程序中还定义了一个窗体模块。在窗体上布置有三个文本框txtName、txtBirthDay、txtSex,一个列表框lstChildren,两个命令按纽cmdAddChild、cmdListChild。
---- 在窗体模块中首先创建了一个Family类的实例sbMain,Children类和Child类的实例也随之被创建。在事件过程中,仅通过引用sbMain的属性Children,我们就可以实现对Children类的各种操作。

Option Explicit
Public sbMain As New Family
Private Sub cmdAddChild_Click()
sbMain.Children.Add txtName.Text,
txtSalary.Text,txtSex.Text
txtBirthDay.Text = " "
txtName.Text = " "
txtSex.Text=" "
End Sub
Private Sub cmdListChild_Click()
Dim emp As New Child
Dim i As Long
lstChild.Clear
For i = 1 To sbMain.Children.Count
Set emp = sbMain.Children.Item(i)
lstChild.AddItem emp.Name & ", "
& emp.BirthDay&", "emp.Sex
Next
End Sub

UX设计师和软件开发者,谁将是2014年的老大? 爸爸去哪儿:开发知名题材手游压力山大 多平台同步 谈IE11全新功能 高通副总裁沈劲:移动是产生变革的强大原动力 高性能、高流量Java Web站点打造的22条建议 云巅:第三代虚拟技术+搜索引擎+乐高理念打造分布式桌面云 Intel:从“芯”构建下一代数据中心 WhatsApp:50名员工,月4亿活跃用户,日160亿条消息和5亿张图片 三星Galaxy Gear智能手表失利 需改进的8个方面 IE11全新的F12开发人员工具详解 研发周报:为什么开发者担心将代码公布 Hadoop YARN的发展史与详细解析 一周消息树:Firefox OS会不会成为下一个Android PhoneGap 3.3.0发布,支持Android 4.4 KitKat 移动周报:两岸三地在线编程学习网站大搜罗 有道周枫和他的“放养”团队 看IE11如何助力AAF推动公益事业 SUSE总裁Nils:将SUSE Cloud 2.0打造成“零影响的云安装程序” Windows 8之父Steven Sinofsky:2014年科技界的十大趋势 电视盒子还没智能化?看Fan TV们怎么玩 畅游启动“必赢计划” 十亿巨资代理优质产品 数据控使用Hadoop的三种最常用方式 值得创始人学习的五大企业文化管理方式 圣诞节快乐:来自程序员们的问候 宏碁任命新CEO Jason Chen:曾任职英特尔14年、台积电8年 史上第一次越狱发布会与Evad3rs太极助手罗生门 新东方在线CTO曾明:已用Cocos2d-html5开发出150余款产品 Facebook 2013年的9个开源项目 开源力量公开课2013年度庆典:我们的开源项目 看雪学院“走进企业看安全”活动走进安全管家 视频+PPT:苹果iOS7 Tech Talks大会演讲内容 怎样去除启动菜单? 调用自建文件时,报错“重复定义”,为什么? Rave做报表时,要求preview时,不出现那个OutPut Options,并且预览时,要求全屏显示 请问映射文件里添加纪录应该怎么做阿 怎样让下拉列表中选定的值对应为数据库中的值~! 怎样去除启动菜单? asp.net 怎样学习 请问我的要存放含有‘年月日时分秒毫秒微秒’的数据能否用date类型存储? 谁来帮我解决一下问题——解决者另外加分100 问:sys/wait.h 是unix下的一个宏吗? 救命! 请问高手 网页问题 再次跪求教物资进库表和物资库存表的问题! 请问高手,如何在asp中调用,在线等候… 关于局域网的一个问题 一个表的记录写到另一个表中的问题??UP有分 蔡鸟求助:如何用vc++把一个文件(比如图纸)存到局域网中别的机器上 我有IIS的服务器的网站,我用什么软件能知道有谁正在下载什么文件?? 求MICROSOFT VISUAL STUDIO.NET 2002 中文企业版,2003不要,谢谢~ MySQL JDBC 驱动程序在哪里下载? 请教八数码难题的解法! 有在ASP 下 用过regexp类的吗?? 急救!关于ON_WM_ACTIVEAPP的问题 MySQL JDBC 驱动程序在哪里下载? mysql for linux 启动问题? 51job的动态简历预览功能暴快,有谁知道采用了什么样的技术? 请教为什么KeyUp事件不响应? 程序有两个线程时,如果子线程是个死循环,永远不停(如监听一个Socket),那当我的主线程return了后,程序会不会退出呢? 我重载了WM_NCPAINT来画窗体边框和标题栏,可是菜单就不见了,如何给画出来? 如何将INTERBASE中的数据导出到EXCEL文件中?! 关于C# 需要server2003企业中文版(激活的)地址! sql查询问题 update 的问题 急!IIS连接不上 装上JDataConnection Server之后,在数据源ODBC中的驱动程序列表中没有JDBC驱动算不算问题,高分求解! 短消息服务提供商(SP)程序问题 activeX控件问题,急盼高手帮助! 请教八数码难题的解法! 如果一个dll,在它里面有一个窗口,而有一个函数是这个窗体类的一个函数,那么如果在使用这个dll文件中的这个函数。 谁能给一个测试是否是EMAIL的函数?急! 如何实现关键字查询? 只能让家里的电视出现更多的台,比如解码器什么的! 急问:那位了解 sys/wait.h ,它的功能是什么? 求MICROSOFT VISUAL STUDIO.NET 2002 中文企业版,2003不要,谢谢~ saucer(思归)在吗?有问题请教! 哪里有C++ Builder 下载的。 TTrayIcon中的图标颜色只能显示16色的吗? HELP!!!XML怎么写成物理文件到本地? 这是为什么呀?电脑高手请进。。。 煎鱼怎样不碎? 忽然,象被一阵风吹来的,远丘上出现了一群马,马上的男女老少穿着各色的衣裳,马疾驰,襟飘带舞,象一条彩虹向我们飞过来.这是主人来到几十里外,欢迎远客.见到我们,主人们立刻拨转马头,欢 英语高手快来,请用这段话用英语写出来.亲爱的顾客:在这里我对你表示非常的抱歉,我将对此事进行调查,如果属实,我会帮你换一个新的随身听,而且对那店员进行严格的批评,请你放心,我会用 秋天就像是()的诗人,像是()的画家.括号里填成语 比例尺1:26000000地图,图距3CM实际多少米,飞机7:54飞,9:00到平均每小时飞多少千米?公式 秋天就像是( )的诗人,又像是( )的画家,我爱秋天 下列哪个既是画家,又是诗人﹖①吴道子 ②王维 ③唐伯虎 ④顾恺之 秋天像一个( )的诗人,又像一个( )画家 歼10和F16说说2种机型的长和短 优和劣 如果2架机型进行空中格斗 哪架获胜率大 从综合性能上说,歼10与F16谁好? 歼十与F16全性能对比 德刊:北约会否卷入东亚冲突?日本挑衅属不自量力的妄想奥巴马医改演说两次遭输油管项目抗议者日本政府出资设国营公司 支援企业竞标男子患病“变形”却不“金刚” 被迫宅美国务卿克里访问埃及 承诺美将与埃过泰游船沉没1名中国游客遇难2人受伤男子患病“变形”却不“金刚” 被迫宅埃及法老图坦卡蒙死因新解:或死于“车英国15岁少年欲滑雪闯南极 探险为筹克里中东之行访埃及 停留数小时修复两中国竟然一招拿下俄罗斯?美元不寒而栗真的瘦| 比减重更重要的是减腿 8个时髦办|明星也想尝鲜做设计师?你会为俄核潜艇攻击美核潜艇,将其击伤致美潜新鲜事| 看完《小丈夫》光记得杨玏这4岁女孩将随父徒步川藏线 母亲:有些美人计|你的护肤品该换季了,8款啫喱荐号|透过微信看人,很准!收藏!在股市不会逃顶,永远是亏多赢少明日股市预测|后市或以中小创为主 1易天金盘:黑色系全线崩溃,大宗商品欧末世控兽使东厂见鬼事务所武踏巅峰逍遥大唐游记地球事务所随身带着电影工厂魔王妹妹与我与勇者姐姐洪荒之无限兑换抗日也风骚游戏原住民的反击永安桥旅游情人湾旅游酒文化博物馆旅游江南瓦当陈列馆旅游张正根雕艺术馆旅游圣堂旅游倪宅旅游中国纽扣博物馆旅游醉园旅游贵州民族民俗博物馆旅游磁悬浮列车旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘