




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计,于宝君,第一讲 概 述,本讲的主要内容 课程的内容及教学计划介绍 本课程在专业学习和职业生涯中的地位和作用 学习方法 学习资源和交流平台 第一个VB程序 知识和能力基础测试,课程的内容及教学计划介绍,这门课要讲什么?,在程序设计等课程的基础上,针对管理信息系统开发活动中的“详细设计”(系统的实现)环节,通过完整的系统实例,介绍开发环境的构建、开发工具的使用、程序语言及数据库的具体应用。 开发工具选择Visual Studio 2010,语言选择Visual Basic .Net 2008。,通过这门课我们要达到什么目的?,掌握面向对象程序设计的基本思想和方法 学习并掌握系统开
2、发工具的使用 学习并养成良好的程序设计风格 使用一种具体的开发语言和工具(VB.NET)的技能,课程内容(教学计划)-1,.NET框架介绍和Visual Basic 语言基础(数据、运算、控制语句) 面向对象基础(面向对象思想、属性 、方法、构造函数、模块、参数传递 ) 继承与多态 图形用户界面设计初步 字符串、字符和正则表达式 异常处理,考核方式,平时考核(10%) 出勤 作业 期末考核(90%),教材,Visual Basic 2008大学教程 作者:Harvey M. Deite & P. J. Deitel 译者:徐波 电子工业出版社,重要参考教材(推荐阅读)-2,Visual Bas
3、ic 2005入门经典(第4版) 清华大学出版社,学习方法,如何能较快地掌握系统开发技能?,专一地、深入地学精一种程序语言 每天花一点时间在计算机上实践操作 多练习试着自己编程 不要仅仅依靠教材,要多看技术文档 多交流 亲自编写一个完整的小系统,一些有用的Web资源,Microsoft VB开发人员中心网站 Microsoft.NET框架社区 适合VB.NET初学者的网站 关于.NET异常及解决方案的网站 www.error-,容易忽略的重要的技能,良好的程序设计风格 注释与空白 变量等的命名 编写程序前请先画流程图,哪一段程序更容易读懂糟糕的代码,int aaa(int i) if(i%4=
4、0 ,哪一段程序更容易读懂良好的程序风格,/*设计者:于宝君 时间:2010-3-15 Ver:1.0 功能:判断给定年份是否为闰年 */ int IsLeapYear(int year) if(year % 4=0 /不是的话返回0 ,第二讲 VB.NET语言基础,程序设计语言概述 开始第一个VB.NET程序 .NET的架构 VB语言基础,程序设计语言概述,机器语言 +1300042774 +1400593419 +1200274027 汇编语言 load basepay add overpay store grosspay,高级语言 grossPay=basePay+overTimePay
5、 高级语言机器语言运行,编译器,VB.NET的发展历程 BASIC(1960s)Visual Basic(1991) VB.NET(2000、2005、2008、2010),图形用户界面 事件处理 面向对象编程 异常处理,.NET的特点(目标),.NET的理想:.NET将操作系统平台割裂开来,其目标是降低应用程序对平台的依赖。 多种语言,一个平台。.NET包含三种主要语言Visual Basic 、C#、C+、F#,实现机制,.NET Framework类(所有的语言都使用),应用程序,.NET Framework类 (例如:System.IO.File),Windows 文件系统,Pocke
6、t PC 系统,Linux文件系统,编程语言,执行平台,VB6及其前版的实现过程,VB源代码,VB编译器,机器代码,VB.NET实现过程,VB.NET源代码,VB.NET编译器,机器代码,MSIL (Microsoft Intermediate Language , MSIL),MSIL到机器代码的转换器(CLR),通用类型系统(Common Type System, CTS)为Visual Basic、C#和其他.NET语言建立了数据规范,因而各种语言都可以一同一种方式使用数据。,了解Visual Studio 2010 IDE(集成开发环境),启动Visual Studio 2010 创建
7、一个新项目 了解几个常见术语:窗体、属性、控件 了解常用的工具栏 学会使用帮助文档,使用可视化编程创建一个简单的Windows程序 设置窗体的标题栏文本(Text) 改变窗体大小 改变窗体背景颜色(BackColor) 添加一个标签(Label)控件 改变标签的外观:内容(Text)、背景颜色、大小、字体(Font)等 添加一个PictureBox控件 插入图像(Image),调整图像大小(SizeMode) 保存项目运行项目终止执行,练习:寻找做一个强悍的程序员的感觉,修改窗体的属性。把窗体的Text属性设置为“My Scheduler”。把窗体的Size属性设置为332,470。 在窗体中
8、添加标签控件。在窗体中添加两个Label控件,它们的大小相同(均为178,21),并且都在窗体中水平居中显示 。两个标签的Text属性分别设置为“日历”、“记事”,字体大小为12,Backcolor属性设置为黄色。 在窗体中添加日历(MonthCalendar)控件。使其垂直位于两个Label控件之间。 在窗体中添加1个RichTextBox控件,并使它在第2个Label控件的下面,水平居中。并相应地改变这个RchTextBox控件的大小。,VB.NET项目的组成,WindowsApplication1文件夹,WindowsApplication1.sln 解决方案,WindowsApplic
9、ation1文件夹,bin文件夹,My Project文件夹(项目的程序集信息文件),obj文件夹,Debug文件夹(包含该项目的调试版本的可执行文件),Release文件夹(包含该项目的发布版本的可执行文件),Debug文件夹(包含该项目的调试版本的可执行文件),Release文件夹(包含该项目的发布版本的可执行文件),Form1.vb,Form1.Designer.vb,VB.NET项目的组成,配置项目文件的位置,第一个VB程序控制台应用程序(console application),项目:MyFirstProject 文件:Welcome.vb Welcome1.vb Simple Vi
10、sual Basic program. Module FirstWelcome Sub Main() Console.WriteLine(Welcome to Visual Basic!“) End Sub Main End Module FirstWelcome,实现程序功能的最小单位方法(过程、函数),方法(过程)的定义 Sub 方法名(参数) End Sub 方法(函数)的定义 Function 方法名(参数) Return 返回值 End Function,传统的VB的程序构成,数据(变量)类型与运算符,VB.NET 语言基础,计算机中的数据,数据的型和值 46090101 20100
11、102 a与97,学号?,四千万大奖?,VB.NET中的数据常量,数值型常量(整数、长整数、浮点数、字节常量) 整数 -32768+32767 十六进制数 由09、AF或af组成,以&H开头,其后数据位数不超过4位 &H0&HFFFF 八进制数 由07组成,以&0或&开头,其后数据位数不超过6位,长整型 -217483648+217483647 浮点型(单精度、双精度) 1.23 1.23E+10 逻辑型 True False 日期型 #12/31/2010# (月日年),字符常量 字符型 “a” 字符串型 “abcd” 注意:系统依靠定界符来区分数据的“型”!,变量及变量的声明,变量是动态地
12、存储数据的重要载体 使用变量前,必须先声明变量。 声明变量时,必须决定其名称和为其分配什么样的“数据类型”。 使用 Dim 和 As“关键字”来声明变量,如下所示: Dim aNumber As Integer aNumber = 42 等价的语句: Dim aNumber As Integer=42,变量命名的规则: 变量名由下划线(_)、字母或汉字开头,由下划线(_)、字母、数字、汉字组成,但不能包含空格。 合法的变量名 _intNumber a9 姓名 x_3 不合法的变量名 8a 学 校,变量的赋值赋值运算符,赋值运算符 = 语法 变量=值 变量可以是变量或对象的属性 值可以是常量、变
13、量、表达式 示例 aNumber=20 bNumber=aNumber cNumber=aNumber+30 VB.NET支持自反赋值运算符 a+=b 等价于 a=a+b,声明一个变量,相当于在计算机内存中分配了一个用于存储指定类型数据的“房间” 变量的名称相当于“房间号”,程序通过“房间号”来寻找数据,aNumber = aNumber + 1,aNumber = 42 + 1,aNumber = 43,=,43,共享方法 Console.ReadLine() 可以接收用户从键盘输入的数据 通常和赋值运算符“=”一起使用 示例 aNumber= Console.ReadLine() 共享方法
14、 Console.Write()和Console.WriteLine() 在屏幕上输出指定的数据 Console.Write( aNumber ),良好的编程习惯,选择有意义的变量名 改进的匈牙利命名法 变量名的第一个单词小写 在第一个单词之后,每个单词的第1个字母大写 每个变量尽可能地使用独立的一行代码加以声明,以便于插于行末注释。 变量名最好以“变量类型+有意义的名字”命名 对于GUI控件的命名,提倡采取控件类型前缀与有意义的名字相结合的方式,变量的基本类型,算数运算,算数运算优先级,( ) + - (正负号) * / Mod + -,y=ax2+bx+c y=a*x2+b*x+c y =
15、 (a * x 2) + (b * x) + c 良好的编程风格: 使用冗余的括号,使复杂的表达式容易阅读 运算符两侧保留空格,练习题1,编写一个控制台程序,实现功能:根据用户输入的两个数,计算两个数加、减、乘、除的结果,并分别输出。,练习题2,编写一个控制台程序,读取一个由用户输入的5位数字组成的整数。把这个数字的各个部分分离出来,并按照相邻数字之间隔3个空格的形式将他们打印出来。例如,用户输入了42239,这个程序应该显示:4 2 2 3 9 提示:需要使用整除和求余运算来提取每个数字,字符串连接运算符,+ & 作用:将运算符两侧的字符串联接为一个字符串,字符串连接运算符示例,“Good
16、”+ “Bye” “Good ”& “Bye” 结果为 ”Good Bye” Dim str1,str2 As String str1=“Good” str2=“Boy” Console.WriteLine(str1 & str2),练习题3,编写一个控制台程序,实现功能:由用户输入一个圆的半径,程序计算出这个圆的直径、周长和面积。 例如,用户输入2,程序按如下格式显示结果: 您输入的圆的半径为:2 该圆的直径为:4 该圆的周长为:12.56 该圆的面积为:12.56,练习题3的相关知识点,声明字符常量 Const 字符常量 As 数据类型 = 值 Const Pi As Decimal =3
17、.14159 数据类型转换类和方法 Convert类中提供了具有数据类型转化功能得共享方法 共享方法的用法:类名.共享方法名() Convert.方法名称(待转换数据) Convert.ToDecimal(“123”),关系运算符,关系运算的结果为逻辑值True或False 关系运算符组成的表达式常用于判断语句中 Visual Basic中的If语句 If 条件 Then End If,注释: 条件必须是一个运算结果为逻辑值(True或False)的表达式。 条件为True时,执行If和End If之间的语句。 条件为False时,跳过If和End If之间的语句。,Sub Main() Di
18、m number1 ,number2 As Integer Console.Write(Please enter first integer: ) number1 = Console.ReadLine() Console.Write(Please enter second integer: ) number2 = Console.ReadLine() If number1 = number2 Then Console.WriteLine(number1 & = & number2) End If If number1 number2 Then Console.WriteLine(number1
19、 & & number2) End If If number1 number2 Then Console.WriteLine(number1 & & number2) End If End Sub,Like运算符中,可以使用通配符 ? 表示任何单一字符 * 表示零个或多个字符 # 表示任何一个数字(09) 字符列表 表示在“字符列表”中的任何单一字符 !字符列表 表示不在“字符列表”中的任何单一字符 示例 “A” Like “A” “a” Like “A” “A” Like “AA”,True,False,False,“Windows” Like “W*s” “W” Like “A-Z” “W
20、” Like “!A-Z” “abc” Like “a?c” “abc” Like “a#c”,True,True,False,True,False,练习题4,编写一个程序,读取2个整数,并判断和打印出第一个数是否为第二个数的倍数。例如,如果用户输入15和3,第一个数是第二个数的倍数。如果用户输入2和4,则不是。以如下示例的格式输出结果: 15是3的倍数 2不是4的倍数,使用Messagebox消息框,共享方法Messagebox.Show() 示例: Messagebox.Show(“提示信息”),添加对程序集的引用,在控制台程序中要想使用消息框,必须包含System.Windows.For
21、ms命名空间的引用,需要添加该命名空间所在程序集的引用。,在控制台程序中使用消息框,Imports System.Windows.Forms 引入包含消息框的命名空间 Module SquareRoot Sub Main() Dim root As Double = Math.Sqrt(2) 在消息框中显示结果 MessageBox.Show(The square root of 2 is & root, _ The Square Root of 2) End Sub Main End Module,逻辑运算符,逻辑运算符可以用来表达更为复杂的条件 常见的三个逻辑运算符:And、Or、Not
22、逻辑运算符运算的对象是:逻辑型的数据,或运算结果为逻辑值的表达式。 运算的结果是逻辑值True或False,逻辑运算的运算规则,Not 非运算 And 与运算(并且),Or 或运算(或者) AndAlso 第一个运算数为False,则不对第二个运算数进行判断了 OrElse 第一个运算数为True,则不对第二个运算数进行判断了,Dim 性别 As String Dim age As Integer Console.Write(请输入性别) 性别 = Console.ReadLine Console.Write(请输入年龄) age = Console.ReadLine If 性别 = 男 An
23、d age = 60 Then Console.WriteLine(来了个老头) End If,Console.Write(请输入年龄) age = Console.ReadLine If age 200 Or age 0 Then Console.WriteLine(年龄值不在合理的范围) End If Console.Write(请输入性别) 性别 = Console.ReadLine If Not (性别 = 男 Or 性别 = 女) Then Console.WriteLine(性别有误!) End If,含有多种数据类型和运算的复杂表达式,strName Like “王*” And
24、intAge 20 strXB = “男” And (intChinese + intEnglish + intMath)/3 80 Not (性别 = 男 Or 性别 = 女) Not 性别 = “男” And Not 性别 = 女,运算符的优先级,练习:试分析下列语句的结果,X = ( -3 + 5 ) = 2 And Not 4 5 1 Or 43 And 2/22=1 False,控制语句,VB.NET 语言基础,控制语句分支语句,If Then End If If Then Else End If,练习题5,对练习题1的程序进行完善。编写一个控制台程序,根据用户输入的两个数,首先判断
25、用户输入的是否是数字,若不是数字,给予警告提示(使用消息框)。若是数字,计算两个数加、减、乘、除的结果,并在消息框中以如下格式输出。 输出结果示例(以用户输入4和2为例) 您输入的数字是:4、2。 计算结果如下: 4+2=6 4-2=2 4*2=8 4/2=2 提示:IsNumeric() 函数用于判断输入内容是否是数字,Dim x, y As Decimal Dim str1, str2 As String Console.Write( 请输入第一个数: ) str1 = Console.ReadLine() Console.Write( 请输入第二个数: ) str2 = Console.
26、ReadLine() If Not (IsNumeric(str1) And IsNumeric(str2) Then 判断是否存在非数字的输入 MessageBox.Show( 请输入两个数字! ) Else x = Convert.ToDecimal(str1) y = Convert.ToDecimal(str2) MessageBox.Show(您输入的数字是: & x & 、 & y & 。 _ & vbCrLf & 计算结果如下: & vbCrLf _ & x & + & y & = & x + y & vbCrLf _ & x & - & y & = & x - y & vbCr
27、Lf _ & x & * & y & = & x * y & vbCrLf _ & x & / & y & = & x / y) End If,If语句的嵌套,If Then If Then Else End If Else If Then Else End If End If,使用嵌套结构实现练习题5,Dim x, y As Decimal Dim str As String Console.Write( 请输入第一个数: ) str = Console.ReadLine() If Not IsNumeric(str) Then MessageBox.Show( 请输入一个数字! ) Els
28、e x = Convert.ToDecimal(str) Console.Write( 请输入第二个数: ) str = Console.ReadLine() If Not IsNumeric(str) Then MessageBox.Show( 请输入一个数字! ) Else y = Convert.ToDecimal(str) MessageBox.Show( 您输入的数字是: & x & 、 & y & 。 _ & vbCrLf & 计算结果如下: & vbCrLf _ & x & + & y & = & x + y & vbCrLf _ & x & - & y & = & x - y
29、& vbCrLf _ & x & * & y & = & x * y & vbCrLf _ & x & / & y & = & x / y) End If End If,练习题6,在练习题5的基础上,针对除法运算,还应判断用户输入的第二个数是否为0。如果为0,则只输出加、减、乘运算的结果,除法显示“除数不能为零,无法计算”的警告信息。,Dim x, y As Decimal Dim str As String Console.Write( 请输入第一个数: ) str = Console.ReadLine() If Not IsNumeric(str) Then MessageBox.Show
30、( 请输入一个数字! ) Else x = Convert.ToDecimal(str) Console.Write( 请输入第二个数: ) str = Console.ReadLine() If Not IsNumeric(str) Then MessageBox.Show( 请输入一个数字! ) Else y = Convert.ToDecimal(str) If y = 0 Then MessageBox.Show( 您输入的数字是: & x & 、 & y & 。 _ & vbCrLf & 计算结果如下: & vbCrLf & x & + & y & = & x + y & vbCrL
31、f _ & x & - & y & = & x - y & vbCrLf & x & * & y & = & x * y & vbCrLf _ & x & / & y & 除数不能为零,无法计算 ) Else MessageBox.Show( 您输入的数字是: & x & 、 & y & 。 _ & vbCrLf & 计算结果如下: & vbCrLf & x & + & y & = & x + y & vbCrLf _ & x & - & y & = & x - y & vbCrLf & x & * & y & = & x * y & vbCrLf _ & x & / & y & = & x
32、/ y) End If End If End If,通过Return语句改变程序的结构,Dim x, y As Decimal Dim str As String Console.Write( 请输入第一个数: ) str = Console.ReadLine() If Not IsNumeric(str) Then MessageBox.Show( 请输入一个数字 ) Return End If x = Convert.ToDecimal(str) Console.Write( 请输入第二个数: ) str = Console.ReadLine() If Not IsNumeric(str)
33、 Then MessageBox.Show( 请输入一个数字 ) Return End If y = Convert.ToDecimal(str) MessageBox.Show( 您输入的数字是: & x & 、 & y & 。 _ & vbCrLf & 计算结果如下: & vbCrLf & x & + & y & = & x + y & vbCrLf _ & x & - & y & = & x - y & vbCrLf & x & * & y & = & x * y & vbCrLf _ & x & / & y & = & x / y),单行If语句,If intX=3 Then blnX
34、Equal3=True Else blnXEqual3=False 可以在一行中包含多条语句,用冒号分隔 (不推荐此种写法) If intX=3 Then blnXEqual3=True : intX+=1 : Total += intX,If Then 语句体1 ElseIf Then 语句体2 ElseIf Then 语句体n Else 语句体n+1 End If,If ElseIfEnd If 结构,注意: 中的内容表示必不可少的内容 中的内容表示可选内容,练习题7,使用在含有ElseIf语句的If语句,编制控制台程序,实现功能:要求用户输入一个数字(假设在0100之间),根据输入值判断
35、成绩的等级,分数与等级的对应规则是:90分及以上为“优秀”、8089分为“良好”、7079分为“中”、6069分为“合格”、60分以下为“不及格”。输出对应的等级,要求使用消息框输出。,分支语句,Select Case Case 语句组1 Case 语句组2 Case Else 语句组n End Select,的合法表达 值列表 Case 1,3,5,7 Case “优秀” 用To表示的值域 Case 1 To 12 Is 关系运算符 Case Is =60,练习题8,使用Select分支语句改写练习题7,控制语句循环语句1,Do While Loop 结构 Do While 语句体 条件为T
36、rue则执行语句体 Loop DoLoop While 结构 Do 语句体 Loop While 条件为True则返回Do语句,再次执行语句体,循环语句,While End While结构 While 语句体 条件为True则执行语句体 End While,练习题9,编写一个控制台程序,练习使用不同的循环结构语句编写程序计算1+2+3+4+100的值。,练习题10,使用循环语句改写练习题2。编写一个控制台程序,读取一个由用户输入的5位数字组成的整数。把这个数字的各个部分分离出来,并按照相邻数字之间隔3个空格的形式将他们打印出来。例如,用户输入了42239,这个程序应该显示:4 2 2 3 9,
37、循环语句ForNext,For x As Integer = 1 To 100 Step 2 Next,控制变量,控制变量的初值,控制变量的终值,控制变量的增量,练习题11,编写一个Windows程序,在窗体上添加一个标签控件和按钮控件。编写程序,要求当用户点击按钮时,实现下述功能: (1)计算1+2+3+4+100的值; (2)将结果显示在标签控件上 (3)显示的 内容为“1+2 +100的值 为:x”要求 使用For循环 编写。,Public Class Form1 定义了名称为Form1的类 Private Sub Button1_Click(ByVal sender As System
38、.Object, ByVal e As System.EventArgs) Handles Button1.Click 定义了一个私有方法 Dim intSum As Int32 For i As Int32 = 1 To 100 intSum += i Next Label1.Text = 1+2+.+100的值: & intSum End Sub End Class 类定义的结尾,方法名称,控件对象Button1的Click事件(鼠标左键单击Button1时触发),控件对象Label1的Text属性(用于设置标签显示的内容),Continue,功能:跳过循环体中剩余的语句 用法: Cont
39、inue For For Next Continue Do Do While Loop Do Loop While Do Until Loop Do Loop Until Continue While While End While,Sub Main() 演示使用continue完成求以内奇数之和 Dim intSum As Int32 = 0 记录结果 Dim intX As Int32 = 0 循环控制变量 While intX = 100 intX = intX + 1 若intX是偶数则略过后续语句 If intX Mod 2 = 0 Then Continue While End I
40、f intSum = intSum + intX End While Console.WriteLine(intSum) End Sub,提前退出循环,Exit For For Next Exit Do Do While Loop Do Loop While Do Until Loop Do Loop Until Exit While While End While,练习题12,编写控制台程序,根据用户输入的整数m,判断m是否是素数,并输出结果。 提示: 1)如果m不能被2 之间的整数整除,即为素数。 2)计算 的方法 Math.Sqrt(),Sub Main() 判断用户输入的整数是否是素数
41、 Dim m, intI, intSqrtM As Int32 m = Console.ReadLine() intSqrtM = Math.Sqrt(m) 计算m的平方根,存入intSqrtM中 intI = 2 While intI = intSqrtM + 1 Then Console.WriteLine(m.ToString & 是素数) Else Console.WriteLine(m.ToString & 不是素数) End If End Sub,练习题13,编写控制台程序,用于统计多个汽车的里程数和油箱的汽油使用程度。要求: 用户输入每台汽车已经行驶的里程数和该车油箱所使用的汽油
42、数(均为double类型),计算并显示每公里的油耗情况。 用户输入的里程数不小于0,油耗数必须大于0。否则给予警告,并要求重新输入,直至相应的数据输入正确为止。 当用户在输入里程数时,输入了小于0的数,代表所有数据输入完毕。 程序要统计并显示出所有已输入的总里程数和总油耗,以及每公里的平均油耗。,第三讲 类和对象初步,类、对象、方法、属性和实例变量的基本概念 如何创建类和方法 方法的调用 循环语句的嵌套 实例变量和属性的创建 构造函数,面向对象程序设计的基本概念,类(抽象)对象(具体化) 每个对象都是其所属类的一个实例 方法类(对象)的行为, 属性类(对象)的特征 实例变量是属性实现的载体,一
43、个简单的类, GradeBook.vb 只含有一个方法的简单类. Public Class GradeBook Public Sub DisplayMessage() Console.WriteLine(Welcome!) End Sub End Class,使用GradeBook类, GradeBookTest.vb 创建一个GradeBook对象并调用其方法 Module GradeBookTest Sub Main() Dim objA As GradeBook objA=New GradeBook objA.DisplayMessage() End Sub End Module,声明一
44、个GradeBook类的对象变量(引用),实例化对象变量objA,用户所创建的每一个新类都成为Visual Basic的一种新的数据类型,可以用于声明变量及创建对象。 Dim objA As GradeBook 声明了一个GradeBook类型的变量 New用于创建一个新的对象(实例) objA=New GradeBook 创建了一个对象实例,并把该实例的引用(地址)赋给对象变量objA 调用一个对象的方法的方法: 对象变量名.方法名,关于方法,方法是可执行一个完整逻辑功能的程序语句的有序集合,是程序设计过程中需要实现的最基本的功能单元。 在VB.Net中方法分为两类:子程序过程(Sub)、函
45、数(Function)。前者没有返回值,后者有返回值。,两类方法的声明(定义),子程序过程的声明(定义) Sub 方法名(形参列表) End Sub 函数的声明(定义) Function 方法名(形参列表) As 返回值类型 Return 返回值 End Function,在一个方法中可以调用另外一个方法 过程的调用: Call 过程名() 过程名() 函数的调用: 变量=过程名() 以“过程名()”的形式出现在表达式中 对一个对象(类)中的方法的调用 对象引用名.方法名() objA.Display(),方法的调用,Sub Main() Dim y As Single y = test()
46、在Main中调用test()方法 MessageBox.Show(园的面积为: & y) End Sub Function test() As Single Dim x As Single x = 5 Return Math.PI * 5 2 End Function,Module GradeBookTest Sub Main() Dim objA As GradeBook objA=New GradeBook 调用一个对象变量中的方法 objA.DisplayMessage() End Sub End Module,有形参的方法的调用,Module Module1 Sub Main() Di
47、m x, sglResult As Single x = Console.ReadLine sglResult = Area(x) Console.WriteLine(sglResult) End Sub Function Area(ByVal r As Single) As Single Area = Math.PI * r * r End Function End Module,实参,形参,属性的定义与实例变量,局部变量一般sub过程(方法)中定义的变量,只能在当前过程(方法)中使用,方法结束时,值丢失。 属性与对象同时存在,无论该对象的某个方法执行与否、结束与否都存在。 实例变量类的属性
48、要靠类中定义的变量来实现,这种变量成为实例变量(instance variable),Get 与 Set 访问符 属性实现的一般模式 Public Class Private As Public Property As Get Return End Get Set (ByVal As ) = End Set End Property End Class,Public Class Car Private insSpeed As Single Property Speed() As Single Get Return insSpeed End Get Set(ByVal value As Sing
49、le) If value 0 Then insSpeed = 0 Else insSpeed = value End If End Set End Property End Class,Public Class Car Private insSpeed As Single Property Speed() As Single Get Return insSpeed End Get Set(ByVal value As Single) If value 0 Then insSpeed = 0 Else insSpeed = value End If End Set End Property En
50、d Class,Dim objC As New Car Dim X As Single X=objC.Speed,objC.Speed=100,封装性和数据隐藏是面向对象的基本要求之一 通过Get 和Set 访问符访问私有数据不仅可以防止实例变量接收非法值,还可以在类的客户面前隐藏实例变量的内部表现形式,从而实现封装性和数据隐藏的要求。 定义属性,可以在Set过程中实现对数据的合法性检验,练习题1,定义一个类GradeBook,包含一个属性CourseName和一个方法DisplayMessage。其中,属性CourseName用来接收和改变课程的名字,课程的名字不能超过20个字符,如果超过了
51、,将只取前20个字符。方法DisplayMessage用于显示一条格式为“欢迎进入XXX课程!”的信息,XXX用CourseName加以替代。 同时,编写一个控制台程序,定义一个GradeBook的对象变量,为改变量的CourseName属性赋值,并调用DisplayMessage方法。,构造函数的定义与使用,每个新建的类将成为Visual Basic的一种新类型,可以用于声明变量及创建对象。 Dim g As New GradeBook() 构造函数用于在创建类的对象时,对对象进行初始化。每个对象在创建时都要进行一次构造函数调用。关键字New调用类的构造函数,执行初始化任务。默认情况下,如果
52、一个类没有显式地定义构造函数,编译器会提供一个不带参数的默认构造函数。,构造函数的名字只能用New,且只能定义成Sub型 Class Test Public Sub New() End Sub Public Sub New(ByVal value As String) End Sub End Class,练习题2,为任务1定义的GradeBook类定义一个可接收字符型参数的构造函数,用户可以在初始化该类的对象变量时直接传递一个课程的名字给属性CourseName 同时,重新编写一个控制台程序,测试该类。,有形参的方法的定义 过程 Sub 方法名(形参列表) End Sub 函数 Functio
53、n 方法名(形参列表) As 返回值类型 Return expression End Function,方法的形参与实参,Module Module1 Sub Main() Dim x, sglResult As Single x = Console.ReadLine sglResult = Area(x) Console.WriteLine(sglResult) End Sub Function Area(ByVal r As Single) As Single Area = Math.PI * r * r End Function End Module,实参,形参,传递参数的方式:按值传递
54、和按引用方式传递,ByVal|ByRef 形参变量1 As 类型, ByVal 说明的形参,在传递参数时采取按值传递的方式,即传递过来的是实参的副本。 ByRef说明的形参,在传递参数时采取按地址(引用)传递的方式,即传递过来的是实参的地址(本身)。,Module Module1 Sub Main() Dim X As Integer X = 5 Console.WriteLine(Main中的X初值: & X) ValTest(X) Console.WriteLine( 调用过ValTest后,main中X的值: & X) RefTest(X) Console.WriteLine( 调用过R
55、efTest后,main中X的值: & X) End Sub Sub ValTest(ByVal X As Integer) Console.WriteLine( 进入ValTest时,X的值 & X) X = X + 10 Console.WriteLine( 离开ValTest时,X的值 & X) End Sub Sub RefTest(ByRef var As Integer) Console.WriteLine( 进入RefTest时,var的值 & var) var = var * 5 Console.WriteLine( 离开RefTest时,var的值 & var) End Su
56、b End Module,同名变量未必是同一个变量 不同名的变量也可能是同一个变量,访问限定符Public 和 Private,限定了变量或方法可被访问的范围 Public声明的变量、属性、方法可被其他类对象访问,Private声明的变量、属性、方法则只能被当前类成员所访问。 多数情况下,实例变量声明为Private,方法和属性声明为Public。如果省略了限定符,默认情况下,实例变量为Private,方法和属性为Public。,练习题3,创建一个DateInformation类,包含月(Month)、日(Day)、年(Year)三个属性。月日的Set过程应提供合理的数据校验,保证日期的合理性
57、。同时包含一个DispalyDate方法,以“2008年2月1日”的形式显示数据。,练习题4,编写一个类,其中包含一个属性N(代表待计算的阶乘, 20以内的正整数,若输入不符, 则取0),包含一个方法,用于计算属性N的阶乘值。 编写一个Windows程序,窗体中包含两个标签控件,一个文本框控件和一个按钮控件。其中,文本框控件用来接收用户输入的值。标签控件一个用来提示输入的内容,另一个用于显示输出的结果。 要求编程实现,当用户点击按钮时,利用上述类的对象计算正整数n的阶乘。显示计算的结果。,第四讲 深入理解方法,声明含有多个形参的方法,一个方法可以接收多个实参,需要在声明方法时,声明好形参列表,
58、多个形参要用逗号分隔 Sub Test(ByVal ss As Integer, ByVal tt As String) Function Pow(ByVal x As Double, ByVal y As Double) As Double,共享方法,通常,类的大多数方法是在特定对象上进行调用的。 例如: Dim objA, objB As New GradeBook objA.DisplayMessage(“Visual Basic”) objB.DisplayMessage(“管理信息系统”) 如果一个方法所执行的任务并不依赖于对象的内容,我们可以把这种方法声明为共享方法(又称类方法),在模块(Moudle)中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品实验管理办法
- 临床医疗管理办法
- 会员宿舍管理办法
- 个人质押管理办法
- 低保评审管理办法
- 业务扩充管理办法
- 依法治乡管理办法
- 乡镇街区管理办法
- 专利开发管理办法
- 人脸管理办法西安
- 徐州市贾汪区中小学校选调教师笔试真题2024
- 【语文 北京版】2025年高考招生统一考试高考真题语文试卷(真题+答案)
- 民办培训机构终止时学员及教师安置情况报告范文
- 2025版新《中华人民共和国治安管理处罚法》全文课件(原创)
- 浙江省杭州市联谊学校2024-2025学年高二下学期6月期末考试 英语 含答案
- 压疮护理新技术
- 员工车间参观活动方案
- 信息技术在幼儿园语言教学中的应用探讨
- 2025年广西专业技术人员继续教育公需科目(三)答案
- 住培导师管理制度
- 煤矿七新考试题及答案
评论
0/150
提交评论