1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Visual Basic.NET,程序设计,第,2,章 类、对象与命名空间,1,2.1,面向对 象,1,、类,类是面向对象程序设计的关键,类是同种类型对象的集合。,类是描述一系列实体,共同特征,的概念。,例如下图:生物、动物、植物、人、爬行动物、昆虫都是,“,类,”,,把他们分,“,类,”,的准则就是有共同的特征,如,“,昆虫,”,类,共同特征是有翅膀、会飞、产卵等。,植物,生物,动物,人,爬行动物,昆虫,2,2,、对象,对象,是表示现实世界中,某个,具体的事物,或者对象是具有特殊,属性,(数据)和行为,方
2、式,(方法)的实体。,对象是类的实例化,3,3.,类与对象,类是一个抽象的整体概念,对象是类的实例化。,例如:,学生是一个笼统的名称,是整体概念,我们把学生看成一个,“,类,”,,一个个具体的学生(比如你自己)就是这个类的实例,也就是这个类的一个个对象。,类,一个对象,4,在面向对象编程中,类是对一组具有相同属性和行为的相似对象的抽象。,因而,对象是现实实体的映射,类是对具有共同特性实体的抽象。,类与对象是一般与个别的关系,。,类,对象,一般,个别,5,4,、类的特性,类具有继承、封装和多态三个特性。,1,封装性,封装是面向对象的核心概念。是一种信息隐藏技术,对象内部对使用者是隐蔽的,使用者只
3、能见到对象封装界面上的信息。,2,继承性,是指一个类获取另一个类的性质的过程,例如:,狗是哺乳动物的一种,狗包含了哺乳动物的所有属性和行为,并拥有自己特有的属性与行为。所以,狗类继承了哺乳类,在定义狗类时,就不必重复定义哺乳类的已有属性和行为,这便大大地提高程序代码重用性。,3.,多态性,多态性是指两个或多个类可以有相同的名字、相同的基本目的但实现方式不同。通过多态性,多个类可以提供相同方法或属性。,6,5,、,VB.NET,的类和对象,“,类,”,是进行封装和数据隐藏的,工具,,,“,对象,”,是系统中的基本运行,实体,。,所有的对象都是作为它们的类的相同副本建立的。一旦它作为个别的对象存在
4、,就可以改变它的属性(特征)。,为了简单起见,在一般情况下,都不指明对象的类,而是称为,“,控件,”,。,类,对象,7,2.3,对象,1,、对象,是表示现实世界中某个具体的事物,或者对象是具有特殊,属性,(数据)和行为,方式,(方法)的实体。,建立一个对象后,其操作通过与该对象有关的,属性、事件,和,方法,来描述。,在,Visual B,中窗体和控件都是对象,8,2,、对象属性,属性是一个对象的,特征,,所有对象都有自的属性。例如:控件名称(,Name,),、标题,(,text),、颜色(,Color),、字体(,FontName),等属性决定了对象展现给用户的界面具有什么样的外观及功能。,对
5、象属性设置的方法:,方法一:在设计模式下(在,设计阶段设置对象属性),,通过属性窗口直接设置对象的属性。,(,a,)直接键入新属性值,(,b,)选择输入,即通过下拉列表选择所需要的属性值,(,c,)利用对话框设置属值,9,对象属性设置,方法二:,“,在运行期间设置属性,”,,,在程序的代码中通过赋值实现,,其格式为:,对象名,.,属性名称,=,属性值,例如:,cmdDisp.text=,“,显示,”,10,(,a,)直接键入新属性值,例如,为了把按钮的,Text,属性设置为“按钮测试”,可按如下步骤操作:,(,1,)在窗体上画一个按钮(,Button1,)(将在,2.6,节介绍控件的画法)。,
6、(,2,)选择该按钮(单击该按钮内部),然后激活属性窗口。,(,3,)在属性列表中找到,Text,属性,并双击该属性条。,(,4,)在,Text,右侧一列上输入“按钮测试”,11,(,b,)选择输入,即通过下拉列表选择所需要的属性值,有些属性(例如,Backcolor,、,ControlBox,、,Enabled,、,TopMost,等)取值的可能情况是有限的,可能只有两种、几种、十几种或几十种,对于这样的属性,可以在下拉列表中选择所需要的属性值。,12,(,c,)利用对话框设置属值,对于某些属性,设置框的右端会显示省略号,即三个小点(,.,),可以利用这个对话框设置所需要的属性。,13,3,
7、、对象事件,传统的编程是面向过程的,根据程序应实现的功能,写出一个完整的程序。在执行时,,顺序执行,各指令,直到程序结束。,Visual Basic.NET,是采取由,“,事件,”,来驱动的编程机制。,14,事件,:,可被对象识别的动作。(例如:单击(,click,);移动鼠标(,mousemove,)等),事件过程,:,是指附在该 对象上的,程序代码,,是事件触发后处理的程序。事件过程的形式如下:,Sub,对象名称,_,事件名称(对象引用,事件信息),Handles,事,件处理程序,.(,事件过程代码),End Sub,例如:,Sub cmdOk_Click(,ByVal sender As
8、 System.Object,ByVal e,_,As System.EventArgs)Handles Button1.Click,Me.Height=200,End Sub,15,4,、方 法(,Method,),在对象上可操作的过程,是系统提供的一种特殊的过程和函数,方法,。,方法是面向对象的,所以对象的方法调用一般要指明对象。,对象方法 调用形式:,对象名称,.,方法名称,例如:,一个窗体,Form1,,隐藏他,me.hide,16,2.4.1,窗体的结构与属性,窗体属性决定了窗体的外观和操作,AcceptButton,(接受按钮),BackColor,(背景颜色),CancelBut
9、ton,(“取消”按钮),ControlBox,(控制框),Enabled,(允许),FormBorderStyle,(边框类型),Font,(字形),ForColor,(前景颜色),Icon,(图标),Location,(定位),MaximizeBox,、,MinimizeBox,Name,(名称),Size,(尺寸),Text,(标题),WindowState,(窗口状态),17,2.4.2,窗体事件,Click,(单击)事件,DblClick,(双击)事件,Load,(装入)事件,Closed,(关闭)事件,Activated,(活动)、,Deactivate,(非活动)事件,Paint
10、,(绘画)事件,18,2.5,控件,窗体和控件都是,Visual Basic.NET,中的对象,它们是应用程序的“积木块”,共同构成用户界面。因为有了控件,才使得,Visual Basic.NET,不但功能强大,而且易于使用。控件以图标的形式放在“工具箱”中,每种控件都有与之对应的图标。在一般情况下,工具箱位于窗体的左侧。,Visual Basic.NET,提供了大量的控件,这些控件分属于不同的项目类型。在建立新项目时,,Visual Basic.NET,根据所建立的项目类型,自动把相应的控件添加到工具箱中。本书将只讨论,Windows,应用程序,只涉及,Windows,窗体控件。这一节对,W
11、indows,窗体控件作简要介绍,将在第,6,章介绍部分控件的用法。,19,2.5.1 Windows,窗体控件,工具箱中列出,Windows,窗体控件,如图,2.19,所示。工具箱实际上是一个窗口,称为工具箱窗口,可以通过单击右上角的“,”,关闭。为了打开工具箱,可以执行“视图”菜单中的“工具箱”命令或单击标准工具栏中的“工具箱”按钮(或按,Ctrl+Alt+X,键)。,20,2.5.2,工具箱的管理,控件的复制和删除,改变排列顺序,定义工具箱,21,控件的复制和删除,执行弹出式菜单中的“剪切”命令,可以把所选择的控件从工具箱中删除,并复制到剪贴板中;执行“复制”命令,则可把控件复制到剪贴板
12、;而如果执行“删除”命令,则删除该控件,但不复制到剪贴板。,22,改变排列顺序,可以通过弹出式菜单中的“上移”或“下移”命令来实现。每单击一次“上移”或“下移”命令,可以使当前被选择的控件向上或向下移动一个位置。,23,定义工具箱,可以通过“自定义工具箱”命令对工具箱进行定义。执行该命令后,将打开“自定义工具箱”对话框,如图,2.22,所示。,“自定义工具箱”对话框包括两个选项卡,分别为“,COM,组件”和“,.NET,框架组件”。,24,2.6,控件的画法和基本操作,在设计用户界面时,要在窗体上画出各种所需要的控件。也就是说,除窗体外,建立界面的主要工作就是画控件。这一节将介绍控件的画法和基
13、本操作。,25,2.6.1,控件的画法,可以通过多种方法在窗体上画一个控件。第一种方法步骤如下(以画文本框为例):,(,1,)单击工具箱中的文本框图标,该图标反相显示。,(,2,)把鼠标光标移到窗体上,此时鼠标光标变为“”号(“”号的中心就是控件左上角的位置),并带有相应控件的小图标。,(,3,)把“”号移到窗体的适当位置,按下鼠标左按钮,不要松开,并向右下方拖动鼠标,窗体上将出现一个方框。,(,4,)随着鼠标向右下方移动,所画的方框逐渐增大。当增大到认为合适的大小时,松开鼠标器按钮,这样就在窗体上画出一个文本框控件。,26,2.6.2,控件的基本操作,控件的缩放和移动,控件的复制和删除,通过
14、属性窗口改变对象的位置和大小,选择控件,27,2.2,命名空间,命名空间,:,就是让每一个名称都有自己的活动空间,不会互相混淆。,命名空间类似于文件系统中目录与文件的关系,用来控制对象标识符的范围,组织对象库和层次结构,简化对象引用,并可防止在引用对象时出现二义性。,28,2.2.1,什么是命名空间,Microsoft,在,.NET,平台上提供了大量的基础类,这些类构成了,.NET,的类库。,每个命名空间含有可以在程序中使用的类、结构、枚举、接口等。,用户可以定义自己的命名空间,并可访问由命名空间提供的资源。,应用程序中的所有代码也都在命名空间中。如果没有为代码明确指定命名空间,则系统会根据应
15、用程序的名称(即,Visual Basic.NET,中的项目名)自动生成一个命名空间。,29,2.2.2 .NET,中的命名空间,.NET,提供的系统类库极为庞大,含有大量的命名空间,每个命名空间包括不同的类(,Class,)、结构(,Structure,)和接口(,Interface,)。大多数命名空间的顶层为,System,,并可根据功能在逻辑上划分为若干个子命名空间。,30,.NET,命名空间的整体结构,31,浏览,.NET,命名空间和类,.NET,提供了大量的命名空间和类,,Microsoft,提供了一个名为,WinCV.exe,的工具软件,可用来浏览,.NET,命名空间的共享程序集类
16、。,工具软件,WinCV.exe,位于,C:Program FilesMicrosoft Visual Studio.NETFrameworkSDKBin,目录下。,32,2.2.3,命名空间的使用,命名空间被集成到,.NET,环境中,如果不使用命名空间,则无法建立,.NET,应用程序。而为了在一个应用程序(项目)中使用命名空间,则必须一些方法声明所使用的命名空间。,项目引用,直接定位,使用,Imports,语句,33,项目引用,项目引用可以根据需要添加或删除。为了向项目中添加引用,可以使用“项目”菜单中的“添加引用”命令。,34,直接定位,直接定位类似于文件系统中的完整路径。只要给出命名空间
17、的全名,就可以访问其中的任一个类。,例如,:为了通过控制台输入,/,输出流(,stdio,)读写,可以使用,System.Console,命名空间中的,WriteLine,方法:,System.Console.WriteLine(This is a test),这种方法适用于应用程序中的所有命名空间。,再如,:回车换行常量,CrLf,是在,Microsoft.VisualBasic.ControlChars,命名空间中定义的,为了在程序中用该常量实现回车换行操作,可以编写如下代码:,Dim S As String,S=AAAAAA&Microsoft.VisualBasic.ControlCh
18、ars.CrLf&BBBBB,MsgBox(S),35,使用,Imports,语句,可以使用,Imports,语句,隐含地指定要使用的命名空间,应用程序可以使用由该关键字指定的命名空间中的类。,Imports,语句通常放在代码模块的顶部,用来指定程序中要使用的命名空间。有了这个语句后,每次使用这个命名空间中的类时,就不必显式地给出该命名空间,从而可以减少键盘输入量。,Imports,语句的格式如下:,Imports aliasname=namespace,例如:上面例子中,可以把,Microsoft.VisualBasic.ControlChars,命名空间放在,Imports,语句中:,Im
19、ports Microsoft.VisualBasic.ControlChars,.,Dim S As String,S=AAAAAA&CrLf&BBBBB,MsgBox(S),Import,语句使用注意,36,注意,如果两个命名空间中有同名的类,而且程序中要引入这两个命名空间,则当使用这个类时,必须显式地指定完整的命名空间名,否则会产生二义性。,例如,:假定有如下两个命名空间:,MyMfgApp.Inventory,MyMfgApp.Sales,这两个命名空间中均含有,Product,类,则下面的代码将产生错误:,MyMfgApp.Inventory,MyMfgApp.Sales,.,Public Sub DoSomthing(),Dim obj As New Product(),定义,Product,类的一个对象,End Sub,在这种情况下,编译器无法确定该引用哪个,Product,。如果将代码修改为:,Dim obj As New Sales.Product(),则可消除由,Product,引起的二义性。,37,