第八章 Visua| BaSic net面向 对象程序设计开发 知识点: 类和对象 对象的生命周期 继承 接口 多态性 自从推出 Visual basic40版本以来,Vsua|Basc已具备了强大的 面向对象的功能,VB.NET更大大增强了这些功能,还支持完全面 向对象的语言所需要的4个主要概念:抽象性、封装性、多态性和 继承性。下面将在本章具体讨论这些概念
第八章 Visual Basic .NET面向 对象程序设计开发 知识点: 类和对象 对象的生命周期 继承 接口 多态性 自从推出Visual Basic 4.0版本以来,Visual Basic已具备了强大的 面向对象的功能,VB.NET更大大增强了这些功能,还支持完全面 向对象的语言所需要的4个主要概念:抽象性、封装性、多态性和 继承性。下面将在本章具体讨论这些概念
81概述 过程式程序设计是一种自上而下、逐层细化的设计方式,在过程 式编程中,用一个main函数来概括整个系统,在man函数中,通过 系列的控制流程和嵌套的函数调用,最终完成整个系统的功能 在这个过程中,函数是处理问题和划分功能的基本单位,通过自上 而下的设计,上层函数当需要完成某个子功能时,只需要调用相应 的子函数而不需要知道子函数的具体实现方式。这种逐层细化的方 法使得过程设程序设计的程序结构更加优雅。 图展示了一个典型的过程式程序 SubFunction() ibFunction20 SubFunction() Sub1 Sub10 Sub3 Sub10 Sub3 Sub20
8.1 概 述 过程式程序设计是一种自上而下、逐层细化的设计方式,在过程 式编程中,用一个main函数来概括整个系统,在main函数中,通过 一系列的控制流程和嵌套的函数调用,最终完成整个系统的功能。 在这个过程中,函数是处理问题和划分功能的基本单位,通过自上 而下的设计,上层函数当需要完成某个子功能时,只需要调用相应 的子函数而不需要知道子函数的具体实现方式。这种逐层细化的方 法使得过程设程序设计的程序结构更加优雅。 图展示了一个典型的过程式程序
面向对象式程序设计一种自下而上的程序设计方法。面向对象 设计往往从问题的一部分着手,一层一层的逐步描述出整个系统的 全貌。面向对象设计以数据为中心(过程式设计以操作为中心), 数据(属性)和对数据的操作(方法)共同构成类,一种数据对应 系列的操作,这样就克服了过程式编程中数据的操作分布在系统 的各个位置的缺点,也使得数据的操作更加安全。只需要类的设计 员来保证数据的操作合法性 Server 客户( Client)关系 Parent 继承关系 Child
面向对象式程序设计一种自下而上的程序设计方法。面向对象 设计往往从问题的一部分着手,一层一层的逐步描述出整个系统的 全貌。面向对象设计以数据为中心(过程式设计以操作为中心), 数据(属性)和对数据的操作(方法)共同构成类,一种数据对应 一系列的操作,这样就克服了过程式编程中数据的操作分布在系统 的各个位置的缺点,也使得数据的操作更加安全。只需要类的设计 员来保证数据的操作合法性。 客户(Client)关系 继承关系
82类 很久以来,VB因为缺乏完善的面向对象支持、缺乏高效的错误 处理机制和性能表现不佳。 VB. NET彻底改变了这种情况 VB. NET提供了完整的面向对象支持,包括封装 ( Encapsulation),继承( Inheritance)和多态 ( Polymorphism),是一种真正的面向对象编程语言。 封装 封装是指对象只将需要公开的方法和属性公开,而隐藏外部 不需要了解的方法和属性。这种设计方式将一些细节的问题隐 藏了起来。使得系统的开发变得更加有层次结构和简单。举个 例子来说,一辆汽车,驾驶员只需要知道踩油门的时候汽车会 启动并前进,而不需要知道踩油门的时候汽车内部的机械装置 以及燃料等的工作过程,这样,对于驾驶员来说问题就变得非 常简单了,甚至在多年以后,驾驶员都不需要知道,其实汽车 的设计者早已经更改了汽车内部的工作过程
8.2 类 很久以来,VB因为缺乏完善的面向对象支持、缺乏高效的错误 处理机制和性能表现不佳。VB.NET彻底改变了这种情况。 VB.NET提供了完整的面向对象支持,包括封装 (Encapsulation),继承(Inheritance)和多态 (Polymorphism),是一种真正的面向对象编程语言。 封装是指对象只将需要公开的方法和属性公开,而隐藏外部 不需要了解的方法和属性。这种设计方式将一些细节的问题隐 藏了起来。使得系统的开发变得更加有层次结构和简单。举个 例子来说,一辆汽车,驾驶员只需要知道踩油门的时候汽车会 启动并前进,而不需要知道踩油门的时候汽车内部的机械装置 以及燃料等的工作过程,这样,对于驾驶员来说问题就变得非 常简单了,甚至在多年以后,驾驶员都不需要知道,其实汽车 的设计者早已经更改了汽车内部的工作过程。 封装
821类的声明 如何使用ⅴb。Net声明一个类 要声明一个类需要以下步骤: (1)单击“文件”菜单上的“新建项目”,创建一个项 目。“新建项目”对话框随即出现,如图所示。 新建项目 项目类型(巴): 模板(D B注 曰- Visual basic Windows应用类库 用 Windows控件web控件库 数据库 初学者工具包 其他语言 Windows服务空项目 分布式系统解决方案 Reports应 中其他项目类型 -测试项目 搜索联机模 用于创建具有 Windows用户界面的应用程序的项目 名称(): WindowsApplication1
8.2.1 类的声明 如何使用vb。Net声明 一个类 要声明一个类需要以下步骤: (1)单击“文件”菜单上的“新建项目”,创建一个项 目。“新建项目”对话框随即出现,如图所示
2)从 sual basic项目模板列表中选择“ Windows应用程序”,以 显示新项目。在“项目”菜单中单击“添加类”按钮,将一个新类添 加到项目中,弹出如图所示对话框。 项目P)生成(B调试()数据()工具① 添加 Windows窗体 添加用户控件①D 添加模块I P添加类 添加新项(w) Ctrl+shift+A 习添加现有项(G) 单击添加新类,弹出如图所示对话框,选择要添加的类 加新项 windows Application1 数据集s0L数据厍报表 ystal报表 。,。离。品回 L添加8取消」
(2)从Visual Basic项目模板列表中选择“Windows应用程序”,以 显示新项目。在“项目”菜单中单击“添加类”按钮,将一个新类添 加到项目中,弹出如图所示对话框。 单击添加新类,弹出如图所示对话框,选择要添加的类
(3)给新模块 firstclass. vb命名,然后单击“打开”按钮以显示新类的 代码,如图所示。 stclass,vb Forml向b(设计]起始页 4)单击标签中的Form1b[设计标签,切换到设计窗体,在窗体上 添加一个 Button按钮和一个 TextBox文本框,均采用默认名称 Button1和 TextBox1 deForm TextBox1 But t on1 Button I
(3)给新模块firstclass.vb命名,然后单击“打开”按钮以显示新类的 代码,如图所示。 (4)单击标签中的Form1.vb[设计]标签,切换到设计窗体,在窗体上 添加一个Button按钮和一个TextBox文本框,均采用默认名称Button1和 TextBox1
(5)在cass框架内添加如下代码 Private str As String Public Sub output str= Form1.Text Box1. Text Console. WriteLine(str) End Sub (6)运行,在文本框内输入“ MY FIRST CLASS”,单 击“ Button1”按钮,结果如图所示。 MY FIRST CLASS 输入 点击 结果 显示以下输出(5:调试 早|4鸟回 MY FIRST CLASS
(5)在class框架内添加如下代码: Private str As String Public Sub output() str = Form1.TextBox1.Text Console.WriteLine(str) End Sub (6)运行,在文本框内输入“MY FIRST CLASS”,单 击“Button1”按钮,结果如图所示
VB. net使用 Class关键字来定义类,其格式如下: 修饰符Cass类名。 End class 修饰符包括 Public Private protect friend等,它声明元素的访问级别 Public 声明语句中的 Public( Visual basic)关键字表明可从以下位置访问元素:同 项目中任意位置的代码,引用该项目的其他项目,以及由该项目生成的任 何程序集 Protected 声明语句中的 Protected( Visual basic)关键字表明仅可以从同一个类内部 或从该类派生的类中访问元素。 Friend 声明语句中的 Friend( Visual basic)关键字表明可以从同一程序集内部访问 元素,而不能从程序集外部访问 Protected friend 声明语句中的 Protected和 Friend关键字一同出现时,表明可从以下位置访问 元素:派生类或同一程序集内,或两者皆可 Private 声明语句中的 Private( sual Basic)关键字表明仅可以从同一模块、类或 结构内访问元素
VB.net使用Class关键字来定义类,其格式如下: 修饰符 Class 类名。 End Class。 Public 声明语句中的Public(Visual Basic)关键字表明可从以下位置访问元素:同 一项目中任意位置的代码,引用该项目的其他项目,以及由该项目生成的任 何程序集。 Protected 声明语句中的Protected(Visual Basic)关键字表明仅可以从同一个类内部 或从该类派生的类中访问元素。 Friend 声明语句中的Friend(Visual Basic)关键字表明可以从同一程序集内部访问 元素,而不能从程序集外部访问。 Protected Friend 声明语句中的Protected和Friend关键字一同出现时,表明可从以下位置访问 元素:派生类或同一程序集内,或两者皆可。 Private 声明语句中的Private(Visual Basic)关键字表明仅可以从同一模块、类或 结构内访问元素。 修饰符包括Public Private Protect Friend等,它声明元素的访问级别
822类的成员 类的成员包括属性( Property),方法( Method),字段( Field), 事件( Event),以及构造类的构造器( Constructor)。 类的成员可以是以下两种类型之一:静态成员,实例成员 实例成员依赖于该类创建的实例,当重新创建一个类的一个实例的时候,系 统会在内存中为该实例的每一个实例成员分配内存空间,同一个类的多个实 例之间的存储地址是不一样的。实例成员依赖于具体的实例对象。 静态成员(也称为共享成员)是该类的所有实例(对象)共享的成员,与实例 成员不同的是类为自己的所有静态成员维护一个统一的版本,当通过类名或实 例名引用该类的静态成员的时候,实际上都是引用的同一个内存地址上的同 个值
8.2.2 类的成员 类的成员包括属性(Property),方法(Method),字段(Field), 事件(Event),以及构造类的构造器(Constructor)。 类的成员可以是以下两种类型之一:静态成员,实例成员。 实例成员依赖于该类创建的实例,当重新创建一个类的一个实例的时候,系 统会在内存中为该实例的每一个实例成员分配内存空间,同一个类的多个实 例之间的存储地址是不一样的。实例成员依赖于具体的实例对象。 静态成员(也称为共享成员)是该类的所有实例(对象)共享的成员,与实例 成员不同的是类为自己的所有静态成员维护一个统一的版本,当通过类名或实 例名引用该类的静态成员的时候,实际上都是引用的同一个内存地址上的同一 个值