面向对象编程类与对象.ppt

上传人:qwe****56 文档编号:70015843 上传时间:2023-01-14 格式:PPT 页数:35 大小:552.50KB
返回 下载 相关 举报
面向对象编程类与对象.ppt_第1页
第1页 / 共35页
面向对象编程类与对象.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《面向对象编程类与对象.ppt》由会员分享,可在线阅读,更多相关《面向对象编程类与对象.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面向对象编程面向对象编程类与对象类与对象第四章章节内容章节内容 面向对象的基本概念面向对象的基本概念 在在VB.NET中使用类中使用类 创建和使用对象创建和使用对象 共享成员共享成员 面向对象的基本概念面向对象的基本概念 对象和类在面向对象的世界里,一切概念上的存在,小至单个整型在面向对象的世界里,一切概念上的存在,小至单个整型数或字符串,大至由许多部件组成的系统,均可称作数或字符串,大至由许多部件组成的系统,均可称作对象对象。对象是对象是属性属性和和行为行为(数据数据和和操作操作)的封装体,其中还包括)的封装体,其中还包括和其它对象进行通信的设施,而行为通常称作和其它对象进行通信的设施,而行

2、为通常称作方法方法。类类对象按照不同的性质划分为不同的对象按照不同的性质划分为不同的类类。同类对象在数据和。同类对象在数据和操作性质方面具有共性。操作性质方面具有共性。在面向对象程序设计语言中,程序由一个或多个类组成。在面向对象程序设计语言中,程序由一个或多个类组成。在程序运行过程中根据需要,创建类的对象,即其在程序运行过程中根据需要,创建类的对象,即其实例实例。因此类是静态概念,对象是动态概念,类是对象之上的抽因此类是静态概念,对象是动态概念,类是对象之上的抽象。有了类之后,对象则是类的具体化,是类的实例象。有了类之后,对象则是类的具体化,是类的实例。字段、属性、方法字段、属性、方法字段字段

3、(field)和)和属性属性(property)都是类用于保存数据的)都是类用于保存数据的成员。不同之处在于,字段只是类公开的简单变量,而属成员。不同之处在于,字段只是类公开的简单变量,而属性可以使用属性过程控制如何设置或返回值。性可以使用属性过程控制如何设置或返回值。方法方法(method)也称作)也称作行为行为(behavior),指定义于某一),指定义于某一特定类上的操作与法则,具有同类的对象只可为该类的方特定类上的操作与法则,具有同类的对象只可为该类的方法所操作。法所操作。换言之,这组方法表达了该类对象的动态性质,而对于其换言之,这组方法表达了该类对象的动态性质,而对于其它类的对象可能

4、无意义甚至非法。它类的对象可能无意义甚至非法。封装在面向对象的方法中,所有信息都存贮在对象中,即其数在面向对象的方法中,所有信息都存贮在对象中,即其数据及行为都据及行为都封装封装在对象中。在对象中。影响对象的影响对象的唯一唯一方式,是执行它所从属的类的方法,即执方式,是执行它所从属的类的方法,即执行作用于其上的操作,这就是信息隐藏(行作用于其上的操作,这就是信息隐藏(information hidding)。)。重载方法重载方法重载方法重载方法同一方法可作用于不同对象上,并产生不同的结果。例如,同一方法可作用于不同对象上,并产生不同的结果。例如,OPEN方法既可作用于数据流,也可作用于窗口等。

5、方法既可作用于数据流,也可作用于窗口等。在在在在VB.NETVB.NET中使用类中使用类中使用类中使用类 创建类创建类在在VB.NET中创建类是很容易的,可以有以下中创建类是很容易的,可以有以下3种方法。种方法。作为添加到作为添加到“Windows应用程序应用程序”项目的一个独立类模块。项目的一个独立类模块。作为作为“Windows应用程序应用程序”项目的某个窗体模块中代码的一部分。项目的某个窗体模块中代码的一部分。作为一个独立的作为一个独立的“类库类库”项目。项目。第一种方法:第一种方法:创建一个用创建一个用于描述员工的类于描述员工的类Employee首先,我们新建一个应用程序工程,在【新建

6、项目】窗口首先,我们新建一个应用程序工程,在【新建项目】窗口的【模板】列表框中选择【的【模板】列表框中选择【Windows Form窗体应用程序窗体应用程序】,并在【名称】文本框中输入】,并在【名称】文本框中输入“EmployeeClass”。单击菜单栏中的【项目】单击菜单栏中的【项目】【添加类】命令,打开【添加类】命令,打开【添加新项【添加新项7-1EmployeeClass】窗口,并在【名称】窗口,并在【名称】文本框中输入】文本框中输入“Employee.vb”。单击【添加】按钮后,编译器将自动为我们生成了单击【添加】按钮后,编译器将自动为我们生成了空类的代码。类名默认与类文件名称相同,也

