面向对象程序设计的基本思想.docx

上传人:b****5 文档编号:12217012 上传时间:2023-04-17 格式:DOCX 页数:23 大小:20.20KB
下载 相关 举报
面向对象程序设计的基本思想.docx_第1页
第1页 / 共23页
面向对象程序设计的基本思想.docx_第2页
第2页 / 共23页
面向对象程序设计的基本思想.docx_第3页
第3页 / 共23页
面向对象程序设计的基本思想.docx_第4页
第4页 / 共23页
面向对象程序设计的基本思想.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

面向对象程序设计的基本思想.docx

《面向对象程序设计的基本思想.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计的基本思想.docx(23页珍藏版)》请在冰豆网上搜索。

面向对象程序设计的基本思想.docx

面向对象程序设计的基本思想

 

面向对象程序设计的基本思想

 

一、教案目标

 

1、知识与技能

 

(1)认识面向对象程序设计的基本思想和面向对象思想的由来,并能够举

 

例说明现实世界与面向对象系统之间的对应关系。

 

(2)认识面向对象程序设计的优越性并初步理解其实现的机制。

 

2、过程与方法

 

经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向

 

对象程序设计的优势及面向过程程序设计的缺陷。

 

3、情感态度和价值观

 

(1)关注传统结构化程序设计存在的问题。

 

(2)产生学习面向对象程序设计技术的愿望。

 

(3)关注到面向对象技术是当前程序设计的重要发展方向。

 

二、重点难点

 

1、教案重点

 

(1)传统结构化程序设计存在的问题

 

(2)面向对象程序设计所具有的优点。

 

2、教案难点

 

(1)面向对象思想的产生。

 

(2)传统结构化程序设计与面向对象程序设计的基本点比较。

 

(3)实现面向对象程序设计的基本机制。

 

三、教案环境

 

1/14

 

1、教材处理

 

教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第

 

五章第一节内容为结构框架,部分实例选取上海科教版的普通高中信息技术课

 

程实验教材《算法与程序设计》,力争做到说理透彻,易于理解并提供较多的

 

理论和实践操练以巩固所学内容。

 

教案方法采用采用讲解、任务驱动、实践和学生自主学习相结合的学习方

 

法。

 

2、预备知识

 

学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计

 

方法,有一定的程序设计基础,课前建议学生预习课文内容,初步了解本节教

 

案内容与目标。

 

3、硬件要求

 

建议本节课在多媒体电脑教室中完成,最好有广播教案系统或投影仪,为

 

拓展学习,学生机应允许上互联网。

 

4、所需软件:

学生机要安装VB6.0或以上版本。

 

5、所需课时:

1个课时,如无预习,课程将较为紧凑。

 

四、教案过程

 

导入:

1、简要介绍本节课的教案目标:

认识面向对象思想的由来及其基本

 

思想,通过阅读或调试用两种不同思想实现解决同一问题的两段程序,认清面

 

向对象程序设计的优点和结构化程序设计的缺陷。

 

2、问题导入。

请同学们阅读本节课文最前面的引导文字段,一分钟后请同

 

学发言。

通过引导抛出结论:

“结构化程序设计存在固有的缺陷:

以功能为核

 

2/14

 

心,数据和函数分开,使得后期维护难,安全性差等且不适合解决复杂问

 

题。

 

(一)面向对象思想的产生

 

1、面向对象技术是程序设计发展的必然趋势

 

通过前面的学习我们知道,程序设计语言发展到现在经历了机器语言、汇

 

编语言再到高级语言。

高级语言可分为=1\*GB3①面向过程的程序设计语

 

言=2\*GB3②面向对象的程序设计语言。

高级语言的出现为计算机的应用开辟了广阔的前景。

计算机能解决的问题从纯计算问题开始发展到现在能处理现实世界方方面面的问题。

面向过程的程序设计方法以算法(即程序功能)为

 

中心,把过程和数据作为互相对立的部分,即“程序=算法+数据结构”。

因此当描述事物的数据结构发生了改变,所有与该数据结构相关的语句、过程和函

 

数都要重新设计。

要使数据与程序始终保持相容,已成为程序员开发的一个沉重负担。

还有面向过程程序设计方法存在着安全性差、代码可重用性差等缺陷,随着软件开发规模的不断扩大,结构化的方法已不能驾驭软件开发的过程。

人们从编程解决问题的实践中逐渐总结出:

以接近人们思维方式来编程解决问题的面向对象技术代表了程序设计发展的方向。

因为它能做到高效率、易维护、安全性强、代码可重用率高。

 

2、面向对象技术的思想

 

面向对象程序设计(ObjectOrientedProgramming,简称OOP),是基于

 

一种很自然和朴素的思想。

计算机软件开发的过程就是人们使用各种计算机语

 

言将现实世界映射到计算机世界的过程。

