|
|
|
|
|
|
|
您现在的位置: 算法与程序设计网>> 首页>> 面向对象程序设计
欢迎光临算法与程序设计网!
 
5 面向对象的功能实现

 (作者:占太鹏  修改时间:2006年7月24日)

一、       教学目标

1、知识与技能

1)认识创建类的的方法

2)认识对象的声明和实例化的方法。

3)了解利用VB进行面向对象程序设计的一般过程。

2、过程与方法

1)在VB中创建并使用类。

2)掌握利用VB进行面向对象程序设计的一般过程。

3、情感态度和价值观

1)关注面向对象程序设计的功能实现。

2)产生对面向对象的功能实现学习的愿望。

3)从思想上把握面向对象程序设计的一般过程。

二、       重点难点

教学重点:

1)创建类。

2)对象的声明和实例化。

教学难点:

1)在类中创建方法。

2)在类中创建属性。

三、       教学环境

1、  教材处理

教材以广东教育出版社的信息技术(选修一)《算法与程序设计》第五章第三节内容为框架,主题是面向对象功能的实现。为了与第一节内容相衔接,部分内容参考了上海科教版的普通高中信息技术课程实验教材《算法与程序设计》。

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

2、  预备知识

学生已认识面向对象程序设计的基本思想,初步了解了类、对象等概念,通过比较得知两种程序设计方法的优劣所在。有了这些基础,学习者明显产生了想进一步学习面向对象设计知识的欲望。

3、  硬件要求:计算机机房或网络教室。

4、  所需软件:学生机要安装VB6.0或以上版本。

5、所需课时:1课时。

四、       教学过程

导入:1、简要介绍本节课的教学目标:学会在VB中创建类和类的属性、方法。学会对象的创建和引用。

2、复习导入。前面我们已经学习了面向对象程序设计的核心概念:类和对象、属性、方法和事件等。而且初步在程序中运用了面向对象的思想来设计调试程序。那么类和对象在VB中是怎样创建和引用的呢?

(一)创建类

 创建类的完整过程包括:先创建一个空白类,然后为这个类定义属性,再定义这个类的方法。下面是在VB中创建Student类的全过程。

 1、创建类

(1)       选择“文件”→“新建工程”选项,建立一个“标准.EXE”新工程;

(2)       选择“工程”→“添加类模块”选项,打开类模块窗口;

(3)       通过属性窗口将该类命名为Student,如下图一和图二所示:

文本框: 图一:类的属性窗口
文本框: 图二:工程管理器窗口中的类

 
 

这样就创好了一个Student类,目前在类代码窗口还是空白,因此还是一个空白类。接下来在类代码窗口可以定义该类的属性。

2、创建属性

创建类模块后,可以通过两种方式为类添加属性,即使用公共变量和使用属性过程。

(1)       公共变量

使用公共变量创建属性是最简单的方法。只要在类模块的声明段输入即可。(类模块结构就像一个结构化的程序)定义属性的语句如下:

文本框: Public(Private)属性名 As 类型

 

               

例如:在活动二中定义Student的属性段如下:

            Private m_name As String      姓名

Private m_score(3) As Integer   三门课程分数的数组

      注:用关键字Public声明的属性对应用程序是可见的,程序的任意部分都可能改变属性值。例如,可以将任何具有正确数据类型的值赋给m_name属性这对于对象的属性来说存在不安全的因素。要将这个属性设置成只读,就要使用下面要讲的利用属性过程创建属性。

用关键字Private声明的属性对应用程序来说是不可见的,达到了隐藏数据的效果,只有属性内部的方法(过程或函数)可调用该属性值

(2)       属性过程

属性过程是在类中建立属性最安全、最灵活的方法。当用户访问一个属性时,属性过程能执行代码。VB系统提供了三种可用的属性过程:

 = 1 \* GB3 ①Property Get:返回属性值的一个函数。供用户读取对象的属性值。

 = 2 \* GB3 Property Let:设置属性值的一个子程序。供用户写入对象的属性值。

 = 3 \* GB3 Property Set: Property Let的一个特例,供用户写入对象的属性值为一对象。

属性过程一般成对出现,即具有相同过程名(即属性名)的Property GetProperty Let(Set),这样定义属性值可读可写。若只有Property Get过程,则该属性为只读属性,即应用程序不能直接改变该属性的值。

