您的位置: 首页 > 技术文档 > 多媒体制作 > 了解在Flash中的编程工作
实现2004中Media组件多首mp3连放 回到列表 在List组件中使用渲染器
 了解在Flash中的编程工作

作者:陈冰 时间: 2004-07-19 文档类型:原创 来自:蓝色理想

第 1 页 像软件设计师那样思考问题
第 2 页 面向对象的软件开发中的重要概念
第 3 页 好的编程风格
第 4 页 ActionScript术语

18.2 面向对象的软件开发中的重要概念

  在第四章中我已经简单的介绍了什么是面向对象的软件开发,你应该还记得那个以“人”作为对象的例子,以及当路遇恶狗而被恶狗撵这一事件发生时,他可以调用“撒腿就跑”这个方法来作为对这个事件的响应。
 
  但不管怎么说,我不想因为这些例子而使你轻视了面向对象的软件开发。事实上,面向对象含义深远,涉及许多重要的概念,只有充分理解了这些概念的含义,你才算真正理解了什么叫面向对象。很多概念你都应该知道,但限于篇幅,本节中我将讲解其中最重要的九个。
  面向对象的软件开发中九个最基本的概念:类、对象、属性、方法、抽象、封装、继承、多态,以及事件。

18.2.1 类和对象

  类是对象的软件抽象,是创建对象的模板。例如,如果一个人被看作一个对象的话,则人这个物种就可以被看作一个类。类定义描述了包括数据和功能在内的结构,对象由其创建。一个类表示一组相似的对象。对象是类的实例。

  为什么需要类,想象这样一个情况,假如我们要编写一个Flash游戏,里面要有一些能自主活动的小人,这些小人都有相同的体貌特征和活动能力,那么,若我们要为每个小人编写程序的话,则工作量毫无疑问是巨大和重复的。在这种情况下,我们就应该创建一个“小人”类,以后每当需要一个新的小人时就从“小人”类生成一个小人即可。

  话说到这里,你一定想到了元件和实例的关系。没错,类和对象的关系与元件和实例的关系一样,因为元件实际上就是Flash的内建类。

18.2.2 属性和方法

  属性是数据,而方法是函数。属性是类知道的事情,而方法是类完成的事情。属性和方法都是类的职责。面向对象的软件开发是基于这样的概念:系统应由对象来创建,对象拥有数据和功能。属性定义数据,而方法定义功能。

  显然,在面向对象的开发中,最重要的工作就是定义类。而定义类时,就必须定义它的属性和方法。属性的定义应该是直接明了的,需要定义它的名称和数据类型。方法的定义就是创建一个函数的过程,根据需要,你可以创建出能够接受参数且能够返回值的方法。

18.2.3 抽象

  世界非常复杂,为了处理它的复杂性,在软件设计中,当需要对事物建立数学模型时,我们有必要对事物进行泛化或抽象。还是以人作为对象,从招聘的角度看,我们需要知道这个人的姓名、性别、年龄、教育背景、工作经历,联系方式,以及性格特点;而从相亲的角度看,则需要知道这个人的年龄、身高、外貌、教育背景、家庭背景,甚至生辰八字。还是同一个人,只是对他(或她)进行了不同的抽象而已,对一个事物进行怎样的抽象将依据你要设计的程序而定。

  抽象是个分析的过程,是在事物周围绘制出一个清晰的框架的过程。抽象应该包含应用程序感兴趣的功能、属性、方法,而将其他因素忽略。这就是为什么招聘的抽象包含教育背景和工作经历,但不会包含生辰八字的原因。抽象的过程,就是定义类知道和要完成的事情的过程。

18.2.4 封装

  尽管抽象告诉我们,对于招聘,我们应该存储应聘者的教育背景和工作经历,但它没有告诉我们该怎样完成这些事情。封装解决了如何为系统功能建模的问题。在面向对象的世界中,我们要把系统建模成类,类也要建模为属性和方法。设计类将如何完成这些事情的过程就被称为封装。

  封装描述了如何在系统中划分功能的问题。我们并不需要知道对象内部是怎样实现的。封装暗示着我们能够以任何方式构建系统,如果需要的话,还可以在日后再次修改其内部的结构,只要系统中不同功能组件之间的接口没有发生变化,那么对系统中一个功能部分的改变不会对系统的其他功能部分产生影响。

  封装是把事物周围的那个框架涂黑的过程。你可以定义任何想要定义的东西,但你并不需要告知外界你的做法。例如,当你到银行存取现金的时候,你并不需要知道银行的数据中心是如何使用大型机、小型机和PC机来记录你的账户信息的,它们使用着怎样的数据库和操作系统,也根本无关紧要,因为它们已经把账户服务的功能封装起来了。你只需走到柜台前,把存折递给银行的工作人员既可。通过隐藏起实现账户功能的细节,银行能够在任何时候自由改变功能实现,而不用费事得更换每一个用户的存折。

  为了让应用程序容易维护和增加安全性及健壮性,需要限制对类的属性和方法的访问。基本思想如下:如果一个类想获取另一个类的信息,必需先征得同意,而不是直接拿来就用。考虑一下,在现实世界中其实也是按照这种方法工作的。如果你想了解其他人的姓名,你该怎么做?是直接询问这个人他的姓名呢,还是偷走他的钱包看看他的身份证呢?