计算机系统通常是在一定对象上执行

 

一定行为的操作,要获得灵便和可重用的系统,最好的办法就是将软件结构建

 

3/14

 

立在对象上,而不是行为之上,使计算机求解问题更加类似于人类的逻辑思维

 

活动,让程序设计按照我们平时认识客观世界的方式进行。

 

客观世界是由物质与意识构成的。

现实生活中,“一个学生张三”表达的

 

是具体的事物,而“学生”是一种意识。

物质表达具体的事物,意识是对客观

 

存在的事物的一种抽象概括。

在面向对象系统的求解空间中,有对象和类,若

 

把现实事物直接映射到面向对象的软件系统求解空间,那么物质对应于对象,

 

而意识对应于类(Class)。

 

客观世界中,学生是人们对所有具体的学生的抽象概括,在面向对象系统

 

中可用学生类来表达,而学生张三是学生的一个具体的实例。

在面向对象系统

 

中可表示为一个对象,这个对象就是学生类中的一个实例,如下图所示。

 

面向对象更接近于计算机世界的物理实现;面向对象思想则符合人们的认

 

识习惯。

面向对象作为一种思想和编程语言,为程序从分析、设计到编码整个

 

过程提供了一个完整的解决方案。

 

(二)面向对象程序设计

 

活动一:

以下是处理学生成绩的两个程序,学生成绩1.vbp用面向过程的

 

方法设计,学生成绩2.vbp用面向对象的方法编写,试比较它们。

 

1、开学生成绩1.vbp。

阅读并运行该程序(见程序一)。

 

'程序一

 

4/14

 

PrivateSubForm_click()

 

DimiAsInteger,nAsInteger‘n为学生数

 

DimStNameAsString

 

Dimsc1AsInteger

 

Dimsc2AsInteger

 

Dimsc3AsInteger

 

DimtotalAsSingle

 

DimpromptAsString

 

n=Val(InputBox("输入学生数"))

 

Print"姓名"&vbTab&"成绩1"&vbTab&"成绩2"&vbTab&"成绩

 

3"&vbTab&"加权总分"&vbTab&"证书类型"

 

Fori=1Ton

 

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&S

 

tr(sc3)&vbTab&Str(total)&vbTab

 

If(sc1>=85Andsc2>=85Andsc3>=85)Then

 

Printprompt&"优秀"

 

5/14

 

Else

 

If(total>70Andsc1>=60Andsc2>=60Andsc3>=60)

 

Then

 

Printprompt&"合格"

 

Else

 

Printprompt&"不合格"

 

EndIf

 

EndIf

 

Nexti

 

EndSub

 

马上行动:

阅读本程序请问答

 

(1)找出程序中计算总分的语句。

 

(2)找出程序中判断证书类型的语句。

 

2、打开学用面向对象方法生成的学生成绩2.vbp。

 

运行该程序后界面如下图所示:

 

6/14

类”的

 

讨论:

两个程序的执行过程有什么不同?

 

3、观察“学生成绩2.vbp”的程序(见程序二)。

 

'程序二

 

'定义学生类

 

DimstuAsNewStudent

 

DimnAsInteger‘n为学生数

 

'窗体启动

 

PrivateSubForm_Load()

 

labN.Caption=1‘学生序号标签显示1

 

EndSub

 

7/14

 

 

变量stu所声明的

 

数据类型不是系统

 

'单击“处理”按钮事件

 

PrivateSubCommand1_Click()

 

DimStuRecAsString

 

DimStNameAsString

 

Dimsc1AsInteger

 

Dimsc2AsInteger

 

Dimsc3AsInteger

 

StName=TxtName.Text

 

sc1=Val(TxtScore1.Text)

 

sc2=Val(TxtScore2.Text)

 

sc3=Val(TxtScore3.Text)

 

'将学生的信息赋给对象

 

Callstu.SetInf(StName,sc1,sc2,sc3)

 

'输出结果

 

StuRec=stu.GetName()&vbTab

 

StuRec=StuRec&stu.GetScore

(1)&vbTab&stu.GetScore

(2)&vbT

 

ab&stu.GetScore(3)

 

StuRec=StuRec&vbTab&stu.GetTotal()&vbTab&stu.Judge()

 

List1.AddItemStuRec

 

n=n+1

 

labN.Caption=n+1

 

'文本框清零

 

8/14

 

TxtName=""

 

TxtScore1=0:

TxtScore2=0:

TxtScore3=0

 

TxtName.SetFocus

 

EndSub

 

马上行动:

阅读本程序问答

(1)找出程序中计算总分的语句。

 

(2)找出程序中判

 

断证书类型的语句。

 

4、分别在程序一和程序二的计算总分和判断证书类型的语句之间添加语

 

句“SC1=0”,再次运行两个程序,看结果有什么不同。

 

小提示:

