1.3《认识数据抽象》_第1页
1.3《认识数据抽象》_第2页
1.3《认识数据抽象》_第3页
1.3《认识数据抽象》_第4页
1.3《认识数据抽象》_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.3认识数据抽象高中信息技术/教科版/选择性必修1目录1.情景导入2.新知讲授3.拓展练习4.课堂小结1.情境导入大多数人家里都有电视机,那么有谁知道电视机接收节目、显示画面的原理?如果不知道这些原理,是否影响我们使用电视机来收看节目?本节我们将通过“电视机的抽象”“程序化电视机”等活动了解电视机的运行原理,建立抽象的概念。2.新知讲授什么是抽象在计算机科学中,抽象(abstraction)是一种抛弃局部“物理的”细节,从整体“逻辑的”角度来看待事物的方式。所谓“逻辑的”,一般指事物的性质、功能、相互关联等,而“物理的”,则是事物的具体构成、实现细节和运作方式等。抽象关注“能做什么”,而不涉及“怎么做”,具有更大的灵活性和可扩展性。抽象也是相对的,可以在不同层次上进行抽象。

任务一

电视机中的抽象

活动1了解用户眼中的电视机每家每户的电视机在外观、尺寸、内部结构和节目接收方式上会有很多不同,但在收看节目方面,许多人都能够在短时间里熟悉一台电视机的操作方式,熟练地收看节目。无论电视机是什么品牌、多大尺寸,只要功能相同,都可以通过相同的操作界面来使用电视机收看节目。如果电视机遥控器丢失,可以购买“万能遥控器”来操作电视,这说明了什么问题?说明电视机的基本功能都相同,甚至遥控器与电视机通信的方式也基本相同。从抽象的角度来看,用户看到的是电视机逻辑的一面。用户使用的是电视机设计者提供的一系列能够收看和切换电视节目的功能,这些功能会通过遥控器上的按钮来提供,电视机身上也有-些按钮,这些按钮也可以被称为操作界面或接口(interface)。序号电视机的功能操作按钮1开机/关机电源开关2根据号码选择频道数字键盘3切换节目源4切换频道5调节音量填一填“节目源”按钮“频道”上下箭头按钮“音量”上下箭头按钮

任务一

电视机中的抽象

活动1了解用户眼中的电视机抽象和接口通过抽象方法,我们可以专注于问题解决方案的顶层逻辑功能设计,从问题的整体和全局出发,定义一系列接口,让用户可以通过调用接口来执行逻辑功能,而无须关心接口的具体物理实现细节。这样,对于用户来说,问题的复杂程度就大大简化了。采用抽象方式来处理问题及其解决方案,能够自顶向下层层分解复杂度,更加有条理地解决复杂问题,并通过同一逻辑方案的不同物理实现(implementation),使得问题解决方案具有灵活性和可扩展性。

任务一

电视机中的抽象

活动1了解用户眼中的电视机你知道电视机机壳内的秘密吗?

任务一

电视机中的抽象

活动2了解机壳之内的物理实现同样是一台电视机,观众只需要一台遥控器就可以观看电视节目,无需关心电视机运行的原理。而对于家电维修员,不仅要知道如何使用电视机,而且需要知道保证电视机功能正常的物理实现细节。他需要理解节目画面如何被显示、遥控器信号如何被接收、如何连接内部的音箱等。成像模块是电视机画面输出的核心部件,虽然各种电视机的操作界面相似,但形成画面的成像模块却可能差别甚大,阅读下表的内容,了解不同成像方式实现的一些细节,试着查找资料,填写表中的空白部分。类型/特性成像模块画面尺寸显示分辨率显像管电视机阴极射线管(CRT)较小较低平板电视机投影电视机填一填较高液晶显示屏较大光源透射投影大中等不同成像方式电视机的技术实现对比表

任务一

电视机中的抽象

活动2了解机壳之内的物理实现计算机程序是如何抽象的呢?程序中的抽象编写程序的时候,也常常需要抽象。Python提供了很多内置函数库,我们可以直接调用这些函数,而无须关心或者了解这些函数功能具体是如何实现的。例如,要计算某个数的平方根,可以在导入Python的math标准模块之后,直接调用math.sqrt()函数来求值,而不用了解这个函数是如何对整数或者浮点数开平方的。如果我们把电视机的逻辑功能接口写成Python函数的形式,那么用户收看一次节目的过程就可以写成一段程序了。下表是电视机功能接口的定义表。接口功能定义TVSet.powerOn()开启电源TVSet.shift(source)切换节目源,可选“TV”“AV”“HDMI”“USBTVSet.channelUp()直接切换频道,n为数字TVSet.channel(n)频道号加一切换TVSet.channelDow()频道号减一切换TVSet.volumeUp()音量增强TVSet.volumeDow()音量减弱TVSet.powerOff()关闭电源

任务二

程序化的电视机

活动1收看虚拟的电视机

任务二

程序化的电视机

