转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB.Net中文教程(8) 对象(Object)基本概念         ★★★★

VB.Net中文教程(8) 对象(Object)基本概念

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2968 更新时间:2009/4/23 19:01:09

请注意 ......
著作权所有人:物泽计算机事业股份有限公司、
              MISOO对象技术顾问团队、对象导向杂志作者、等。
u本文件摘自 对象导向杂志、精通对象观念与技术等书籍著作。
u本文件仅供您的参阅,请遵守著作权法,不得做其它商业用途。


  主题:   对象(Object)基本概念

????????????  内容  ????????????
v 1. 何谓「对象导向」?
v 2. 认识与寻找对象
v 3. 对象之分类与组织
v 4. 类别之设计
v 5. 对象之行为
v 6. 讯息与运算
v 7. 类别之定义
v 8. 着手写 VB程序

    大地运转、花开花谢、及枫叶飘零 ...... 是自然界对象之行为。对象行为交互作用﹐造成多采多姿的大自然。软件的对象是自然界对象的抽象表示,软件就逼真地表达自然界的实际景象﹐于是人们心中构思的软件和眼中所见到的世界是一致的。软件是自然界实况的抽象﹗简单明了﹐能帮助人们了解和掌握真实景物。本文介绍VB的对象观念,让您轻易以VB描述身边美丽多变的世界。                           ----- 摘自 高焕堂 的文章

1. 何谓「对象导向」﹖

    在企业上常有「行销导向」及「技术导向」之名词﹐行销导向讲得更通俗一点就是行销挂帅﹐亦即行销观念为整个企业营运计划之核心。而技术挂帅就是以技术创新为公司活动之核心。同样地﹐在软件开发方面﹐传统 C语言之核心观念是「函数」(Function)﹐进而让函数之间可互相呼叫并传递数据。在 COBOL程序中﹐大部分的程序设计工作摆在 COBOL程序的程序部(Procedure Division)中﹐进而让段(Paragraph) 之间互相呼叫(Perform) 。当您看到 C程序时﹐脑海里充满着函数的影子﹔当您想到 COBOL程序时﹐心理也充满段、节等观念﹐就像我们想到或看到万里长城时﹐马上联想到它是由许多石块所构成一般。因之﹐传统的程序设计是「函数导向」(Function-Oriented) 或称为「程序导向」(Procedure-Oriented)﹐着重于计算机处理资料时的执行过程。
    后来﹐资料导向观念出现了﹐资料在经过程序的处理后会有所改变﹐这转变的途径﹐成为软件设计过程中﹐注意力的集中点﹐这称为「数据导向」(Data-Oriented) 。
    现在的「对象导向」(Object-Oriented) 观念﹐在软件开发时﹐甚至写程序时﹐对象(Object)成为脑海里的主角。当您看到程序时﹐心理充满着对象之影子和概念﹐函数和资料变成对象内之一部分﹐是配角而非主角了。程序设计之核心工作在于描述对象、组织对象、安排对象间之沟通(传递讯息)方式。就如同「人」是社会中的主要对象﹐社会是有组织的人群﹐人们之间会互相沟通、协调。
    由于软件中的对象观念和实际社会中的对象观念是一致的﹐所以 OOP观念使软件与实际世界间之距离缩短了。此为 OOP技术的重要特点之一。例如﹕函数或程序导向之核心观念──函数﹐在一般人们的心目中﹐并非熟悉之概念﹐只在数学里学到之概念而已。因而让人对软件感到陌生。而在对象导向观念中﹐实际社会之对象﹐例如﹕人、汽车、股票、磁盘驱动器、帐单、房间、学生、教室等皆为软件设计师脑海中的对象﹐也是程序中的对象。因之﹐不论是老板或程序设计师来看程序﹐他们脑海中皆充满对象之影子﹐而这些个体皆为人们生活中﹐真正活生生的东西、实在之物体或大家耳熟能详之概念﹐使得软件之使用者和设计者有一致的心灵、共同之感觉﹐这让使用者对软件更满意﹐设计师更了解使用者之需要。


2. 认识与寻找对象
    着手设计一个系统或写一个程序时﹐第一件会出现在脑海中的问题是﹕对象那么多﹐何者是跟此系统或程序有关的呢﹖例如﹕在设计一个销售系统时﹐「顾客」是一重要对象﹐产品及订单也是重要对象﹔至于原料之产地及原料之供货商虽然是明显的对象﹐但不见得与销售系统有关。反之﹐若您所设计的是采购或生产系统时﹐原料、产地及其供货商就跃然成为重要对象了。在寻找对象之过程中也会让您对所要设计的系统有更清楚之认识。
    现在就来介绍较实用之找对象方法。其中最常见的是﹐从有关文件着手。在文件里会发现下述线索﹐再进而找出对象。
