第9章 面向对象的程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图9-10 程序设计界面
图9-11 程序运行界面
9.1.9 类的继承
1.继承的实现
[格式]:Class 派生类名 Inherits 基类名 派生类的成员定义 End Class
2.窗体的继承与应用
9.1.10 多态性
多态性是指同一操作作用于不同类的实例,这些类 对它进行不同的解释,从而产生不同的执行结果的 现象。 编译时的多态性是通过方法的重载实现的,由于这 些同名的重载方法或者参数类型不同或者参数个数 不同,所以编译系统在编译期间就可以确定用户所 调用的方法是哪一个重载方法。 运行时的多态性是通过继承和重写来实现的。
【例9-4】 方法重载的演示。新建一个项目,为项目添加 一个类模 块,类模块中的程序代码下: Public Class OverTest Public Overloads Function area(ByVal r As Double) As Double '求圆的面积,一个参数 Return (Math.PI * r * r) End Function Public Overloads Function area(ByVal a As Double, ByVal b As Double) As Double '求矩形面积,有两个参 数 Return (a * b) End Function
(1)类和对象 (2)属性、方法与事件 (3)封装 (4)继承 (5)重载 (6)多态性
9.1.2 命名空间
1.命名空间的概念
命名空间(NameSpace)是组织类的一种机制, 在.NET框架中,有一个巨大的类库,该类库提供了在 应用程序设计中所需的大部分功能。
2.命名空间的使用百度文库
(1)直接定位命名空间 (2)使用Imports关键字引用命名空间
3.对象的使用
9.1.4 类成员的种类及其可访问性
1.类成员的分类 常量 域 方法 属性 事件 构造器 析构器
2.类成员的可访问性
公有成员(Public) 私有成员(Private) 保护成员(Protected) 朋友成员(Friend) 保护友员(Protected Friend)
9.1.8 事件的声明及其激发
(1)在类中使用Event语句声明一个事件。
[格式]:Public Event 事件名(参数列表)
(2)在类的某个方法中,使用RaiseEvent语句激 发事件。
[格式]:RaiseEvent 事件名(实参列表)
【例9-6】 事件的演示。编写一个求矩形 面积的应用程序,程序的设计界面如图910所示,程序运行时改变了矩形的宽和高, 将立即显示出矩形的面积,如图9-11所示。 要求:把矩形定义成一个类,宽和高定义 成矩形的属性。
图9-25 栈演示运行界面
9.3.2 上机练习二:从shape类派生出 Rectangle、Circle等具体形状类
【练习题目】 定义一个shape抽象类,利用它作为基类 派生出Rectangle、Circle等具体形状类, 已知具体形状类均具有两个方法GetArea 和GetPerim,分别用来求形状的面积和周 长。最后编写一个测试程序对产生的类的 功能进行验证,验证程序的运行界面如图 9-26所示。
然后设计一个验证窗体,窗体的设计界面如图9-6所示。在 Button1的Click事件过程中输入如下代码: Private Sub Button1_Click(……(省略参数)) Handles Button1.Click Dim shape As New OverTest() '定义类的实例 Label1.Text = "R is 3.0, Area is " + CStr(shape.area(3.0)) '求圆的面积 '求矩形的面积 Label2.Text = "A is 3.0,B is 4.0,Area is " + CStr(shape.area(3.0, 4.0)) '求三角形的面积 Label3.Text = "A is 3.0,B is 4.0,C is 5.0,Area is " + CStr(shape.area(3.0, 4.0, 5.0)) End Sub
第9章 面向对象的程序设计
本章要点: 面向对象的基本概念 类的定义与对象的声明 构造器和析构器 类的共享成员和非共享成员 方法重载及其编程实现 类的继承与多态性的编程实现 类的属性的实现
9.1 循序渐进学理论
9.1.1 面向对象程序设计概述
1.面向对象程序设计的由来 2.面向对象程序设计的基本概念
Public Overloads Function area(ByVal a As Double, ByVal b As Double, ByVal c As Double) As Double '求三角形面积,有三个参数 Dim l, s As Double l = (a + b + c) / 2 s = Math.Sqrt(l * (l - a) * (l - b) * (l - c)) Return (s) End Function End Class
图9-26 形状类及其派生类验证运行界面
3.类的共享成员和非共享成员
9.1.5 类的构造器和析构器
1.构造器
构造器(又称构造函数)主要用来为对象分配存储空 间,完成初始化操作(如给类的成员变量赋值等)。
2.析构器
析构器(又称析构函数)是在对象销毁时(对象离开 作用范围或被赋值为Nothing时)被调用,常用来释放对 象占用的存储空间。
9.1.6 方法及方法的重载
9.2 典型实例练能力
9.2.1 典型实例一:Time类的创建与演示 【实例题目】 编写一个名为Time1的类,该类能够存放 时间信息,并且具有设置时间和显示时间 的功能。然后编程对该类进行测试。测试 界面如图9-23所示。
图9-23 时钟类测试界面
9.3 上机练习重应用
9.3.1 上机练习一:栈模型的实现 【练习题目】 栈是一种重要的数据结构,在内存中占用连续 的存储单元。栈有两个端点,固定的栈底和浮动 的栈顶。为指示栈顶位置还应设一个指示成员变 量(称为栈顶指示器)。栈有两种基本操作: push(压栈)和pop(出栈),压栈是向栈顶位 置写入一个元素,然后使栈顶指示器加1,出栈 是先使栈顶指示器减1,再把该位置的元素读出 来。栈及其操作模型如图9-24所示,sp代表栈 顶指示器。请编程实现栈的模型并对之进行测试, 测试的界面如图9-25所示。
图9-6 程序设计界面
图9-7 程序运行界面
9.1.7 属性及其定义
[格式]:Dim 变量名 As 数据类型 '定义存放属性值 的变量 Public|ReadOnly|WriteOnly Property 属性名() As 数据 类型 Get 'Get属性过程 Return 变量名 End Get Set (Byval Value As 数据类型) 'Set属性过程 变量名=Value End Set End Property
3.命名空间的定义
9.1.3 类和对象的创建
1.类的创建
【例9-1】 定义一个Student类,用来对学生的 信息和功能进行描述。假设学生具有学号、姓名、 年龄、性别、平均成绩等特征,并且具有设置学 生特征和显示学生特征的功能。 2.对象的创建
[格式]:Declare 对象变量名 As New 类名([参数])