7、可以空类的代码。类名默认与类文件名称相同,也可以进行修改。进行修改。Public Class EmployeeEnd Class其中,其中,Class关键字用于声明一个类;关键字用于声明一个类;Public是该类的访问是该类的访问修饰语,表示该类是公共的,对类内的实体无访问限制;修饰语,表示该类是公共的,对类内的实体无访问限制;Employee是类的名称,通常选择有意义的能够说明类功能是类的名称,通常选择有意义的能够说明类功能的名称。的名称。向类中添加属性向类中添加属性可以采用字段或属性过程两种方式向类中添加属性可以采用字段或属性过程两种方式。还可以用属性的还可以用属性的Public、Read

8、Only或或WriteOnly等修饰符等修饰符确定属性如何工作。确定属性如何工作。字段字段字段只是类中的公共变量,可以从该类的外部设置或读取字段只是类中的公共变量,可以从该类的外部设置或读取这些变量。这些变量。对于员工来说,可能会有在职人员和退休人员之分,可以对于员工来说,可能会有在职人员和退休人员之分,可以使用一个使用一个Boolean类型变量来表示。类型变量来表示。下面的代码为下面的代码为Employee类添加一个类添加一个Retired字段,类型为字段,类型为Boolean类型,类型,True表示退休,表示退休,False表示在职。表示在职。Public Retired As Boole

9、an属性过程属性过程属性过程有存储属性值的私有变量的声明、公开该值的属性过程有存储属性值的私有变量的声明、公开该值的Get过程以及设置该值的过程以及设置该值的Set过程过程3个部分。个部分。例子例子下面的代码为下面的代码为Employee类添加类添加firstName属性,用于表示属性,用于表示员工的姓。员工的姓。Private firstNameValue As StringPublic Property FirstName()As String Get FirstName=firstNameValue End Get Set(ByVal value As String)firstNameV