(1) 人(People)──人是任何系统之重要角色﹐通常是最容易找到之对象。例如﹕公司有 5位销售员﹐各负责一个地区的任务﹐并与该区的顾客连络。从这段叙述中﹐就可发现两种对象──销售员及顾客﹐每一位销售员皆是对象﹔同样地﹐每一个顾客皆是对象。
(2) 地方(Sites) ──地点是很容易发现之对象。例如﹕您从订单上看到产品将送达之目的地、顾客之所在地。再拿旅行社行程来当例子﹐各旅行团将于不同之观光地区停留﹐各观光地点皆是对象。
(3) 事物(Things)──在可摸到或看到的实物中﹐也容易找到与系统有关之对象﹐例如﹕产品是销售系统及生产系统之明显对象﹐原料项目是生产及库存系统之重要对象。就旅馆管理系统而言﹐「房间」是重要对象。「书本」及「杂志」为图书馆或书店管理系统之明显对象。
(4) 事件(Events)──在企业界最常见之事件是「交易」﹐当事件发生时﹐我们会去记录它发生的时刻、有关金额等等。这种我们所关心的事件也常是重要之对象。值得注意的是﹐这些事件是已发生的﹐其为一项行为或动作。所以在文件中﹐常是一个句子的动词。例如﹕今天共有 3种原料已降至安全存量之下﹐所以共订购 3种原料。这每一「订购」(Ordering)事件皆是对象。就飞机场的控制系统而言﹐每次飞机「起飞」或「降落」    皆是重要对象。而「提款」及「转帐」皆为银行系统之重要对象。「挂号」及「就诊」为医疗系统之对象。
(5) 概念(Concepts)──与企业营运或机构管理有关之「构想」或各种「计划」或其它观念﹔这些无形的﹐但决定企业活动之构想﹐常是重要对象。例如﹕公司正拟定三种广告策略﹐其中每一策略就是企业行销系统之重要对象。这公司正透过 2种管道与社区居民沟通﹐这管道也是概念性之对象。
(6) 外部系统或设备(External Systems or Devices) ──  软件系统常会与其它系统沟通﹐互相交换信息。有时也由外部设备取得交易资料或把处理结果送往外部设备。这些外部系统或设备也是对象。例如﹕库存系统与采购系统会互相沟通﹐对库存系统而言﹐采购系统是对象﹔反之﹐对采购系统而言﹐库存系统则为对象。如果收款机直接把交易资料传送给销售系统﹐则收款机是此销售系统之对象。如果股票系统直接把资料传送到交易市场的电视显示屏上﹐则对股票系统而言﹐电视显示屏是对象。
(7) 组织单位(Organization Units)──企业机构之部门或单位。例如﹕在学校管理系统中﹐教务处及训导处等单位皆是对象。
(8) 结构(Structures)──有些对象会包含其它对象。所以在对象中常能找到其它对象。例如﹕在学校的组织单位──教务处﹐含有小对象如注册组及学籍股等。在汽车对象中可找到引擎、轮胎及座椅等对象。在「房屋」对象中﹐会发现到厨房、客厅、沙发等对象。

    以上介绍的是常用之寻找对象方法﹐会寻找对象之后﹐就必需将对象分门别类﹐并且了解类别间之关系﹐以便把它们组织起来。例如﹐在公司的人事结构中﹐可发现人因扮演角色之不同而分为不同种类之对象﹐如推销员、司机、经理等等。汽车可分为跑车、巴士、旅行车等不同种类之对象。如何分类(Classification)﹐是OOP 之重要观念。


3. 对象之分类与组织
3.1 类别的永恒性
    俗语说﹕物与类聚。「物」和「类」说明对象与其所属「类别」(Class) 之关系﹐相似之对象常归为一类。例如﹕一个人是对象﹐人类是由个人所构成之类别。「狗」这种动物是类别﹐我家那只哈巴狗是对象。当您获知公司有 A、B 两位推销员时﹐可得知 A、B 两者皆为对象﹔同时﹐也联想到「推销员」(Salesman)是类别﹐而 A、B 皆是此类别内之对象。
    由于类别比对象较具有永恒性﹐在设计软件的过程中﹐当您找到对象时﹐也必须掌握此对象之类别﹐如此软件自然会更具有永恒性﹐亦即软件的寿命会更长。例如﹐一个人从出生到老﹐不超过二百年﹐而「人类」则因对象生生不息而永远昌隆。在学校里﹐King老师会换工作而离开学校﹐但「老师」类别将永远存在。因之﹐个体及其所属的群体──类别﹐皆是 OOP之核心观念。善于利用类别把对象归类﹐并且组织起来﹐是对象导向软件开发的重要技术。在设计软件时﹐通常必须先决定有关的类别﹐并且弄清楚类别之间的关系。兹介绍两种最常见之类别关系﹕「父子关系」和「整体╱部分关系」。