18.2.5 继承

  不同的类之间经常会存在相似性。两个以上的类也会经常共享相同的属性和/或相同的方法。因为我们并不想重复编写代码,因此我们就要利用这种相似机制。继承就是这种机制,它使你可以很容易的重用现有的数据和代码。

  例如,学生都有姓名、地址、手机,也都能快跑。同时,老师也都有这些东西。毫无疑问,我们可以开发有关学生和老师的类,让它们一起运行。实际上,仅需要先开发Student类,一旦它运行起来了,制作一份拷贝,就叫Teacher类,并对其进行一些适当的修改即可。这样做很容易,但并不完美。如果Student类中的源代码出现错误将会怎样?你将不得不在两个地方改正错误。这将是索然无趣的工作。如果仅有一份代码拷贝用于开发和维护,这样不是更好吗?

  这就是继承的思想。使用继承,就可以定义一个类来封装学生和老师之间的相似性。新的类将有属性name、address、mobileTelephone,以及方法run。我们可以把这个类命名为Person。

  一旦定义了Person类,就可以从它继承出Student和Teacher类。我们称Person是Student和Teacher类的超类,而Student和Teacher类则是Person类的子类。任何超类知道和完成的事情,子类也知道。因此,既然Person类遇到恶狗时能撒腿就跑,Student和Teacher类也能。

18.2.6 多态

  让我们考虑一下这个例子。你很爱你的女友,你对她说“亲爱的,我爱你”,你的女友热情的拥抱你,你还得到了一个吻,你觉得这很不错。然后,你来到了大街上,看到一位很有气质的美女,你也用跟女友打招呼的方式对这位美女说“亲爱的,我爱你”,你将立刻得到有关你的神经和品德方面的一些建议。随后,你又来到医院,对一老中医说“亲爱的,我爱你”,老中医将毫不犹豫的拉过你的手腕,开始为你把脉。你心想,无论何时当我遭遇这些对象并说“亲爱的,我爱你”时,这种情况肯定就会发生—这就是多态。

  多态使得对象可以在事先不知道其他对象的类型时就与其他对象协作。
  从这次经历中你可以学到几个有意思的经验:

  第一,多态阻碍了你与其他对象之间的交互。你并不区别其他对象的类型,你以同样的方式对待他们。你的想法是其他对象都是人。多态是允许这种情况发生的一个概念。

  第二,不同的对象以他们自己的方式作出不同的响应。你的女友拥抱你并给你吻;陌生的美女给你有关神经和品德方面的建议;而老中医则给你把脉。同一消息到达不同的对象,每一个完成的事情都是不同的。实际上,从各个对象的角度看,他们做了应该做的事情。

  第三,多态可以实现一致而恰当的方法名。尽管每种对象都以适当的方式响应了“亲爱的,我爱你”,但还是要实现方法的不同版本。

  多态性主要包括两个方面:
  运算符的重载:同一运算符可以作用在多种对象类型上。
  函数名重载:相同的函数名可以作用在不同的对象类型上,并产生不同的效果。

18.2.7 事

  面向对象的软件的运行是随着一个个事件的发生来进行的,这被称为“事件驱动”。例如,当你欣赏Flash动画时,实际上是正在发生一个个“进入帧”事件,在这些事件中,Flash Player会呈递每帧中的内容,所以你就能看到画面。

  同样的,当你点击按钮时,一个按钮事件就发生了,该按钮事件中的脚本就被执行,这些脚本的作用可能是把你带到特定的场景、特定的帧,或是链接到某个URL。

  在面向对象的程序设计中,整个软件都是以事件驱动的,这意味着假如没有任何事件发生,你的程序将寸步难行,不过好在程序中总是有某些事情发生的,即使所有其他的事件都不发生,也会有时间流逝这一事件在时刻发生着。

  在本书后面章中的实际开发中,你将看到上述所有这些面向对象的概念的实际运用。

出处:蓝色理想
责任编辑:qhwa

上一页 像软件设计师那样思考问题 下一页 好的编程风格

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash 酷站猎手
中文ID3乱码问题MX解决方案
用AS2解决中文ID3的乱码
Flash常用效果-移动模糊效果
Flash MX 2005 制作环境预览
作者文章
了解在Flash中的编程工作
制作一个全功能的FLV播放器
Flash 入门到精通巨著-本站推荐
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/41个记录/页 转到 页 共4个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2