10、alue=value End Set End Property修改修改Set过程,检查名字是否包含过程,检查名字是否包含数字。数字。Set(ByVal value As String)Dim i As Integer Dim numContained As Boolean=False For i=0 To 9 If value.Contains(i.ToString()Then numContained=True Exit For End If Next If numcontained=False Then firstNameValue=value Else MessageBox.Show(“

11、First name contains number!”)End If End Set只读属性只读属性下面的代码为下面的代码为Employee类添加了一个只读属性类添加了一个只读属性ID,用于表,用于表示员工的编号。示员工的编号。Private IDValue As IntegerReadOnly Property ID()As Integer Get ID=IDValue End GetEnd Property只写属性只写属性下面的代码为下面的代码为Employee类添加了一个只写属性类添加了一个只写属性Password,用于表示员工的密码。,用于表示员工的密码。Private passwo

12、rdValue As String WriteOnly Property Password()As String Set(ByVal value As String)passwordValue=value End Set End Property 向类中添加方法类的方法就是在该类中声明的类的方法就是在该类中声明的Sub或或Function过程。过程。例如,将员工的姓与名分开,在某些情况下比如按照姓氏例如,将员工的姓与名分开,在某些情况下比如按照姓氏排序,比较有用。但大多数时候,还需要使用员工的全名。排序,比较有用。但大多数时候,还需要使用员工的全名。下面的代码为下面的代码为Employee类添

13、加一个名为类添加一个名为FullName的公共的公共方法,用于返回员工的全名,它由方法,用于返回员工的全名,它由firstNameValue和和lastNameValue连接得到。连接得到。Public Function FullName()As String FullName=FirstName&LastName End Function下面的代码中向下面的代码中向Employee类添加了一个计算年龄的类添加了一个计算年龄的私有方法私有方法CalcAge,并修改了只读属性,并修改了只读属性Age的的Get过过程,以使用该私有方法。程,以使用该私有方法。Private Function Cal

14、cAge(ByVal year As Integer)As Integer CalcAge=My.Computer.Clock.LocalTime.Year-year End Function ReadOnly Property Age()As String Get Age=CalcAge(birthYearValue)End Get End Property 构造函数类的构造函数用于类的实例的创建,实现当一个类被创建类的构造函数用于类的实例的创建,实现当一个类被创建时需要运行的代码。时需要运行的代码。类的构造函数类的构造函数Sub new在类实例化的时候调用,一般用于在类实例化的时候调用,一

15、般用于对类中某些字段或属性进行初始化,可以类定义中的任何对类中某些字段或属性进行初始化,可以类定义中的任何地方创建析构函数。地方创建析构函数。下面的代码为下面的代码为Employee类创建了一个构造函数,用于对类类创建了一个构造函数,用于对类内所有变量初始化。内所有变量初始化。Sub New()Retired=False FirstName=LastName=BirthYear=0 Password=End Sub下面代码分别创建了使用不同参数创建类实例的构下面代码分别创建了使用不同参数创建类实例的构造函数。造函数。Sub New(ByVal first As String,ByVal las

16、t As String)FirstName=firstLastName=last End Sub Sub New(ByVal id As Integer)IDValue=id End Sub在拥有多个构造函数的情况下,如何确定类的实例将调用哪个构造函在拥有多个构造函数的情况下,如何确定类的实例将调用哪个构造函数呢?这根据类实例化时传入的参数来确定。数呢?这根据类实例化时传入的参数来确定。创建和使用对象创建和使用对象创建和使用对象创建和使用对象对象类型如下。对象类型如下。内部对象内部对象,包括项目中的内部对象和类包括项目中的内部对象和类。外部对象外部对象,包括程序集和包括程序集和COM对象对象。

17、使用New关键字创建对象New关键字关键字用于创建一个类的实例。由于对象是引用类型,用于创建一个类的实例。由于对象是引用类型,所以必须显式创建之后才能使用。所以必须显式创建之后才能使用。下面的代码声明了两个下面的代码声明了两个Employee类的对象。类的对象。Dim objEm1 As Employee Dim objEm2 As Employee=New Employee()设置和获取属性对象属性的设置和获取很简单,使用对象名对象属性的设置和获取很简单,使用对象名.属性名即可完属性名即可完成。成。例如,下面的代码为对象例如,下面的代码为对象objEm1设置了设置了FirstName和和La

18、stName属属性。性。Dim objEm1=New Employee objEm1.FirstName=Allen objEm1.LastName=Smith下面的代码则获取下面的代码则获取objEm1的年龄的年龄Age属性,并将其赋给变量属性,并将其赋给变量a。Dim a As Integer=objEm1.Age 使用方法使用对象名使用对象名.方法方法()来调用对象的方法。来调用对象的方法。例如,下面的代码调用了例如,下面的代码调用了PictureBox1对象的对象的Refresh方法,该方方法,该方法用于重新绘制图片框。法用于重新绘制图片框。PictureBox1.Refresh()下

19、面代码调用了下面代码调用了MessageBox的的Show方法,用于显示一个窗口。方法,用于显示一个窗口。MessageBox.Show(This is a message box!)从上面两个例子可以看到,使用方法与使用子过程或使用从上面两个例子可以看到,使用方法与使用子过程或使用函数调用一样。函数调用一样。更具体地讲,除了需要更具体地讲,除了需要显式显式指定将调用其方法的对象实例,从而对指定将调用其方法的对象实例,从而对方法进行限定外,调用方法的方式与调用模块过程相同。方法进行限定外,调用方法的方式与调用模块过程相同。如果方法前未指定对象名,则该实例是隐式的如果方法前未指定对象名,则该实例

20、是隐式的Me变量。变量。共享成员共享成员共享成员共享成员是由一个类或结构的所有实例共享的属性、过程是由一个类或结构的所有实例共享的属性、过程和字段。一些编程语言将这样的项称为静态成员。和字段。一些编程语言将这样的项称为静态成员。VB.NET中,共享成员使用中,共享成员使用Shared关键字关键字标识。标识。共享属性共享属性当信息是类的一部分而非特定于类的任何实例时,共享字当信息是类的一部分而非特定于类的任何实例时,共享字段和属性很有用。段和属性很有用。当更改共享字段和属性的值时,同时更改了与该类和该类当更改共享字段和属性的值时,同时更改了与该类和该类的所有实例关联的值。的所有实例关联的值。共享

21、方法共享方法共享共享方法方法是不与类的特定实例相关联的类方法。例如,在是不与类的特定实例相关联的类方法。例如,在Math类内定义的类内定义的Cos方法是共享方法,可以将共享过程作方法是共享方法,可以将共享过程作为对象的方法调用或直接从类调用。为对象的方法调用或直接从类调用。共享过程和属性不具有对类的实例的访问权限,因此在共共享过程和属性不具有对类的实例的访问权限,因此在共享方法中只允许对非共享数据成员进行限定引用。享方法中只允许对非共享数据成员进行限定引用。例子例子Public Class Item Public Shared Count As Integer=1 Public Shared

22、Sub ShareMethod()MsgBox(当前Count的值为:&Count)End Sub Public Sub New(ByVal Name As String)使用Count变量的值初始化SerialNumber Me.SerialNumber=Count Me.Name=Name Count变量增加1 Count+=1 End Sub Public SerialNumber As Integer Public Name As String Public Sub InstanceMethod()MsgBox(该对象包含的信息为:&_ Me.SerialNumber&vbTab&Me.Name)End Sub End Class注意,在使用共享成员时,不需要使用注意,在使用共享成员时,不需要使用New关键字对类进关键字对类进行实例化,而是直接使用行实例化,而是直接使用类名类名.共享成员名共享成员名进行调用。进行调用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