3.2 父子类别关系
    人们从小就学习对东西分类﹐将东西分为「生物」及「无生物」﹐其中生物又分为「动物」及「植物」等。无论动物、植物或生物皆为类别(Class) 。动物是一种(a kind of) 生物﹐植物也是一种生物。此时﹐即称动物是生物的子类别(Subclass)﹐植物也是生物的子类别﹐而生物是动物及植物的父类别(Superclass)。这种父子类别关系是软件中的组织相关对象的重要方法。例如﹕汽车、马车、脚踏车皆为一种车﹔所以﹐车是父类别﹐而汽车、马车及脚踏车皆为车之子类别。
    设计软件时﹐当您知道公司今天生产 5部巴士及 5部轿车时﹐您已找到10个对象了﹐其中每一部车皆为对象。它们分别属于不同类别──巴士及轿车﹔然而﹐因巴士及轿车皆为一种(a kind of)汽车﹐所以轻易地找到其更大的类别──汽车。利用父类别──汽车把两个子类别──巴士及轿车组织起来﹐其关系可表示如下:

         
                图1  父子关系             

于是﹐在我们所设计的软件中﹐将包含这三种类别。
    日常生活中﹐父子关系是很常见的类别关系﹔经由这种关系﹐也很容易决定与软件有关的类别。例如﹕一家公司正在生产 3种鞋子──网球鞋、篮球鞋及慢跑鞋。此时我们已找到了 3种类别──网球鞋、篮球鞋及慢跑鞋。由于网球鞋及篮球鞋皆为一种球鞋﹔所以﹐进而找到父类别──球鞋。球鞋及慢跑鞋皆为一种鞋子﹐所以又找到了它们的父类别──鞋子。因之﹐得到关系如下﹕
       
                图 2  多层父子关系

    如果为这家公司设计软件﹐这 5种类别是软件中的重要类别﹐同时这种父子类别关系﹐正是软件用来组织有关对象(各双鞋子)的好方法。由于软件设计者的脑海中﹐对象的组织方法和一般管理者脑海中的分类方法是一致的﹐这能使软件更适切地满足使用者的需要﹐也提高了软件的价值。

3.3 整体╱部分关系
    上节谈过﹕对象常包含其它对象﹐从对象之结构(Structure) 能找到其它对象。例如﹕一部汽车含一个引擎及 4个轮胎。

                
                    图3  对象之整体╱部分关系

