第6章-面向对象的基础--类详解

上传人:陈** 文档编号:250133195 上传时间:2024-11-01 格式:PPT 页数:32 大小:631KB
返回 下载 相关 举报
第6章-面向对象的基础--类详解_第1页
第1页 / 共32页
第6章-面向对象的基础--类详解_第2页
第2页 / 共32页
第6章-面向对象的基础--类详解_第3页
第3页 / 共32页
点击查看更多>>
资源描述
,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,南开大学滨海学院,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,南开大学滨海学院,*,第,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,function sayHello:void,trace(“Hello,”+helloString+”!”);,一个简单的类,类的成员,AS3.0,中类(,Class,)的构成:,包路径和类名称。,构造函数。,属性:包括,实例属性,和,静态属性,。,方法:包括,实例方法,和,静态方法,。,类的访问控制与其他语言有所不同,类和包块,所有的类都用,package,定义所在的包,,class,定义的类体放在,package,中。,类的名称:,大写字母开头,包名用小写字母,定义包块使用,package,关键字,其用法格式如:,package,包路径,/,类体,用法示例代码:,package com.lzxt.display,/,类体,类体中,class,的各构成部分的排放顺序:,package,包路径,import,相应的包,public class,类名,/,静态属性,/,静态方法,/,实例属性,/,构造函数,/,实例方法,包的导入,使用某一个类文件,需要先导入这个类文件所在的包,即要先指明类所在的位置。,包的导入有,三种,情形:,明确知道要导入的包,直接导入单个包,例如要创建一个绘制对象,那么只需导入,Display,包中的,Shape,包即可。代码如下所示。,import flash.display.Shape;,不知道具体要导入的类,使用通配符导入整个包,例如需要一个文本的控制类,但是不知道该类的具体名称,可以使用“*”通配符进行匹配,一次导入包内的所有类。具体使用代码如下所示。,import flash.text.*,要使用同一包内的类文件,则无需导入,如果现在有多个类位于同一个目录下,则这些类在互相使用的时候,不需要导入,直接使用即可。,声明和访问类的,属性,实例属性和静态属性。,实例属性必须通过创建,该类的实例,才能访问,,静态属性则不需要创建类实例就能够访问。,声明实例属性的语法格式:,var,属性名称,:,属性类型;,var,属性名称,:,属性类型,=,值;,public var,属性名称,:,属性类型,=,值;,静态属性和静态方法,不依赖实例而独立存在,不用创建类的实例也可以访问该类的静态属性和方法;,静态属性:存储所有对象共同的状态,和任何实例都没有关联。,静态方法:独立于所有实例的,只为每个类创建一次,在类被调用时创建。,Class,种类:动态类和密封类,是否可以动态添加实例属性或方法,动态类:实例可在运行时动态添加实例属性,,密封类:在运行时不能动态添加属性或方法,默认声明的类为静态类,动态类在,class,关键字加,dynamic,关键字;,动态类灵活、编译宽松,不利于代码的维护。,注意:,AS3.0,中的,for.in,循环,,for each.in,循环只能遍历动态类对象的动态属性,含有多个类的,AS3,类文件的标准例子,每个,.as,文件可放置多个,Class,,但只有与文件名相同的,Class,才对外部可见,即:,package,关键字后的花括号类,必须且只能定义一个,Class,。,在,package,包中定义的,Class,,必须与类文件名相同;,在,package,包括号外还可以定义其它类,叫包外类,不可与文件同名,只能被当前,as,文件中的成员类访问。,类的应用,系统内置类,自定义类,嵌入资源类,元件链接类,文档类,Procedure,-Oriented Programming,从实现过程的角度来编程,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用时依次调用,编程思路:,设计一组函数即解决问题的算法,针对问题要处理的数据特征定义数据结构,程序,=,算法,+,数据结构,自顶向下的编程,-,函数或过程,1.,面向对象编程思想,16,Object,-Oriented Programming,从物体的角度来编程,把程序看成一个个具有不同功能的物体在协同工作,实物高度抽象化,,抽象为类,程序,=,对象,+,对象,+,对象,+,17,2.,“我吃饭”事件分析,POP,:,首先一个函数(或者说是动作),-,吃,两个数据成员:我和饭。,在一个函数体里面实现这个算法。,OOP,:,有两种数据,人和饭,即两个对象,进而抽象为两个类,然后人有一个方法:吃。,产生人类的对象,-,我,然后即可实现这个算法。,18,面向过程代码:,我,饭;,/,完成吃这个函数的两个变量,吃,a,,,b,;,/,定义一个函数来实现吃这个过程或者说是动作,吃,我,饭,;,/,或者是 吃,饭,我,;主要取决于函数内部的实现是,a,吃,b,,还是,b,吃,a,19,面向对象代码:,我,吃(),;,/,产生一个类我,实现一个方法:吃,饭,;,/,产生另一个类,饭,我,.,吃(饭),;,/,对象我调用方法吃,对饭进行操作,20,事件改为:我吃面,牛吃草,然后还会反刍。,动物,吃();,;,/,构造一个动物类,可以实现一个方法:吃,牛,extends,动物,吃();,反刍;,/,构造新的类牛继承自动物类并且覆写了动物类的方法吃,还有一个属于自己的方法,反刍。,我,extends,动物,吃();,/,构造一个新的类我继承自动物类并且覆写了动物类的方法吃,牛和我的吃的方法实现了多态,面,/,这里没有将面和草构造在一个食物类里,这样是可以的,但是在这里,意义不大,相反还会增加代码量,草,我,.,吃(面);,/,直接创建一个我的类型的变量调用吃这个方法实现对面这个类类型,的一个变量的操作,牛,.,吃(草);,/,直接创建一个我的类型的变量调用吃这个方法实现对面这个类类型,的一个变量的操作,牛,.,反刍();,/,牛类类型的变量实现了一个空的方法反刍。,21,面向过程的设计思路,分析问题的步骤:,开始游戏,黑子先走,绘制画面,判断输赢,轮到白子,绘制画面,判断输赢,返回步骤,2,输出最后结果,把上面每个步骤用不同的方法来实现。,3.,五子棋实例,22,面向对象的设计思路,分析问题的步骤:,黑白双方,两方的行为是一模一样,;,负责接受用户输入,并告知(棋盘对象)棋子布局的变化,棋盘系统,负责绘制画面,;,棋盘对象接收到棋子的变化负责在屏幕上面显示出这种变化,同时利用(规则系统)对棋局进行判定。,规则系统,负责判定诸如犯规、输赢等。,23,4.OOP,的优点,以功能划分问题,而不是步骤。,POP,:绘制棋局的行为分散在多个步骤,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。,OOP,:绘图只可能在棋盘对象中出现,从而保证绘图的统一。,功能上的统一保证设计的可扩展性,比如加入悔棋的功能分别如何修改?,POP,:,从输入、判断到显示一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。,OOP,:,只用改动棋盘对象即可,棋盘系统保存了黑白双方的棋谱,简单回溯即可,显示和规则判断则不用管,对象功能的调用顺序无需变化。,24,五子棋改为围棋游戏,POP,:五子棋规则分布在程序的每一步,要改动还不如重写。,OOP,:只用改动规则对象即可,下棋的大致步骤从面向对象的角度来看没有任何变化。,使用对象不能保证程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,很难有良好的可移植性和可扩展性。,25,5.,实例讨论,计算三角形周长和面积,盖房子,洗衣服,26,6.4,面向对象的高级概念,继承,接口,6.4.1,继承,在已有类的基础上创建一个新类,新创建的类:子类,被继承的类:父类或基类、超类。,语法格式:,Class,子类名,extends,基类名,对基类属性和方法的扩展,子类的对象既可以访问自身属性和方法,也可以访问被允许的基类中的成员。,实现代码重用的基本形式。,形成类与类之间的层次关系。,覆盖,子类在继承基类时,重新定义基类中的成员。唯一可覆盖的成员类型是用,function,关键字声明的方法。,使用,override,关键字,参看教材,P227,实例,6.4.2,接口,接口是一组方法的集合,这些方法只包括声明,没有具体的实现代码。,接口不可以被实例化,对于定义好的接口,必须通过类来具体实现其中声明的方法。,使用,interface,,和类定义类似,没有属性,也没有实现方法的具体代码。,只能使用,public,和,internal,访问控制,接口中的方法声明不能包含任何访问控制符。,访问控制符,interface,接口名,方法名(参数列表):返回值类型,接口名 一般以,I,开头。,若用类实现接口中的方法,需要在定义类时使用,implements,关键字,只能使用,public,访问控制符。,类访问属性,class,类名,implements,接口名,/,定义属性,public function,接口方法名,(,参数列表):返回值类型;,/,实现所有接口中的方法。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!