由于中途改变了软硬件基础成绩数据,使得程序一的运行结果受

 

到了影响,而程序二不会受任何影响。

 

活动二从VB的类模块中认识类、对象和实体

 

1、双击“学生成绩2.vbp”程序的工程资源管理窗口中类模块下的“stu

 

dent”,打开类模块代码窗口,如下图所示

 

9/14

 

2、阅读其中的程序,如下图所示:

 

'定义存放学生姓名的变量和存放三门课成绩的数组

 

Privatem_nameAsString

 

Privatem_score(3)AsInteger

 

'实现获得学生姓名的方法

 

PublicSubSetInf(nameAsString,s1AsInteger,s2AsInteger,s

 

3AsInteger)

 

m_name=name

 

10/14

 

m_score

(1)=s1

 

m_score

(2)=s2

 

m_score(3)=s3

 

EndSub

 

'实现输出学生信息的方法

 

PublicFunctionGetName()AsString

 

GetName=m_name

 

EndFunction

 

PublicFunctionGetScore(indexAsInteger)AsInteger

 

GetScore=m_score(index)

 

EndFunction

 

'实现计算总分的方法

 

PublicFunctionGetTotal()AsSingle

 

GetTotal=m_score

(1)*0.2+m_score

(2)*0.5+m_score(3)*0.3

 

EndFunction

 

'实现判断证书类型的方法

 

PublicFunctionJudge()AsString

 

Ifm_score

(1)>=85Andm_score

(2)>=85Andm_score(3)>=85The

 

n

 

Judge="优秀"

 

ElseIfGetTotal()>70Andm_score

(1)>=60Andm_score

(2)>=60

 

Andm_score(3)>=60Then

 

11/14

 

Judge="合格"

 

Else

 

Judge="无"

 

EndIf

 

EndFunction

 

马上行动:

阅读以上学生类定义程序段后

 

(1)写出Student类中定义学生属性的部分

 

m_name用于表示

 

m_score(3)用于表示

 

(2)写出Student类中定义方法的部分。

 

子过程SetInf的作用是获取学生对象的姓名和三门课成绩;

 

函数GetScore的作用是输出学生对象的姓名和三门课成绩;

 

函数GetName的作用

 

 

函数Judge的作用

 

 

12/14

 

讨论:

在程序二中的语句“Callstu.SetInf(StName,sc1,sc2,sc3)”

 

后,添加语句“m_name="冯海"”,调试运行程序,看结果有何影响.原因是什么?

 

如果要计算四门课的成绩,该如何修改程序一和程序二,两者的修改方法有

 

什么不同?

 

归纳总结:

两种程序设计方法的异同

 

1、运行机制不同

 

程序一的运行过程完全由程序控制,什么时候输入数据,什么时候计算得

 

出结果,都是由程序员预先设计好的,不能中途予以改变。

若某用户在输入完

 

第一个学生成绩的硬件基础成绩,开始输入文字出理技巧成绩时,发觉先前输

 

入的成绩错了,需要修改,这时只能结束程序,重新运行后再次输入,而无法

 

回到上一步修改输入。

 

程序二则不同,用户可随时根据自己的意愿与应用程序进行交互。

 

2、安全性不同

 

前面的活动一,在两个程序中仅仅添加了改变软硬件基础成绩数据这一语

 

句,程序一的运行结果受到了影响,和用户预期的结果相差甚远,而程序二则

 

没有受到任何影响。

试想一下,如果在一个由数十人甚至数百人合作开发的大

 

型软件系统中,万一需要修改某一数据,对于使用面向过程方法设计编写的程

 

序来说,其后果是不可预计的。

而对于使用面向对象的程序设计方法编写的程

 

序则相对安全得多。

 

另外,在程序二中不能使用变量赋值语句改变Student类模块中的变量

 

值,如m_name=”冯海”,也就是说不能随意改变某一学生对象的姓名等数

 

据。

原因是类里的m_name等变量的定义语句使用了Private限定词,只允许在

 

13/14

 

类里使用这些变量,而对于主程序,必须通过调用类中的方法(操作接口),

 

如SetInf为其赋值。

这样安全性更强了。

 

3、实现具体功能的方法相同

 

两种方法设计的程序,也有其共同之处,如程序一中有实现“判断证书类

 

型”的程序段,程序二的Student类模块中也有实现“判断证书类型”的功能

 

程序段,两个程序都使用了结构化的方法来设计算法,即都采用了选择结构。

 

也就是说,无论面向过程的程序,还是面向对象的程序,其实现具体功能的代

 

码都采用了结构化程序设计方法来设计。

 

(注:

本节部分内容引自上海科教出版社出版的普通高中信息技术课程实

 

验教材《算法与程序设计》)

 

五、课外拓展

 

课外练习:

初步总结面向对象程序设计与面向过程程序设计的异同。

 

14/14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1