从这对象结构﹐发现到两类别──引擎及轮胎。其类别关系为﹕

         
           图4  类别之整体╱部分关系
 
    引擎是汽车的一部分(A Part Of) ﹐轮胎是汽车的一部分﹐所以汽车是「整体」(Whole) ﹐而引擎及轮胎是「部分」(Part)。
    在实际的产品结构中﹐常见整体╱部分关系。例如﹕灯泡含灯心、灯帽及玻璃球﹔书本含封面、目录及内容等部分﹔计算机系统含屏幕、键盘、主存储器及磁盘驱动器等等。在软件设计时﹐也常依照这结构来组织类别及对象。例如﹕在程序中﹐就可定义汽车、引擎及轮胎三种类别。
    请注意﹕上述关系﹐其整体与部分间有共生共灭之密切关系。例如﹕一个灯泡破了或者烧坏了﹐通常整个灯泡﹐包括其内部的灯帽、灯心、玻璃球一齐都被丢弃了。于是﹐在软件系统中﹐这些部分对象(如灯心)皆会随着整体对象(灯泡)之消失而一起消失了。反之﹐司机对汽车而言是不可或缺的﹐但没有人认为司机是汽车的组件﹐原因是一部汽车报销了﹐司机可还存在呢﹗然而﹐司机仍是汽车的一部分﹐因为在空间上﹐汽车对象中﹐仍包含了司机对象。因之﹐汽车与司机之间仍是整体╱部分关系。

                   
                  
    这种关系也很常见﹔例如﹕笔心是自动铅笔的一部分﹐但笔心并不与铅笔共生共灭。同样地﹐干电池是手电筒的一部分﹐但两种对象并非共生共灭。这种整个╱部分的关系﹐也让我们很容易找出相关的对象和类别﹐同时也能利用这种关系来把软件中的对象组织起来。
    上述两种关系是实体物之间的整体╱部分关系。然而在概念性的对象或类别之间也常见整体╱部分关系﹔这些经常是企业活动或计划之概念性对象。例如﹕在旅行社中﹐旅行团的行程常分为数段﹐每一段行程是总行程的一部分。
                   
                       

    由于企业营运计划常为企业管理的核心工作﹐而计划或活动经常由数个更小的计划或活动所构成。所以在 OOP技术中﹐常用整体╱部分关系来表示这种概念性类别之关系。
    再从企业机构的组织来看﹐一个组织(Organization)经常有其成员(Member)﹐这组织与成员之间也是整体╱部分关系。例如﹕一个公司分为数个部门﹐每一部门又数个职员﹐则部门是一组织﹐而职员是该组织的成员﹔亦即﹐部门与职员是整体╱部分关系。

                     

    由于公司包含数个部门﹐所以公司与部门之间也是整体╱部分关系。此外﹐职员也是公司的成员﹐所以公司与职员之间也是整体╱部分关系。

         

    由于组织与成员之间关系是府拾可得之整体╱部分关系﹐极为常见﹔因之﹐经由这种关系可找到有关之对象及类别。在设计软件时﹐可别忘了掌握此重要关系。事实上﹐软件也应表达出这种关系﹐才能使得软件中的对象结构与实物世界中的对象结构一致。
    在对象导向程序设计之过程中﹐通常先于程序中定义有关之类别﹐再利用已定义之类别来诞生对象来与实物世界中的对象相对应﹐以便让软件更贴切地表示实际的系统之需求。因之﹐在找到对象之后(其方法如上节所述)﹐就确定它们的所属类别。确定了这些基本的类别之后﹐就经由「父子关系」找出有关的父类别或子类别﹐并且确定这些类别之间的关系。再接下来﹐就是利用对象之间的整体╱部分关系﹐来找出相关的对象﹐并进而找出相关之类别﹐并且确定这些类别之间的关系。
    本书里﹐将以 VB.net语言来说明如何运用类别来组织对象﹐并像建造万里长城般有系统地将对象组织起来﹐形成既可靠又好用的现代软件。

 

4. 类别之设计

    对象导向程序设计(Object-Oriented Programming 简称 OOP)之观念能大量简化计算机软件之复杂度﹐让人们更容易发展及维护软件。OOP 的两个最基本观念是﹕类别(Class) 及对象(Object)。俗语常说﹕「见树不见林」或「见林不见树」﹐其中的林就是「类别」﹐而林之组成元素──树就是「对象」了。依传统之程序写法﹐主要之程序设计工作是在于设计指令、叙述及函数等等﹔然而在OOP 之新观念中﹐写程序的主要工作在于──设计类别﹐亦即「造林」之工作。设计各式各样之类别后﹐再做「雕材」的工作﹐对树木做各种运用﹔亦即﹐使用类别之对象﹐而产生有价值之信息。请看如何设计一类别叫──Tree(树林)﹐其格式为﹕

                       Class Tree
                            品种
                            年龄
                            高度
                       End Class

    此告诉计算机﹕对于树林中的树﹐将记录其 3种特性(Attribute) ──品
种、年龄及高度。例如有一棵树﹐其特性为﹕

                       品种﹕peach
                       年龄﹕8 年
                       高度﹕2.1 尺

这是树林中的一棵树﹐在计算机的Tree类别中﹐就必须有一「对象」(Object)和它对应并且储存它的特性。至于如何产生Tree类别之个体呢﹖其指令为﹕

   &n

[1] [2] [3] [4]  下一页


[系统软件]14.5.10.1 Object creation expressions  [Delphi程序]The Delphi Object Model (PART III)
[Delphi程序]The Delphi Object Model (PART II)  [Delphi程序]The Delphi Object Model (PART I)
[Delphi程序]Object Pascal:从对象指针谈起  [Delphi程序]Object Pascal Style Guide
[Delphi程序]Object TreeView简要说明  [Delphi程序]Object Pascal中String类型的内幕探讨
[Delphi程序]delphi学习笔记(2)-object pascal语言的语句  [Delphi程序]delphi学习笔记(1)-object pascal语言的数据类…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台