FLASH第8章面向对象的程序设计
- 格式:docx
- 大小:987.71 KB
- 文档页数:28
《面向对象程序设计》教案一、教案简介本教案旨在帮助学生掌握面向对象程序设计的基本概念、原理和方法,培养学生的编程能力和软件开发思维。
通过本课程的学习,学生将能够熟练运用面向对象的编程语言,如Java或C++,进行软件开发和设计。
二、教学目标1. 了解面向对象程序设计的基本概念,如类、对象、封装、继承和多态等。
2. 掌握面向对象程序设计的基本原则,如单一职责原则、开闭原则、里氏替换原则等。
3. 学会使用面向对象的编程语言进行程序设计和开发。
4. 培养学生的软件开发思维和团队协作能力。
三、教学内容1. 面向对象程序设计的基本概念1.1 类与对象1.2 封装1.3 继承1.4 多态2. 面向对象程序设计的基本原则2.1 单一职责原则2.2 开闭原则2.3 里氏替换原则2.4 接口隔离原则2.5 依赖倒置原则3. 面向对象的编程语言3.1 Java3.2 C++4. 面向对象的设计模式4.1 创建型模式4.2 结构型模式4.3 行为型模式四、教学方法1. 讲授法:讲解面向对象程序设计的基本概念、原理和编程方法。
2. 案例分析法:分析实际项目中的面向对象设计案例,让学生理解并掌握面向对象的设计思想。
3. 实践操作法:让学生通过编写代码,亲身体验面向对象程序设计的流程和方法。
4. 小组讨论法:分组进行讨论,培养学生的团队协作能力和解决问题的能力。
五、教学评价1. 课堂参与度:评估学生在课堂上的发言和提问情况,了解学生的学习兴趣和积极性。
2. 课后作业:布置相关的编程作业,检查学生对面向对象程序设计知识的掌握程度。
3. 项目实践:评估学生在团队项目中的表现,包括代码质量、设计思路和团队协作能力。
4. 期末考试:全面测试学生对面向对象程序设计知识的掌握情况。
六、教学资源1. 教材:推荐《Java面向对象程序设计》、《C++ Primer》等经典教材。
2. 在线资源:提供相关的在线教程、视频课程和编程练习平台,如慕课网、Coursera、LeetCode等。
面向对象的程序设计教案一、教学目标1. 理解面向对象程序设计的基本概念,如类、对象、封装、继承和多态。
2. 掌握使用面向对象的方法分析问题、设计解决方案并实现。
3. 学会使用面向对象编程语言(如Java、C++等)进行程序设计。
二、教学内容1. 面向对象程序设计概述介绍面向对象程序设计的发展历程、优点及应用领域。
2. 类与对象讲解类的定义、属性、方法;对象的概念、创建方式及使用。
3. 封装与信息隐藏解释封装的原理、作用;演示如何通过访问修饰符实现信息隐藏。
4. 继承与多态阐述继承的概念、分类;展示多态的实现方法和应用场景。
5. 面向对象设计原则介绍单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。
三、教学方法1. 讲授法:讲解基本概念、原理和方法。
2. 案例分析法:通过实际案例演示面向对象程序设计的应用。
3. 动手实践法:让学生编写代码,巩固所学知识。
4. 小组讨论法:分组讨论问题,培养团队协作能力。
四、教学环境1. 教室环境:投影仪、计算机、网络。
2. 编程工具:集成开发环境(IDE),如Eclipse、Visual Studio等。
3. 编程语言:选择一种面向对象编程语言,如Java、C++等。
五、教学评价1. 课堂表现:观察学生在课堂上的参与程度、提问回答情况等。
2. 课后作业:检查学生完成作业的质量、代码规范性和正确性。
3. 项目实践:评估学生在团队项目中的贡献、解决问题能力和编程技能。
4. 期末考试:考查学生对面向对象程序设计知识的掌握程度。
六、教学计划1. 第一周:面向对象程序设计概述2. 第二周:类与对象3. 第三周:封装与信息隐藏4. 第四周:继承与多态5. 第五周:面向对象设计原则七、教学资源1. 教材:推荐《Head First 面向对象编程》、《大话数据结构》等。
2. 在线资源:开源中国、CSDN、Stack Overflow 等。
3. 教学视频:网易云课堂、慕课网等平台的面向对象程序设计课程。
《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。
本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。
一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。
2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。
封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。
3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。
二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。
类用来创建对象的模板,包含数据成员和成员函数。
2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。
通过类实例化,可以创建多个对象来表示真实世界的实体。
3. 类的成员:类包含数据成员和成员函数。
数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。
三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。
继承可以实现代码的复用,并且可以建立类之间的关系。
2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。
多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。
四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。
面向对象程序设计思想面向对象程序设计(Object-Oriented Programming,简称OOP)是一种以对象为中心的编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的运行。
面向对象程序设计的核心思想包括封装、继承和多态。
封装封装是面向对象程序设计中最基本的概念之一。
它指的是将数据(属性)和操作数据的方法(行为)组合在一起,形成一个对象。
封装的目的是隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的实现细节,只需要通过接口与对象进行交互。
例如,在一个银行系统中,我们可以创建一个`Account`类,该类封装了账户的基本信息(如账号、余额)和对账户的操作(如存款、取款)。
用户在使用`Account`类时,只需要调用相应的方法,而不需要关心这些方法是如何实现的。
继承继承是面向对象程序设计中另一个重要的概念。
它允许一个类(子类)继承另一个类(父类)的属性和方法。
通过继承,子类可以扩展或修改父类的行为,而不需要重新编写代码。
继承支持代码的复用,使得程序设计更加简洁和高效。
例如,假设我们有一个`Animal`类,它定义了所有动物共有的属性和方法。
我们可以创建一个`Dog`类,它继承自`Animal`类。
`Dog`类将继承`Animal`类的所有属性和方法,并且可以添加一些特有的属性和方法,如`bark`。
多态多态是面向对象程序设计中的一个重要特性,它允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
多态性使得程序设计更加灵活和可扩展。
多态性通常通过抽象类和接口来实现。
抽象类定义了一个或多个抽象方法,而具体的子类则提供了这些抽象方法的实现。
接口则定义了一组方法规范,不同的类可以实现同一个接口,但提供不同的实现。
例如,假设我们有一个`Shape`接口,它定义了一个`draw`方法。
我们可以创建`Circle`、`Square`等类,它们都实现了`Shape`接口。
面向对象程序设计面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。
封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时也支持层次结构的创建。
子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。
多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。
在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。
抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。
类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。
对象是根据类创建的实例,具有类定义的属性和方法。
每个对象都是唯一的,即使它们是同一个类的实例。
面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。
这些原则帮助开发者创建灵活、可维护和可扩展的系统。
面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。
- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。
- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。
- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。
面向对象程序设计(Object-oriented Programming,简称OOP)是一种程序设计的思想,指的是将数据和操作数据的方法(函数)封装起来,变成“对象”,以处理问题。
OOP的出现为软件开发提供了一种新的思路和范式,它能够有效地提高程序的可维护性、可重用性、可扩展性和可靠性。
一、类和对象OOP的核心是“类”和“对象”。
类是抽象的,是描述对象共同特征形成的概念;而对象则是具体的、实实在在存在的东西。
一个类可以被看做是一组具有相似特征的对象的模板。
在面向对象的编程语言里,一个类拥有属性和方法,它们被用来描述类的特性和操作。
二、封装封装是OOP中的另一个重要特性,指的是将数据和代码封装在一个单元内,使得数据和方法只能通过对象来访问。
封装的好处是明确了每个类的职责和功能,将实现细节与外部接口分离,避免了不必要的干扰和错误。
三、继承继承是OOP中的一个基本概念,它可以实现代码复用并增加代码的可扩展性。
继承意味着一个子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。
这样,子类可以“重写”父类的方法,从而实现类的个性化特征。
四、多态多态是指不同的对象通过同一个引用来调用它们自己的方法时,实现不同的行为,以使得代码更加灵活和可扩展。
多态在OOP中发挥了重要作用,使得程序可以根据需要而动态的创建不同类的对象,并进行不同的操作。
面向对象的程序设计是一种先进、灵活和高效的编程思想,它已经成为了主流的编程范式。
OOP能够提高程序的可维护性、可重用性、可扩展性和可靠性,以使得软件开发更加高效、快捷和质量更加稳定。
因此,学习面向对象的程序设计已经成为现代软件工程教育的重要组成部分,对于各种领域的软件工程师来说,都是不可或缺的技能。
f lash组件使用与编程组件:假设有一组件名为component,那么:component._name:string 返回该组件的名称B u tton组件:不使用import引入对应的类,那么就需要全称,例如:import mc.controls.CheckBox; createClassObject(CheckBox, "cb", 0, {label:"Check this"}); 等价于:createClassObject(mx.controls.CheckBox, "cb", 0, {label:"Check this"});等价于:import mc.controls.*; createClassObject(CheckBox, "cb", 0, {label:"Check this"});把mx.controls文件夹下的所有类都引用,就不需要区分了。
以上是单击事件等价与:on(click){ trace(“000000000”); }除click单击事件之外的事件:例如:on(move{ ……} 等,如下Te xt Input组件:等价于:on (enter) //输入完数据,按回车触发事件{trace(this.length);trace(this);//trace(tn_label.length); //不能这样引用,要用实际路径。
如下:trace(_level0.应用程序.表单1.tn_text.text); //Flash表单应用程序if (my_ti.length < 8){trace("You must enter at least 8 characters");}else{trace("Thanks");}}事件:on (enter){……} 按回车事件;on(change)(……) 通知侦听器文本已更改。
面向对象程序设计方法
面向对象程序设计(Object-Oriented Programming, OOP)是一种程序设计思想,它强调将运行时环境中的对象与抽象出来的对象类型(或称为类)进行结合,以此来节约编程的工作量并提高程序的可操作性。
典型的OOP程序中,所有可用的类都可以通过继承,联系和组合组合成更高一级的类,而这些类又可以被用来构建新的对象。
OOP程序设计具有以下特征:
1、封装:封装是指将程序代码和数据结构组合在一起,使得它们可以单独使用,而不必考虑其他编程元素。
2、抽象:抽象是指将共性和特性从复杂的实体中抽离出来,建立一个通用的基类,用于管理、处理及访问某一类对象的相似之处。
3、多态:多态是指不同的对象,对同一操作可以表现出不同的行为。
4、继承:继承是指一个类的子类可以继承父类的特征,然后根据自身的需要,增加新的特征。
OOP程序设计的重要特点是它可以让程序员以可重用的模块来构建应用程序,从而大大降低程序编写及测试的工作量,也能够提升程序的可操作性。
类对象可以被构建成抽象层次结构,以便从可复用的模块中派生出更多新的类。
大量的类可以被组合在一起,形成一个功能更丰富的解决方案。
此外,多态性能让程序维护变得更加容易,因为改变一个类的行为,也不会影响到其他类。
Flash CS3基础与案例教程教案授课单位:授课教员:第8章面向对象的程序设计8.1【案例46】滚动文字【案例效果】“滚动文字”动画播放后的画面如图8-1-1所示(还没有下边红色文字)。
画面内的上边是立体标题文字,文字下边是我国的世界遗产图像。
单击左下边的按钮,可以看到上一个滚动的文本文件内容。
单击左下边的按钮可以看到下一个滚动的文本文件内容。
单击右下边的按钮,可以使文字暂停滚动,再单击该按钮又可以使文字继续滚动。
图8-1-1 “滚动文字”动画播放后的一幅画面【制作过程】(1)新建一个Flash文档,设置舞台工作区宽为800像素,高为200像素,背景色为白色。
选中“图层1”图层第1帧,导入5幅有关我国世界遗产的图像,调整它们的大小和位置,作为背景图像,如图8-1-2所示。
(2)将公用库中的3个按钮拖曳到舞台工作区内,调整它们的宽和高均为40像素。
给按钮实例命名为“AN1”,给按钮实例命名为“AN2”,给按钮实例命名为“AN3”。
(3)在“图层1”图层之上添加一个名字为“图层2”的图层。
选中“图层2”图层的第2帧,按F7键。
在舞台工作区的内下边创建一个动态文本框,变量名为texth1,字体为“Arial”,大小为22,颜色为红色。
(4)选中“图层1”图层第1帧,在“动作-帧”面板内输入如下初始化程序。
texth1=""; //给变量texth1赋初值n=0; //给变量n赋初值k=0; //给变量k赋初值MC="北京" //给变量MC赋初值(5)选中“图层2”图层第2帧,在“动作-帧”面板内输入如下程序。
texth1=texth1.substr(1) + texth1.substr(0,1) //将第一个字符或汉字移到字符串的最后边AN1.onPress=function(){n++;241242243245 制作该动画主要使用了对影片剪辑实例的enterFrame 事件(即执行影片剪辑实例的帧后产生响应)来触发动作。
使用键盘对象的Key.isDown(Key.Code)方法(即当键盘上的指定的按键按下的时候,返回true 逻辑值),来判断用户按了哪个按键,从而产生相应的动作。
本案例还采用了另外一种方法,即使用键盘侦听技术。
图8-2-1 “按键控制鱼游动”动画运行后的2幅画面【制作过程】1.方法1(1)新建一个Flash 文档,设置舞台工作区宽为550像素,高为300像素,背景色为白色。
以名称“按键控制鱼游动1.fla ”保存在“【案例46】按键控制鱼游动”文件夹内。
(2)选中“图层1”图层的第1帧,导入一幅水景图像,再调整该图像的大小和位置,使它与舞台工作区大小一样,并完全将舞台工作区覆盖。
(3)创建并进入“小鱼1”影片剪辑元件的编辑状态,选中“图层1”图层第1帧,绘制一幅如图8-2-2(a )所示图形;选中“图层1”第2帧,绘制一幅如图8-2-2(b )所示图形;选中“图层1”第3帧,绘制一幅如图8-2-2(d )所示图形。
然后,回到主场景。
(a ) (b ) (c )图8-2-2 “小鱼1” 影片剪辑元件内的图形 (4)创建并进入“小鱼2”影片剪辑元件的编辑状态,将“库”面板中的“小鱼1”影片剪辑元件8次拖曳到舞台工作区中,形成8个“小鱼1”影片剪辑元件的实例,适当调整它们的大小和位置,调整它们的颜色。
然后,回到主场景。
(5)选中“小鱼2”影片剪辑实例,调出“动作-影片剪辑”面板,输入如下程序。
// 针对“小鱼2”影片剪辑元件的实例的事件响应onClipEvent (enterFrame) {//如果按下光标右移键,则使影片剪辑实例右移5个像素if(Key.isDown(Key.RIGHT)) {this._x=_x+5;//如果按下光标下移键,则使影片剪辑实例下移5个像素} else if (Key.isDown(Key.DOWN)) {this._y=_y+5;//如果按下光标左移键,则使影片剪辑实例左移5个像素} else if (Key.isDown(Key.LEFT)) {this._x=_x-5;//如果按下光标上移键,则使影片剪辑实例上移5个像素} else if (Key.isDown(Key.UP)) {this._y=_y-5;//如果按下空格键,则使影片剪辑实例上逆时针旋转5度}else if (Key.isDown(Key.SPACE)) {this._rotation=_rotation-5;}}2.方法2在上边动画制作的基础之上,使用键盘侦听技术制作“按键控制鱼游动”动画,方法如下。
(1)打开“按键控制鱼游动1.fla”Flash文档,以名称“按键控制鱼游动2.fla”保存。
(2)进入“小鱼2”影片剪辑元件的编辑状态,删除6个“小鱼1”影片剪辑元件的实例。
然后,回到主场景。
(3)选中“图层2”图层的第1帧,将“库”面板中的“小鱼2”影片剪辑元件3次拖曳到舞台工作区中,一共形成4个“小鱼2”影片剪辑元件的实例。
然后,分别调整4个实例的颜色,分别给个实例命名为“YU1”、“YU2”、“YU3”和“YU4”。
(4)选中“图层2”图层的第1帧,调出“动作-帧”面板,输入如下程序。
myListener=new Object(); //建立一个Listener对象myListener.onKeyDown = function() { //当按键按下时,执行下面的程序//如果按下光标右移键,则使4个影片剪辑实例都右移5个像素if(Key.isDown(Key.RIGHT)) {YU1._x=YU1._x+5;YU2._x=YU2._x+5;YU3._x=YU3._x+5;YU4._x=YU4._x+5;//如果按下光标下移键,则使4个影片剪辑实例都下移5个像素} else if (Key.isDown(Key.DOWN)) {YU1._y=YU1._y+5;YU2._y=YU2._y+5;YU3._y=YU3._y+5;YU4._y=YU4._y+5;//如果按下光标左移键,则使4个影片剪辑实例都左移5个像素} else if (Key.isDown(Key.LEFT)) {YU1._x=YU1._x-5;YU2._x=YU2._x-5;YU3._x=YU3._x-5;246247248M ouse.remove Listener(myListener); //删除函数myListener(5)onMouseDown方法【格式】someListener.onKeyDown = function() {…语句…}【功能】用来产生当鼠标的按键被按下时的后续动作。
使用前必须先建立一个Listener对象,再定义一个函数给这个对象,并使用addListener方法注册鼠标(Mouse)对象为Listener。
someListener是要设置为Listener的对象(Objiect)名称。
8.3【案例48】播放外部MP3“播放外部MP3音乐”动画播放后的2幅画面如图8-3-1所示。
单击左边栏内的文字按钮,即可播放相应的MP3音乐,同时右边栏内的风景图像也随之改变,在右框内左下角显示动画播放的总时间,右下角显示正在播放的MP3音乐还剩余的时间。
单击“退出”文字按钮,可以使音乐停止播放。
MP3文件应存放在“【案例47】播放外部MP3”文件夹下的“MP3”文件夹内。
图8-3-1 “播放外部MP3音乐”动画播放后的2幅画面【制作过程】1.制作界面(1)设置舞台工作区高为400像素,宽为200像素,背景色为浅蓝色。
导入6幅风景图像到“库”面板内。
将该文档保存在“【案例47】播放外部MP3”文件夹内。
(2)将主场景内“图层1”图层的名称改为“框架和背景图像”,选中该图层第1帧,绘制一幅立体框架图像,使它刚好将整个舞台工作区覆盖,如图8-3-1所示。
(3)创建并进入“图像”影片剪辑元件编辑状态,选中第2帧到第6帧,按F7键,创建5个关键帧。
在各帧舞台工作区内放置一幅“库”面板中的图像,6幅图像的大小和位置一样。
然后,回到主场景。
(4)将“库”面板内的“图像”影片剪辑元件拖曳到舞台工作区内框架的右框中,调整它的大小和位置,如图8-3-1所示。
然后,在其“属性”面板内将实例命名为“TU”。
(5)在“框架和背景图像”图层的上边增加一个“时间”图层,选中“时间”图层第1帧,在框架内右框内的下边创建5个动态文本框,颜色为红色、字体为黑体、加粗,相应的变量名称分别为“TIME1”、“M1”、“M2”、“S1”和“S2”(从左到右)。
在输入“秒”、“分”和“秒”红色、黑体、加粗的文字。
(6)制作6个文字按钮。
在“图像”图层上边增加一个“按钮”图层。
选中249该图层第1帧,将“库”面板内的6个按钮依次拖曳到舞台工作区内,均匀地排成一列,如图8-3-1所示。
然后,利用“属性”面板分别给按钮实例命名为“AN1”、“AN2”、“AN3”、“AN4”、“AN5”和“AN6”。
2.程序设计(1)创建并进入“Action”影片剪辑元件编辑状态,在这舞台工作区中不放置任何对象。
选中“图层1”图层第1帧,在它的“动作-帧”面板程序编辑区内输入如下程序。
var m; //定义一个变量mmydate = new Date(); //实例化一个mydate日期对象//计算音乐播放的剩余时间,赋给变量mm=Math.floor((_root.mySound1.duration-_root.mySound1.position)/10 00);//计算秒的个位和十位数字,分别赋给变量S1和S2_root.S1=Math.floor(Math.floor(m%60)%10)+1;_root.S2=Math.floor(Math.floor(m%60)/10)+1;//计算分的个位和十位数字,分别赋给变量M1和M2_root.M1=Math.floor(Math.floor(m/60)%10)+1;_root.M2=Math.floor(Math.floor(m/60)/10)+1;_root.TIME1=Math.floor(getTimer()/1000);程序中的getTimer()函数的功能是:返回影片播放后所经过的时间,单位为毫秒。
关于实例化一个mydate日期对象的详细内容,参看【案例48】的有关内容。
(2)选中“图层1”图层第2帧,按F5键,创建一个普通帧,为的是让程序可以不断执行“图层1”图层第1帧的脚本程序。
从而动态地更新时钟数据。
然后,回到主场景。
(3)选中“时间”图层第1帧,将“库”面板中的“Action”影片剪辑元件拖曳到舞台工作区中,形成一个白色小圆。