下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第6章 面向对象的基础类,第6章 面向对象的基础类,6.1 类和对象的基本概念 6.2 自定义类 6.3 类的其他概念 6.4 面向对象的高级概念,类是对客观事物本质特征的抽象和概括,所有具有这些同类特征和行为的实体的抽象。 抽象 封装 代码重用,6.1 AS3类和对象的基本概念,6.1.1 AS3类的架构 顶级类 fl包:组件类 flash包:常用的MovieClip、Sprite等类,6.2 自定义类,package public class Hello public var helloString:String=World; pulbic function Hello() public
2、 function sayHello:void trace(“Hello,”+helloString+”!”); ,一个简单的类,类的成员,AS3.0中类(Class)的构成: 包路径和类名称。 构造函数。 属性:包括实例属性和静态属性。 方法:包括实例方法和静态方法。 类的访问控制与其他语言有所不同,类和包块,所有的类都用package定义所在的包,class定义的类体放在package中。 类的名称:大写字母开头,包名用小写字母 定义包块使用package关键字,其用法格式如: package 包路径 /类体 用法示例代码: package com.lzxt.display /类体 ,类体
3、中class的各构成部分的排放顺序: package 包路径 import 相应的包 public class 类名 /静态属性 /静态方法 /实例属性 /构造函数 /实例方法 ,包的导入,使用某一个类文件,需要先导入这个类文件所在的包,即要先指明类所在的位置。 包的导入有三种情形: 明确知道要导入的包,直接导入单个包 例如要创建一个绘制对象,那么只需导入Display包中的Shape包即可。代码如下所示。 import flash.display.Shape;,不知道具体要导入的类,使用通配符导入整个包 例如需要一个文本的控制类,但是不知道该类的具体名称,可以使用“*”通配符进行匹配,一次导
4、入包内的所有类。具体使用代码如下所示。 import flash.text.* 要使用同一包内的类文件,则无需导入 如果现在有多个类位于同一个目录下,则这些类在互相使用的时候,不需要导入,直接使用即可。,声明和访问类的属性,实例属性和静态属性。 实例属性必须通过创建该类的实例才能访问, 静态属性则不需要创建类实例就能够访问。 声明实例属性的语法格式: var 属性名称:属性类型; var 属性名称:属性类型=值; public var 属性名称:属性类型=值;,静态属性和静态方法,不依赖实例而独立存在,不用创建类的实例也可以访问该类的静态属性和方法; 静态属性:存储所有对象共同的状态,和任何实
5、例都没有关联。 静态方法:独立于所有实例的 只为每个类创建一次,在类被调用时创建。,Class种类:动态类和密封类,是否可以动态添加实例属性或方法 动态类:实例可在运行时动态添加实例属性, 密封类:在运行时不能动态添加属性或方法 默认声明的类为静态类,动态类在class关键字加 dynamic 关键字; 动态类灵活、编译宽松,不利于代码的维护。 注意:AS3.0中的 for.in循环, for each.in循环只能遍历动态类对象的动态属性,含有多个类的AS3类文件的标准例子,每个.as文件可放置多个Class,但只有与文件名相同的Class才对外部可见,即: package关键字后的花括号类
6、,必须且只能定义一个Class。 在package包中定义的Class,必须与类文件名相同; 在package包括号外还可以定义其它类,叫包外类,不可与文件同名,只能被当前as文件中的成员类访问。,类的应用,系统内置类 自定义类 嵌入资源类 元件链接类 文档类,Procedure-Oriented Programming 从实现过程的角度来编程 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用时依次调用 编程思路: 设计一组函数即解决问题的算法 针对问题要处理的数据特征定义数据结构 程序=算法+数据结构 自顶向下的编程-函数或过程,1. 面向对象编程思想,16,Object-
7、Oriented Programming 从物体的角度来编程 把程序看成一个个具有不同功能的物体在协同工作 实物高度抽象化,抽象为类 程序=对象+对象+对象+,17,2. “我吃饭” 事件分析,POP: 首先一个函数(或者说是动作)-吃 两个数据成员:我和饭。 在一个函数体里面实现这个算法。 OOP: 有两种数据,人和饭,即两个对象,进而抽象为两个类,然后人有一个方法:吃。 产生人类的对象-我,然后即可实现这个算法。,18,面向过程代码: 我,饭;/ 完成吃这个函数的两个变量 吃a,b;/ 定义一个函数来实现吃这个过程或者说是动作 吃我,饭;/或者是 吃饭,我;主要取决于函数内部的实现是a吃b
8、,还是b吃a ,19,面向对象代码: 我 吃(); / 产生一个类我,实现一个方法:吃 饭 ; / 产生另一个类,饭 我.吃(饭);/ 对象我调用方法吃,对饭进行操作,20,事件改为:我吃面,牛吃草,然后还会反刍。,动物 吃();/ 构造一个动物类,可以实现一个方法:吃 牛 extends 动物 吃(); 反刍; / 构造新的类牛继承自动物类并且覆写了动物类的方法吃,还有一个属于自己的方法,反刍。 我extends 动物 吃(); / 构造一个新的类我继承自动物类并且覆写了动物类的方法吃,牛和我的吃的方法实现了多态 面 /这里没有将面和草构造在一个食物类里,这样是可以的,但是在这里 意义不大,
9、相反还会增加代码量 草 我.吃(面); /直接创建一个我的类型的变量调用吃这个方法实现对面这个类类型 的一个变量的操作 牛.吃(草); /直接创建一个我的类型的变量调用吃这个方法实现对面这个类类型 的一个变量的操作 牛.反刍(); /牛类类型的变量实现了一个空的方法反刍。,21,面向过程的设计思路,分析问题的步骤: 开始游戏 黑子先走 绘制画面 判断输赢 轮到白子 绘制画面 判断输赢 返回步骤2 输出最后结果 把上面每个步骤用不同的方法来实现。,3. 五子棋实例,22,面向对象的设计思路,分析问题的步骤: 黑白双方,两方的行为是一模一样; 负责接受用户输入,并告知(棋盘对象)棋子布局的变化 棋
10、盘系统,负责绘制画面; 棋盘对象接收到棋子的变化负责在屏幕上面显示出这种变化,同时利用(规则系统)对棋局进行判定。 规则系统,负责判定诸如犯规、输赢等。,23,4. OOP的优点,以功能划分问题,而不是步骤。 POP:绘制棋局的行为分散在多个步骤,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。 OOP:绘图只可能在棋盘对象中出现,从而保证绘图的统一。 功能上的统一保证设计的可扩展性 比如加入悔棋的功能分别如何修改?,POP:从输入、判断到显示一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。 OOP:只用改动棋盘对象即可,棋盘系统保存了黑白双方的棋谱,
11、简单回溯即可,显示和规则判断则不用管,对象功能的调用顺序无需变化。,24,五子棋改为围棋游戏,POP:五子棋规则分布在程序的每一步,要改动还不如重写。 OOP:只用改动规则对象即可,下棋的大致步骤从面向对象的角度来看没有任何变化。 使用对象不能保证程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,很难有良好的可移植性和可扩展性。,25,5. 实例讨论,计算三角形周长和面积 盖房子 洗衣服 ,26,6.4 面向对象的高级概念,继承 接口,6.4.1 继承,在已有类的基础上创建一个新类 新创建的类:子类 被继承的类:父类或基类、超类。 语法格式: Class 子类名
12、extends 基类名 对基类属性和方法的扩展,子类的对象既可以访问自身属性和方法,也可以访问被允许的基类中的成员。 实现代码重用的基本形式。 形成类与类之间的层次关系。,覆盖,子类在继承基类时,重新定义基类中的成员。唯一可覆盖的成员类型是用function关键字声明的方法。 使用override关键字 参看教材P227实例,6.4.2 接口,接口是一组方法的集合,这些方法只包括声明,没有具体的实现代码。 接口不可以被实例化,对于定义好的接口,必须通过类来具体实现其中声明的方法。 使用interface,和类定义类似,没有属性,也没有实现方法的具体代码。 只能使用public和internal访问控制,接口中的方法声明不能包含任何访问
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预制楼梯缝隙密封工艺
- 河南省商丘市虞城县2027届化学九上期末教学质量检测模拟试题含解析
- 2027届广东省广州市九年级物理第一学期期末质量检测模拟试题含解析
- 2027届湖北大悟书生学校化学九年级第一学期期中学业水平测试试题含解析
- 熔解温度测试试题及深度答案解析
- 县医院工作计划(2篇)
- (新)房地产开发公司股权转让合同实务
- 2027届湖北省竹溪县九年级化学第一学期期中质量跟踪监视试题含解析
- 2027届安徽省安庆四中学九上化学期中质量检测试题含解析
- 2027届大同市重点中学化学九年级第一学期期末监测模拟试题含解析
- 2026年公司中秋、国庆安全应急预案
- 成人高尿酸血症与痛风食养指南(2024年版)
- 2026年秋新教材北师大版初中数学七年级第一学期教学计划及进度表
- 2026年8月昆明市第二人民医院融城老年病医院招聘合同制工作人员及见习人员7人考试参考题库及答案详解
- 北师大版二年级数学上册教材分析
- 2026年四川省凉山州中考数学真题试卷(含解析)
- 2026年物业管理师(物业管理综合能力)真题试卷(含答案)
- 2026苏教版五年级数学上册第一单元第2课《图形的旋转》课件
- 2026年山东省泰安市中考生物试卷附答案
- 2026年招聘医生心理测试题及答案
- 2026届小升初数学分班考试模拟试卷(含答案详解与评分标准)
评论
0/150
提交评论