面向对象程序设计的基本思想.doc
《面向对象程序设计的基本思想.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计的基本思想.doc(15页珍藏版)》请在咨信网上搜索。
一、 教学目标 1、 知识与技能 ( 1) 认识面向对象程序设计的基本思想和面向对象思想的由来, 并能够举例说明现实世界与面向对象系统之间的对应关系。 ( 2) 认识面向对象程序设计的优越性并初步理解其实现的机制。 2、 过程与方法 经历分析、 调试解决同一问题的两种不同实现思想的程序, 初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 3、 情感态度和价值观 ( 1) 关注传统结构化程序设计存在的问题。 ( 2) 产生学习面向对象程序设计技术的愿望。 ( 3) 关注到面向对象技术是当前程序设计的重要发展方向。 二、 重点难点 1、 教学重点 ( 1) 传统结构化程序设计存在的问题 ( 2) 面向对象程序设计所具有的优点。 2、 教学难点 ( 1) 面向对象思想的产生。 ( 2) 传统结构化程序设计与面向对象程序设计的基本点比较。 ( 3) 实现面向对象程序设计的基本机制。 三、 教学环境 1、 教材处理 教材以广东教育出版社出版的信息技术( 选修一) 《算法与程序设计》第五章第一节内容为结构框架, 部分实例选取上海科教版的普通高中信息技术课程实验教材《算法与程序设计》, 力争做到说理透彻, 易于理解并提供较多的理论和实践操练以巩固所学内容。 教学方法采用采用讲解、 任务驱动、 实践和学生自主学习相结合的学习方法。 2、 预备知识 学生已学完教材前四章内容, 基本掌握了传统的面向过程结构化程序设计方法, 有一定的程序设计基础, 课前建议学生预习课文内容, 初步了解本节教学内容与目标。 3、 硬件要求 建议本节课在多媒体电脑教室中完成, 最好有广播教学系统或投影仪, 为拓展学习, 学生机应允许上互联网。 4、 所需软件: 学生机要安装VB6.0或以上版本。 5、 所需课时: 1个课时, 如无预习, 课程将较为紧凑。 四、 教学过程 导入: 1、 简要介绍本节课的教学目标: 认识面向对象思想的由来及其基本思想, 经过阅读或调试用两种不同思想实现解决同一问题的两段程序, 认清面向对象程序设计的优点和结构化程序设计的缺陷。 2、 问题导入。请同学们阅读本节课文最前面的引导文字段, 一分钟后请同学发言。经过引导抛出结论: ”结构化程序设计存在固有的缺陷: 以功能为核心, 数据和函数分开, 使得后期维护难, 安全性差等且不适合解决复杂问题。” ( 一) 面向对象思想的产生 1、 面向对象技术是程序设计发展的必然趋势 经过前面的学习我们知道, 程序设计语言发展到现在经历了机器语言、 汇编语言再到高级语言。高级语言可分为 = 1 \* GB3 ①面向过程的程序设计语言 = 2 \* GB3 ②面向对象的程序设计语言。高级语言的出现为计算机的应用开辟了广阔的前景。计算机能解决的问题从纯计算问题开始发展到现在能处理现实世界方方面面的问题。面向过程的程序设计方法以算法( 即程序功能) 为中心, 把过程和数据作为互相对立的部分, 即”程序=算法+数据结构”。因此当描述事物的数据结构发生了改变, 所有与该数据结构相关的语句、 过程和函数都要重新设计。要使数据与程序始终保持相容, 已成为程序员开发的一个沉重负担。还有面向过程程序设计方法存在着安全性差、 代码可重用性差等缺陷, 随着软件开发规模的不断扩大, 结构化的方法已不能驾驭软件开发的过程。人们从编程解决问题的实践中逐渐总结出: 以接近人们思维方式来编程解决问题的面向对象技术代表了程序设计发展的方向。因为它能做到高效率、 易维护、 安全性强、 代码可重用率高。 2、 面向对象技术的思想 面向对象程序设计( Object Oriented Programming,简称OOP) , 是基于一种很自然和朴素的思想。计算机软件开发的过程就是人们使用各种计算机语言将现实世界映射到计算机世界的过程。计算机系统一般是在一定对象上执行一定行为的操作, 要获得灵便和可重用的系统, 最好的办法就是将软件结构建立在对象上, 而不是行为之上, 使计算机求解问题更加类似于人类的逻辑思维活动, 让程序设计按照我们平时认识客观世界的方式进行。 客观世界是由物质与意识构成的。现实生活中, ”一个学生张三”表示的是具体的事物, 而”学生”是一种意识。物质表示具体的事物, 意识是对客观存在的事物的一种抽象概括。在面向对象系统的求解空间中, 有对象和类, 若把现实事物直接映射到面向对象的软件系统求解空间, 那么物质对应于对象, 而意识对应于类( Class) 。 客观世界中, 学生是人们对所有具体的学生的抽象概括, 在面向对象系统中可用学生类来表示, 而学生张三是学生的一个具体的实例。在面向对象系统中可表示为一个对象, 这个对象就是学生类中的一个实例, 如下图所示。 物质: 一个学生张三 意识: 学生 具体事物: 一个对象 学生的实例 抽象概念: 学生类 现实问题空间 面向对象系统求解空间 现实世界与面向对象系统之间的关系 面向对象更接近于计算机世界的物理实现; 面向对象思想则符合人们的认识习惯。面向对象作为一种思想和编程语言, 为程序从分析、 设计到编码整个过程提供了一个完整的解决方案。 ( 二) 面向对象程序设计 活动一: 以下是处理学生成绩的两个程序, 学生成绩1.vbp用面向过程的方法设计, 学生成绩2.vbp用面向对象的方法编写, 试比较它们。 1、 开学生成绩1.vbp;阅读并运行该程序( 见程序一) 。 '程序一 Private Sub Form_click() Dim i As Integer, n As Integer ‘n为学生数 Dim StName As String Dim sc1 As Integer Dim sc2 As Integer Dim sc3 As Integer Dim total As Single Dim prompt As String n = Val(InputBox("输入学生数")) Print "姓名" & vbTab & "成绩1" & vbTab & "成绩2" & vbTab & "成绩3" & vbTab & "加权总分" & vbTab & "证书类型" For i = 1 To n StName = InputBox("输入第" & i & "位同学的姓名") sc1 = Val(InputBox("输入该同学的软硬件基础成绩")) sc2 = Val(InputBox("输入该同学的文字处理技巧成绩")) sc3 = Val(InputBox("输入该同学的网络技术应用成绩")) total = sc1 * 0.2 + sc2 * 0.5 + sc3 * 0.3 '输出表头 prompt = StName & vbTab & Str(sc1) & vbTab & Str(sc2) & vbTab & Str(sc3) & vbTab & Str(total) & vbTab If (sc1 >= 85 And sc2 >= 85 And sc3 >= 85) Then Print prompt & "优秀" Else If (total > 70 And sc1 >= 60 And sc2 >= 60 And sc3 >= 60) Then Print prompt & "合格" Else Print prompt & "不合格" End If End If Next i End Sub 马上行动: 阅读本程序请问答( 1) 找出程序中计算总分的语句。 ( 2) 找出程序中判断证书类型的语句。 2、 打开学用面向对象方法生成的学生成绩2.vbp。 运行该程序后界面如下图所示: 讨论: 两个程序的执行过程有什么不同? 3、 观察”学生成绩2.vbp”的程序( 见程序二) 。 变量stu所声明的数据类型不是系统提供的数据类型, 而是一个由用户创立的自定义类型, 称为student类。 提 示 '程序二 '定义学生类 Dim stu As New Student Dim n As Integer ‘n为学生数 '窗体启动 Private Sub Form_Load() labN.Caption = 1 ‘学生序号标签显示1 End Sub '单击”处理”按钮事件 Private Sub Command1_Click() Dim StuRec As String Dim StName As String Dim sc1 As Integer Dim sc2 As Integer Dim sc3 As Integer StName = TxtName.Text sc1 = Val(TxtScore1.Text) sc2 = Val(TxtScore2.Text) sc3 = Val(TxtScore3.Text) '将学生的信息赋给对象 用红色标出的语句全部是stu对象的方法调用。 提 示 Call stu.SetInf(StName, sc1, sc2, sc3) '输出结果 StuRec = stu.GetName() & vbTab StuRec = StuRec & stu.GetScore(1) & vbTab & stu.GetScore(2) & vbTab & stu.GetScore(3) StuRec = StuRec & vbTab & stu.GetTotal() & vbTab & stu.Judge() List1.AddItem StuRec n = n + 1 labN.Caption = n + 1 '文本框清零 与前一个程序相比能够发现程序一中实现计算总分的表示式和判断证书类型等功能的选择结构语句在程序二的代码窗口中已经找不到了, 取而代之的是对象方法的调用语句. 提 示 TxtName = "" TxtScore1 = 0: TxtScore2 = 0: TxtScore3 = 0 TxtName.SetFocus End Sub 马上行动: 阅读本程序问答( 1) 找出程序中计算总分的语句。 ( 2) 找出程序中判断证书类型的语句。 4、 分别在程序一和程序二的计算总分和判断证书类型的语句之间添加语 句”SC1=0”, 再次运行两个程序, 看结果有什么不同。 小提示: 由于中途改变了软硬件基础成绩数据, 使得程序一的运行结果受到了影响, 而程序二不会受任何影响。 活动二 从VB的类模块中认识类、 对象和实体 1、 双击”学生成绩2.vbp”程序的工程资源管理窗口中类模块下的”student”,打开类模块代码窗口, 如下图所示 2、 阅读其中的程序, 如下图所示: '定义存放学生姓名的变量和存放三门课成绩的数组 Private m_name As String Private m_score(3) As Integer '实现获得学生姓名的方法 Public Sub SetInf(name As String, s1 As Integer, s2 As Integer, s3 As Integer) m_name = name m_score(1) = s1 m_score(2) = s2 m_score(3) = s3 End Sub '实现输出学生信息的方法 Public Function GetName() As String GetName = m_name End Function Public Function GetScore(index As Integer) As Integer GetScore = m_score(index) End Function '实现计算总分的方法 Public Function GetTotal() As Single GetTotal = m_score(1) * 0.2 + m_score(2) * 0.5 + m_score(3) * 0.3 End Function '实现判断证书类型的方法 Public Function Judge() As String If m_score(1) >= 85 And m_score(2) >= 85 And m_score(3) >= 85 Then Judge = "优秀" 这段代码定义了一个”学生类”。类定义中包含了同类对象共同的属性, 这个”学生类”的属性有姓名和三门课成绩, 以及”行为( 方法) ”, 如计算总分方法、 判断证书类型方法等。VB中, 上述属性和方法都是封装在类模块中的。 提 示 ElseIf GetTotal() > 70 And m_score(1) >= 60 And m_score(2) >= 60 And m_score(3) >= 60 Then Judge = "合格" Else Judge = "无" End If End Function 马上行动: 阅读以上学生类定义程序段后 ( 1) 写出Student类中定义学生属性的部分 m_name用于表示 m_score(3)用于表示 ( 2) 写出Student类中定义方法的部分。 子过程SetInf的作用是获取学生对象的姓名和三门课成绩; 函数GetScore的作用是输出学生对象的姓名和三门课成绩; 函数GetName的作用是 函数Judge的作用是 讨论: 在程序二中的语句”Call stu.SetInf(StName, sc1, sc2, sc3)”后, 添加语句”m_name="冯海"”,调试运行程序,看结果有何影响.原因是什么? 如果要计算四门课的成绩,该如何修改程序一和程序二,两者的修改方法有什么不同? 归纳总结: 两种程序设计方法的异同 1、 运行机制不同 程序一的运行过程完全由程序控制, 什么时候输入数据, 什么时候计算得出结果, 都是由程序员预先设计好的, 不能中途予以改变。若某用户在输入完第一个学生成绩的硬件基础成绩, 开始输入文字出理技巧成绩时, 发觉先前输入的成绩错了, 需要修改, 这时只能结束程序, 重新运行后再次输入, 而无法回到上一步修改输入。 程序二则不同, 用户可随时根据自己的意愿与应用程序进行交互。 2、 安全性不同 前面的活动一, 在两个程序中仅仅添加了改变软硬件基础成绩数据这一语句, 程序一的运行结果受到了影响, 和用户预期的结果相差甚远, 而程序二则没有受到任何影响。试想一下, 如果在一个由数十人甚至数百人合作开发的大型软件系统中, 万一需要修改某一数据, 对于使用面向过程方法设计编写的程序来说, 其后果是不可预计的。而对于使用面向对象的程序设计方法编写的程序则相对安全得多。 另外, 在程序二中不能使用变量赋值语句改变Student类模块中的变量值, 如m_name=”冯海”, 也就是说不能随意改变某一学生对象的姓名等数据。原因是类里的m_name等变量的定义语句使用了Private限定词, 只允许在类里使用这些变量, 而对于主程序, 必须经过调用类中的方法( 操作接口) , 如SetInf为其赋值。这样安全性更强了。 3、 实现具体功能的方法相同 两种方法设计的程序, 也有其共同之处, 如程序一中有实现”判断证书类型”的程序段, 程序二的Student类模块中也有实现”判断证书类型”的功能程序段, 两个程序都使用了结构化的方法来设计算法, 即都采用了选择结构。也就是说, 无论面向过程的程序, 还是面向对象的程序, 其实现具体功能的代码都采用了结构化程序设计方法来设计。 ( 注: 本节部分内容引自上海科教出版社出版的普通高中信息技术课程实验教材《算法与程序设计》) 五、 课外拓展 课外练习: 初步总结面向对象程序设计与面向过程程序设计的异同。 参考资料: 算法与程序设计 主编 应吉康 上海科技教育出版社 算法与程序设计 主编 张义兵 教育科学出版社 Visual Basic 6.0程序设计教程 宁正元主编 清华大学出版社 北京交通大学出版社 OOD 启思录 美 Arthur J.Riel著 鲍志云 译 Visual Basic 6.0程序设计 刘新民 蔡琼 白康生 编著 清华大学出版社 拓展材料: 5-1面向对象与面向过程.doc 5-1面向对象的动因.doc- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 基本 思想
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文