活动1收看虚拟的电视机补充完整下列程序,完成一次节目收看,并在计算机上运行和验证程序。01.#导入电视机模块02.importtv03.myTV=tv.TVSet()04.myTV.powerOn()05.07.08.06.09.10.11.12.#新建一个电视机对象#开启电源#切换到“TV”节目源#收看6频道#看下一个频道#看下一个频道#看下一个频道#看上一个频道#调小音量#关闭电源myTV.shift(“Tv”)myTV.channel(6)myTV.channelUp()myTV.channelUp()myTV.channelUp()myTV.channelDown()myTV.volumeDown()myTV.powerOff()过程抽象和数据抽象过程抽象调用求平方根函数就是一个过程抽象(proceduralabstraction)的例子,我们不需要知道求平方根是怎么运算的,只需要知道这个函数叫什么、如何使用。如果按照说明正确调用函数,那么这个函数就能实现它所声称的功能,而实现细节则被隐藏起来,或者说被抽象了。过程抽象和数据抽象数据抽象如果把现实世界中的事物抽象成一类数据对象,就可以只从其逻辑功能来描述这些数据对象的性质、功能和它们之间的关联,而不涉及这些数据对象的具体实现细节。这就是跟过程抽象相似的数据抽象(dataabstraction)实现操作接口用户实际上,在编写电视收看程序的时候,已经用到了电视机的数据抽象。利用Python语言的面向对象机制,我们在电视机模块tv中定义了一个电视机类TVSet。请从教科书配套资源中找到tv.py文件,查看其中电视机类TVSet的每一个方法说明,了解电视机类TVSet的使用方法,并将每个方法的名称摘抄在下表中。序号方法名称功能描述1233

任务二

程序化的电视机

活动2了解电视机类TVSet的使用说明powerOn电视机开机、屏播放音乐、显示信息shift检查节目有效性、切换节目源,显示信息channel切换频道,显示信息,切换画面volumeUp音量增强,设置音量,显示画面,显示信息请从教科书配套资源中找到虚拟现实头盔模块vrhmd,修改前面的电视收看程序,完成全景影像节目收看。

任务二

程序化的电视机

活动3了解虚拟现实头盔01.#导人虚拟现实头盔模块02.importvrhmd03.myTV=vrhmd.TVSet()04.myTV.powerOn()05.07.08.06.09.10.11.12.#切换到“VR”节目源#收看6频道#看下一个频道#看下一个频道#看下一个频道#看上一个频道#调小音量#关闭电源myTV.shift(“VR”)myTV.channel(6)myTV.channelUp()myTV.channelUp()myTV.channelUp()myTV.channelDown()myTV.volumeDown()myTV.powerOff()数据封装数据抽象实现了数据封装(encapsulation),其优势不仅在于能够把逻辑功能和实现细节分离,分解问题的复杂度,而且还使得数据对象的可扩展性大大增强,在更换逻辑功能的具体实现方案后,只要接口的功能和定义不变,就无须修改上层程序代码。利用抽象方法,可以将一个高复杂度的问题分解为若干层次。这种层层抽象的细分结构,既有效限制了每个层次上的问题复杂度,又有利于问题解决方案的重复利用,可以做到下层实现细节的变动不影响上层的逻辑功能,具有强大的灵活性和可扩展性。抽象数据类型抽象数据类型(AbstractDataType,ADT)是抽象概念在数据结构上的具体应用。将数据对象分析的结果,以逻辑功能接口的形式固定下来,就成为抽象数据类型。抽象数据类型实现了数据对象的封装,并不涉及数据对象的实现细节,而是通过接口的形式描述了数据的组成和对数据的各种操作。抽象数据类型并不受特定实现和编程语言的约束,可以通过调整实现方法来应对应用需求的变化。抽象数据类型概念的引入,降低了大型软件系统的复杂度,提高了程序的可读性与可维护性,使软件系统的各部分相对隔离,在一定程度上解决了软件可靠性、生产率等方面的问题。3.拓展练习利用所学的物理学知识,编程实现平抛运动(HorizontalProjectileMotion,HPM)类HPMotion,该类提供下列接口:classHPMotion:def__init__(self,h,vx):

#初始化接口,参数为高度h和水平速度vx

#指定时刻t的速度,返回元组(vx,vy)分别是水平、竖直方向的速度值defvelocity(self,t):#指定时刻t的位移,返回元组(dx,dy)分别是水平、竖直方向的位移defdisplacement(self,t):运行程序,通过调用HPMotion类的接口,无须了解内部计算公式,就能够得到指定时刻t的速度和位移值,深入体验数据抽象的概念及其带来的便利。classHPMotion:def__init__(self,h,vx)self.g=9.8self.h=hself.vx=vxdefvelocity(self,t):vy=self.g*treturnself.vx,vydefdisplacement(self,t):dx=self.vx*tdy=0.5*self.g*t*treturndx,dy

hpm=HPMotion(10,60)importturtletut=turtle.Turtle()turtle.setworldcoordinates(0,1000,1000,0)turtle.title("平抛运动")fortinrange(20):

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论