《VisualBasicNET应用教程电子讲稿第九章.ppt》由会员分享,可在线阅读,更多相关《VisualBasicNET应用教程电子讲稿第九章.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第9章 面向对象的程序设计本章要点:本章要点:面向对象的基本概念面向对象的基本概念 类的定义与对象的声明类的定义与对象的声明 构造器和析构器构造器和析构器 类的共享成员和非共享成员类的共享成员和非共享成员 方法重载及其编程实现方法重载及其编程实现 类的继承与多态性的编程实现类的继承与多态性的编程实现 类的属性的实现类的属性的实现9.1 循序渐进学理论循序渐进学理论 9.1.1 面向对象程序设计概述 1 1面向对象程序设计的由来面向对象程序设计的由来 2 2面向对象程序设计的基本概念面向对象程序设计的基本概念 (1 1)类和对象)类和对象 (2 2)属性、方法与事件)属性、方法与事件 (3 3)
2、封装)封装 (4 4)继承)继承 (5 5)重载)重载 (6 6)多态性)多态性9.1.2 命名空间命名空间 1 1命名空间的概念命名空间的概念 命名空间(命名空间(NameSpaceNameSpace)是组织类的一种机制,在)是组织类的一种机制,在NETNET框架中,有一个巨大的类库,该类库提供了在应框架中,有一个巨大的类库,该类库提供了在应用程序设计中所需的大部分功能。用程序设计中所需的大部分功能。2 2命名空间的使用命名空间的使用 (1 1)直接定位命名空间)直接定位命名空间 (2 2)使用)使用ImportsImports关键字引用命名空间关键字引用命名空间3 3命名空间的定义命名空间
3、的定义9.1.3 类和对象的创建类和对象的创建 1 1类的创建类的创建 【例【例9-19-1】定义一个定义一个StudentStudent类,用来对学生的类,用来对学生的信息和功能进行描述。假设学生具有学号、姓名、信息和功能进行描述。假设学生具有学号、姓名、年龄、性别、平均成绩等特征,并且具有设置学年龄、性别、平均成绩等特征,并且具有设置学生特征和显示学生特征的功能。生特征和显示学生特征的功能。2 2对象的创建对象的创建 格式格式:Declare Declare 对象变量名对象变量名 As New As New 类名类名(参数参数)3 3对象的使用对象的使用 9.1.4 类成员的种类及其可访问
4、性1 1类成员的分类类成员的分类 常量常量 域域 方法方法 属性属性 事件事件 构造器构造器 析构器析构器 2类成员的可访问性类成员的可访问性 公有成员公有成员(Public)(Public)私有成员私有成员(Private)(Private)保护成员保护成员(Protected)(Protected)朋友成员朋友成员(Friend)(Friend)保护友员(保护友员(Protected FriendProtected Friend)3类的共享成员和非共享成员 9.1.5 类的构造器和析构器类的构造器和析构器 1构造器 构造器(又称构造函数)主要用来为对象分配存储空构造器(又称构造函数)主要用
5、来为对象分配存储空间,完成初始化操作(如给类的成员变量赋值等)。间,完成初始化操作(如给类的成员变量赋值等)。2析构器 析构器(又称析构函数)是在对象销毁时(对象离开析构器(又称析构函数)是在对象销毁时(对象离开作用范围或被赋值为作用范围或被赋值为NothingNothing时)被调用,常用来释放对时)被调用,常用来释放对象占用的存储空间。象占用的存储空间。9.1.6 方法及方法的重载方法及方法的重载【例【例9-49-4】方法重载的演示。新建一个项目,为项目添加方法重载的演示。新建一个项目,为项目添加一个类模一个类模块,类模块中的程序代码下块,类模块中的程序代码下:Public Class O
6、verTestPublic Class OverTest Public Overloads Function area(ByVal r As Double)As Public Overloads Function area(ByVal r As Double)As Double Double 求圆的面积,一个参数求圆的面积,一个参数 Return(Math.PI*r*r)Return(Math.PI*r*r)End Function End Function Public Overloads Function area(ByVal a As Double,Public Overloads Fu
7、nction area(ByVal a As Double,ByVal b As Double)As Double ByVal b As Double)As Double 求矩形面积,有两个参求矩形面积,有两个参数数 Return(a*b)Return(a*b)End Function End Function Public Overloads Function area(ByVal a As Public Overloads Function area(ByVal a As Double,ByVal b As Double,ByVal c As Double)Double,ByVal b A
8、s Double,ByVal c As Double)As Double As Double 求三角形面积,有三个参数求三角形面积,有三个参数 Dim l,s As Double Dim l,s As Double l=(a+b+c)/2 l=(a+b+c)/2 s=Math.Sqrt(l*(l-a)*(l-b)*(l-c)s=Math.Sqrt(l*(l-a)*(l-b)*(l-c)Return(s)Return(s)End Function End FunctionEnd Class End Class 然后设计一个验证窗体,窗体的设计界面如图然后设计一个验证窗体,窗体的设计界面如图9-6
9、9-6所示。在所示。在Button1Button1的的ClickClick事件过程中输入如下代码:事件过程中输入如下代码:Private Sub Button1_Click(Private Sub Button1_Click((省略参数)(省略参数))Handles)Handles Button1.ClickButton1.Click Dim shape As New OverTest()Dim shape As New OverTest()定义类的实例定义类的实例 Label1.Text=R is 3.0,Area is +Label1.Text=R is 3.0,Area is +CStr
10、(shape.area(3.0)CStr(shape.area(3.0)求圆的面积求圆的面积 求矩形的面积求矩形的面积 Label2.Text=A is 3.0,B is 4.0,Area is +Label2.Text=A is 3.0,B is 4.0,Area is +CStr(shape.area(3.0,4.0)CStr(shape.area(3.0,4.0)求三角形的面积求三角形的面积 Label3.Text=A is 3.0,B is 4.0,C is 5.0,Area is +Label3.Text=A is 3.0,B is 4.0,C is 5.0,Area is +CSt
11、r(shape.area(3.0,4.0,5.0)CStr(shape.area(3.0,4.0,5.0)End Sub End Sub图9-6 程序设计界面 图9-7 程序运行界面 9.1.7 属性及其定义属性及其定义 格式格式:Dim Dim 变量名变量名 As As 数据类型数据类型 定义存放属性值定义存放属性值的变量的变量 Public|ReadOnly|WriteOnly Property Public|ReadOnly|WriteOnly Property 属性名属性名()As()As 数据数据类型类型 GetGetGetGet属性过程属性过程 Return Return 变量名变
12、量名 End GetEnd Get Set(Byval Value As Set(Byval Value As 数据类型数据类型)SetSet属性过程属性过程 变量名变量名=Value=Value End SetEnd Set End PropertyEnd Property9.1.8 事件的声明及其激发事件的声明及其激发(1 1)在类中使用)在类中使用EventEvent语句声明一个事件。语句声明一个事件。格式格式:Public Event Public Event 事件名事件名(参数列表参数列表)(2 2)在类的某个方法中,使用)在类的某个方法中,使用RaiseEventRaiseEven
13、t语句激语句激发事件。发事件。格式格式:RaiseEvent RaiseEvent 事件名事件名(实参列表实参列表)【例9-6】事件的演示。编写一个求矩形面积的应用程序,程序的设计界面如图9-10所示,程序运行时改变了矩形的宽和高,将立即显示出矩形的面积,如图9-11所示。要求:把矩形定义成一个类,宽和高定义成矩形的属性。图9-10 程序设计界面 图9-11 程序运行界面 9.1.9 类的继承类的继承 1继承的实现 格式格式:Class Class 派生类名派生类名 Inherits Inherits 基类名基类名 派生类的成员定义派生类的成员定义 End Class End Class2窗体
14、的继承与应用9.1.10 多态性多态性 多态性是指同一操作作用于不同类的实例,这些类多态性是指同一操作作用于不同类的实例,这些类对它进行不同的解释,从而产生不同的执行结果的对它进行不同的解释,从而产生不同的执行结果的现象。现象。编译时的多态性是通过方法的重载实现的,由于这编译时的多态性是通过方法的重载实现的,由于这些同名的重载方法或者参数类型不同或者参数个数些同名的重载方法或者参数类型不同或者参数个数不同,所以编译系统在编译期间就可以确定用户所不同,所以编译系统在编译期间就可以确定用户所调用的方法是哪一个重载方法。调用的方法是哪一个重载方法。运行时的多态性是通过继承和重写来实现的。运行时的多态
15、性是通过继承和重写来实现的。9.2 典型实例练能力典型实例练能力 9.2.1 典型实例一:典型实例一:Time类的创建与演示类的创建与演示【实例题目】编写一个名为Time1的类,该类能够存放时间信息,并且具有设置时间和显示时间的功能。然后编程对该类进行测试。测试界面如图9-23所示。图9-23 时钟类测试界面 9.3 上机练习重应用上机练习重应用 9.3.1 9.3.1 上机练习一:栈模型的实现上机练习一:栈模型的实现上机练习一:栈模型的实现上机练习一:栈模型的实现 【练习题目】【练习题目】栈是一种重要的数据结构,在内存中占用连续栈是一种重要的数据结构,在内存中占用连续的存储单元。栈有两个端点
16、,固定的栈底和浮动的存储单元。栈有两个端点,固定的栈底和浮动的栈顶。为指示栈顶位置还应设一个指示成员变的栈顶。为指示栈顶位置还应设一个指示成员变量(称为栈顶指示器)。栈有两种基本操作:量(称为栈顶指示器)。栈有两种基本操作:pushpush(压栈)和(压栈)和poppop(出栈),压栈是向栈顶位(出栈),压栈是向栈顶位置写入一个元素,然后使栈顶指示器加置写入一个元素,然后使栈顶指示器加1 1,出栈,出栈是先使栈顶指示器减是先使栈顶指示器减1 1,再把该位置的元素读出,再把该位置的元素读出来。栈及其操作模型如图来。栈及其操作模型如图9-249-24所示,所示,spsp代表栈代表栈顶指示器。请编程实现栈的模型并对之进行测试,顶指示器。请编程实现栈的模型并对之进行测试,测试的界面如图测试的界面如图9-259-25所示。所示。图9-25 栈演示运行界面 9.3.2 上机练习二:从shape类派生出Rectangle、Circle等具体形状类 【练习题目】定义一个shape抽象类,利用它作为基类派生出Rectangle、Circle等具体形状类,已知具体形状类均具有两个方法GetArea和GetPerim,分别用来求形状的面积和周长。最后编写一个测试程序对产生的类的功能进行验证,验证程序的运行界面如图9-26所示。图9-26 形状类及其派生类验证运行界面