例:将密码PassWord设置为只读属性,用户不能直接改变;属性Name可读写,则相应程序代码为:

 

程序说明:

上述模块声明了私有变量mPassWordmName用于在属性过程间传递数据,对外部程序来说是不可见的,私有变量只在声明的类模块内部过程进行控制。例如,输入姓名值时,该值只能通过Property Let Name()属性过程保存在变量mName中;读取属性值时,必须调用Property Get Name()属性过程将mName的值传递给Name属性。这就是数据的隐蔽性。

3、创建方法

类的方法就是在类中定义的过程或函数。前面我们已经学过在VB中创建过程或函数使用SubFunction关键字。

文本框: [Public(Private)]Sub  过程名(形式参数表)
语名组
End Sub
文本框: [Public(Private)]Function 函数名(形式参数表) As 类型
语名组
函数名=表达式
End Function

 

 

  

 

 

 

 注:用Private定义的作用域,只能调用类中的代码。

    Public定义的作用域,可以在类外部调用代码。

创建一个方法的步骤

1)确定方法是公共的还是私有的。那些将从该类外部访问的方法应当声明为Public,其他的方法应当声明为Private

2)确定该方法是否返回值。如果一个方法必须返回一个值,必须定义为函数(Function),否则可以定义为一个过程(Sub)。

3)编写该方法的代码。如前面活动二中的代码

马上行动:运用属性和方法定义的原理,仔细阅读第一节中Student类的定义,解释其中属性的公私有性质及对这些属性进行读写操作的方法。

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 = "优秀"

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)      声明对象变量;

(2)      创建对象;

(3)      使用对象的属性、方法等;

(4)      释放对对象的引用。

下面以Student类的对象使用和测试为例,学习在应用程序中使用类的方法。

1、声明对象变量

格式:Dim 对象变量名 As 类名

例如,要为学生类声明一个对象变量──stu,可定义如下

Dim stu As Student

2、创建对象

我们可以将“声明变量”和“创建对象”的功能集于一体,创建对象。创建对象的语句格式为:

格式:Dim 对象变量名 As New 类名

例如:在活动二中定义了一个Stu对象

Dim stu As New Student

注:使用New关键字声明的对象变量同时为其分配内存空间。

    声明对象变量以后,要创建变量则使用语句:Set对象变量名 =New 类名

     3、调用对象的方法

以活动二为例,调用对象的方法如下:。

将学生的信息赋给对象

    Call Stu.SetInfo(StName,sc1,sc2,sc3)

'获取在文本框中输入的姓名

stu.GetName()

'获取在文本框中输入的各科分数

stu.GetScore(1)

stu.GetScore(2)

stu.GetScore(3)

计算总分

stu.GetTotal()

判断证书类型

stu.Judge()

4、释放对对象的引用

为了提高计算机内存的使用效率,最重要的一点就是要及时清空内存中那些不再需要的代码。一个新对象的声明就意味着为该对象分派了必须的内存单元。如果该对象不再需要可及时释放。

格式:Set 对象名=Nothing

例如:不再需要对象Stu时,可以这样释放,Set Stu=Nothing

至此,可以将在VB中的面向对象程序设计的过程总结为:编写类代码→声明类的变量(对象)→根据类创建对象实例→对实例进行属性和方法的设置或调用。如下图三所示:

 

本章总结如下

 

五、课外拓展

课外练习与活动

1、试用面向对象程序设计方法编制一个求三角形面积的程序。

2、通过合作学习、网上搜索、文献调查或专家访谈、分组活动、软件开发等方式,就面向对象程序设计语言的思想与方法展开讨论和交流,展望计算机程序设计的发展趋势。

参考资料

算法与程序设计   主编 应吉康 上海科技教育出版社

算法与程序设计   主编 张义兵 教育科学出版社

Visual Basic 6.0程序设计教程 宁正元主编 清华大学出版社 北京交通大学出版社

OOD 启思录  美 Arthur J.Riel著  鲍志云 译

Visual Basic 6.0程序设计 刘新民 蔡琼 白康生 编著  清华大学出版社

 

 

 

版权所有 Copyright© 2006惠东高级中学信息技术组