版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
十天掌握VB.NET程序设计基础
—第七讲面向对象的程序设计潘志红ITCAST签约讲师本讲内容面向对象程序设计基础类对象继承多态性接口模块与类1.面向对象程序设计基础基本概念对问题领域内人、物、事物等的抽象。面向对象的基本思想从现实世界中客观世界存在的事物(对象)出发构造系统,并在系统中运用人类的自然思维方式。
面向对象程序设计(Object-OrientedProgramming,简记为OOP
)的含义面向对象程序设计不仅是一些具体的软件开发技术,它是一整套关于如何看待软件系统与现实世界的关系,以何种观点来研究对象并进行求解,以及如何进行系统构造的软件方法学。
类和对象对象:通常作为计算机模拟思维,表示真实世界的抽象。类:是一种抽象,实质上定义的是一种对象类型.它描述了属于该类型对象的性质,它将具有相同数据结构(属性)和行为(方法)的对象聚集成一个类
类是具有相同属性和操作的一组对象的集合。类是对一类对象的抽象类定义了这一类对象所共有的特征和行为。类是人类抽象思维的产物。OOPL中的类相当于一种数据类型。
2.类抽象与具体类是对象的抽象描述,是对象的模板。对象是类的实例。“这是一个苹果” 等价于“这是苹果类的一个实例”类对象抽象实例化面向对象的特性抽象性现实世界的物体抽象成对象现实世界的物体之间的关系抽象成软件系统中对象之间的关系对具有相同属性和方法的对象抽象成类继承性允许基于现存类创建新类,新类继承基类的所有属性、方法和事件,并可以附加新属性和方法以进行优化。多态性对不同事物的同一操作时的不同反应。允许在不同类中定义同名方法或属性,这对于面向对向的编程是非常重要的,因为可以调用同名方法而无论对象的类型如何.运算符重载函数重载
30+40Print(20)35.5+21.3Print(“abcde”)Object1+Object2Print(‘a’)VB.NET中面向对象的特性封装性
ClassEmployee.....EndClass继承性
PublicClassForm1InheritSystem.WinForms.Form重载
OverloadsSubDisplay(ByvaltheCharAsChar)...EndSubOverloadsSubDisplay(ByvaltheIntAsInteger)...EndSub多态
DbCon1.open()DataReader1.open()添加类在VB.NET中可以直接添加一个类。添加类的操作步骤为:①在集成开发环境中新建一个项目。②单击系统菜单“文件”的“添加新项”选项,进入“添加新项”对话框。③选择“类”选项,单击“打开”按钮,进入类的创建编辑窗口。在“解决方案资源管理器”窗口中,同时出现一个新的以“.vb”为扩展名的文件。说明:在一个“.vb”文件中可以包含多个类、模块以及其他代码,用户可以向其中添加代码。在VB.NET中,文件的类型是由文件的内容决定的,而不是文件的扩展名。
类的声明在VB.NET中,类的实现包括两部分内容:类的说明和类的主体。其语法格式为:
[〈类说明修饰符〉]Class〈类名〉 [〈类主体〉]EndClass
说明:
①〈类说明修饰符〉包括Public、Private、Friend和Shared等,用来说明访问权限。默认值是Public。②类名是由程序员自己定义的合法的字符串,每个类说明都必须有类名。③每个类中,代码都必须有关键字Class和EndClass对应,使用该关键字的目的是为了在一个源文件中包含多个类。④在〈类主体〉中编写程序代码。
类的成员类的成员可以分为两类:类本身所声明的和从其他基类中继承的。类的成员有以下几种类型:①成员常量:类中的常数。②成员变量:类中声明的变量。③成员方法:用于执行一定操作或动作的子过程或函数。④成员属性:用于设置和检索类中密切相关的数据值。⑤成员事件:用于感知发生了什么事情,是类对外界的响应。⑥构造方法:用于完成类的初始化工作。⑦共享成员和共享方法:可以跨类存在,相当于一类对象的全局变量和全局方法。⑧基类:如果一个类是从另一个继承而来的,那么该类就包含它的父类。⑨接口:对象与其他对象交互的接口。
类和名称空间
名称空间是类的一种组织结构,它将父类命名为名称空间,即赋予某个名称,所有由它衍生的子类都是这个名称空间的成员,每个下一级的子类也都拥有自己的子名称空间,因而构成呈树状分布的一个名称空间集合。
用户也可以自己声明一个名称空间。VB.NET中名称空间使用块结构来定义。其语法格式为:
NameSpace[〈名称空间别名〉]ClassClass1...EndClassClassClass2...EndClass...EndNameSpace创建成员变量成员变量和程序的一般变量一样,需要先声明。对于成员变量,主要通过以下几个关键字来控制变量的作用域:①Private:私有成员,仅适用于声明它的类中的代码②Friend:友元,仅适用于声明它的项目中的代码③Protected:保护成员,仅适用于类内部成员和它的继承类访问④Public:公有成员,适用于类外的代码,具有最大的开放性创建成员的属性可以创建成员的属性。其语法格式为:
[〈访问权限〉]Property〈成员名称〉As〈成员类型〉GetReturnPrivate_ValueEndGetSetPrivate_Value=ValueEndSetEndProperty访问权限:Public(公有属性,系统默认值)Protected(保护属性,类家族可以使用)Shared(共享属性)NotOverridable(不可重定义属性)Overridable(可重定义属性)Override(重载属性)ReadOnly(只读属性)WriteOnly(只写属性)创建成员的方法方法是对象执行的动作,是在类中编码的子过程或函数。它可以利用自身的数据,处理生成输出结果或者执行服务程序的信息。其语法格式为:
[〈访问权限〉]〈方法类型〉〈方法名〉([〈成员列表〉])…Return〈方法类型〉访问权限:New(构造方法)Friend(友元方法)Public(公有方法)Protected(保护方法)Shared(共享方法)Overridable(可重定义方法)Override(重载方法)方法类型:Sub和Function
创建成员的事件事件为类和类的实例即对象提供的向外界发出通知的能力。通过事件,对象可以响应用户的操作,与用户进行交互。在类中创建事件的语法格式为:
[〈访问权限〉]Event〈事件名称〉(〈参数列表〉)publicSub〈方法名称〉…RaiseEvent〈事件名称〉EndSub共享方法在VB.NET中,一个类不仅可以拥有所有常规的方法和属性,还可以拥有一些不需要创建类的实例方法,这些方法就是共享方法。一个共享方法不必像通常那样通过对象实例来访问,而可以更直接地从类中访问。PublicClassMathSharedFunctionAdd(byvaln1asdecimal,byvaln2asdecimal)asdecimalReturnn1+n2EndFunctionEndClassPrivateSubButton1_Click(BycalsenderAsObject,ByvaleAsEventArgs)HandlesButton1.ClickDimresultasDecimalresult=Math.Add(5,10)Label1.text=resultEndSub共享成员
共享成员就是在所有类和所定义派生类的实例之间共享的方法、属性、字段和事件。所有使用类创建的对象都可以访问相同的数据、共享实现过程,并且收到相同的激发事件。
PublicClassShareClassPublicSharedSharedValueAsStringPublicSharedSubShareMethod()
MsgBox("Thisisasharedmethod.")
EndSubEndClassSubTestShared()DimShared1AsNewShareClass()'创建了类的一个实例.DimShared2AsNewShareClass()'创建了类的第二个实例.Shared1.SharedValue="ShareValue1"
'给共享字段赋值.
Shared2.SharedValue="ShareValue2"'重写共享字段的值ShareClass.ShareMethod()'不用创建实例就可以调用类的方法.EndSub3.对象
VB.NET使用New语句来创建对象,用户可以在任何地方使用New语句。利用New语句可以创建VB.NET提供的对象,也可以创建用户自定义的对象。例如,创建一个VB.NET提供的对象,代码如下:
DimObjectLabelAsLabelObjectLabel=NewLabel或
DimObjectLabelAsNewLabel
对象与普通变量一样,具有一定的类型、具有一定的作用范围。该段代码首先声明一个对象,再通过New方法实例化了一个对象,接着就可以在程序中使用对象的属性、方法和事件俩。创建用户自定义对象。
对象的使用1.对象的属性对象的属性分为4类:只读属性、只写属性、读写属性和集合属性。只读属性是只能在运行阶段读取的属性;只写属性是使用对象的,必须写入的属性,而用户无法读出它的值;读写属性是在运行阶段可以设置、也可以读取属性值的属性;集合属性包含着一类相似的属性值或项目,它们还具有自己的属性和方法。2.对象的方法对象的方法可以直接使用。VB.NET会自动在方法名后加一对括号“()”。方法可以有参数,也可以不带参数。3.对象的事件对象的事件也可以直接使用。当创建了一个对象后,可以在代码编辑器窗口的“方法名称”下拉列表框中选择,也可以从键盘输入。对象的终止
取消对象的引用,只是将该对象设为空对象,而该对象还在内存中存在,还可以继续使用,只不过是暂时在内存中被挂起。
VB.NET使用名为“垃圾收集”方案来终止对象。在特定的时间,一个任务会在所有的对象中运行来查找哪些已经没有被引用的对象,并且将这些对象终止,这就是所谓的垃圾收集。因为VB.NET是以事件为驱动的,所以没有确定性结束,不能预计何时终止对象。直到垃圾收集程序运行之后才将它从内存中清除。垃圾收集的主要优点是它清除了由引用计数器带来的循环应用问题。如果两个对象相互有引用,并且在程序中没有其他相互引用的代码时,垃圾收集程序就会发现它们并将它们终止。垃圾收集还有一个潜在的优点:在对象被取消引用的时候不用化许多的精力在终止对象上,以减少对用户的影响。
4.继承继承的最大好处就是可以实现代码复用,子类从父类中继承各种特征,只要在子类中添加自己的特性代码就可以形成新的类。基本继承的语法格式为:PublicClass〈类名〉Inherits〈父类名〉…EndClass限制继承在默认状态下,创建的任何类都是可以用做基类。但有时需要创建一个不能被继承的类,这时可以在类的声明中使用NotInheritable关键字:
PublicNotInheritableClassHeadMaster……EndClasss使用NotInheritable关键字以后,其他代码都不能再使用Inherits来创建一个由这个基类继承而来的子类。也可以限制继承父类中的部分方法和变量。通常当通过继承创建子类的时候,子类从父类中继承了全部的Public和Friend的属性、变量和方法。如果在父类中声明了一个Private的方法和变量,那么在它的子类中就不能得到这个类的方法和变量。跨语言继承在.NET环境中实现跨语言继承是非常容易的。.NET环境为用户提供了不同语言编写的组件之间相互调用的良好平台。VB.NET可以创建处理代码,这些代码是运行在.NET框架上的。所有的管理代码可以和其他类型的处理代码交互作用,而不管用户是用什么编程语言来创建的。实际上,许多的.NET系统类库是在C#上编写的,而用户在上编写VB.NET程序的时候,可以继承这些类,将这些类作为基类使用。可视化继承VB.NET的继承特性不仅仅局限与代码方式的继承,而且支持可视化继承,也就是指当用户用Windows窗体和控件等创建一个新的窗体,通过继承用户可以得到和这个窗体具有相同布局、控件和行为的窗体。也可以通过可视化继承创建自己的Windows控件。在VB.NET中窗体是一个类而不是一个实例,用户编写的Windows应用程序,是通过不断向类中添加对象、属性、方法和事件等代码完成的。向Windows应用程序添加一个继承的窗体和添加一个新的窗体是没有区别的。单击系统菜单“文件”的“添加新项”选项,进入“添加新项”对话框。选择“Windows窗体”选项,单击“打开”按钮,就向Windows应用程序添加一个继承的窗体。这种可视化继承可以称的上是所见即所得,这样可以大大提高编程的效率。5.多态性多态性是指当两个或两个以上的类具有相似的属性或方法的情况下,编译程序自动根据这些属性和方法找到相应对象的能力。多态性通常与继承有关,即多态性常常伴随着对类的继承及重载而存在。此外,多态性还可以存在于独立的类中,即不相干的类之间也可以利用多态性来实现对一些接口的共享。PersonTeacherStudent6.接口接口相当于一种特殊化的类。在这种类中只定义了一系列的属性、方法和事件,而没有更多的程序操作代码。接口的实现可以是类,也可以是结构。接口的定义用的是Interface关键字,实现时用的是Implements关键字。PublicInterfaceIHenrySubsubX(ByValxAsInteger)FunctionfcnY(ByValyAsInteger)AsLongPropertyproZ()AsStringEndInterfacePublicClassCHenryImplementsIHenryPrivatez1AsStringSubsubX(ByValxAsInteger)ImplementsIHenry.subX'填写实现代码
EndSubFunctionfcnY(ByValyAsInteger)AsLongImplementsIHenry.fcnY'填写实现代码
EndFunctionPropertyproZ()AsStringImplementsIHZGetReturnz1EndGetSet(ByValValueAs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省西安市雁塔区2026年初三下第一次检测试题考试物理试题含解析
- 急诊科常见急症护理
- 2026年大学大一(康复医学)康复医学基础理论测试题及答案
- 2026年大学大一(机械工程)流体力学阶段测试试题及答案
- 情志因素与护理调节
- 护理查房流程与技巧
- 护理学基础:病人对环境的需求与评估
- 护理课件资源平台及使用指南
- 2026六年级数学下册 百分数估算策略
- 2026二年级数学上册 观察物体知识点
- 建立自信教学课件
- 2025年中国塑料制品出口分析及各国进口政策影响白皮书-特易资讯
- IMPA船舶物料指南(电子版)
- 妇科课件宫颈癌筛查
- 服装设计思维与创新李璞87课件
- 海南华电定安50MW100MWh储能系统技术规范书(一)
- 2025年全国氧化工艺危险化学品作业证考试题库(含答案)
- 2025年山东省委党校在职研究生招生考试(政治理论)历年参考题库含答案详解(5卷)
- 中国早期管理思想课件
- 监理企业风险管理制度
- DB31/T 1086-2018入侵报警系统应用基本技术要求
评论
0/150
提交评论