visual basic net n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第 五章 Visual Basic.NET 面向对象语言基础 PowerPoint Presentation
Download Presentation
第 五章 Visual Basic.NET 面向对象语言基础

Loading in 2 Seconds...

play fullscreen
1 / 49

第 五章 Visual Basic.NET 面向对象语言基础 - PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on

第 五章 Visual Basic.NET 面向对象语言基础. 本章学习目标. 了解面向对象程序设计方法的基本原理及主要特点 —— 抽象性、封装性、继承性、多态性。掌握类和对象的概念以及如何用类来解决具体问题并在类的基础上如何派生出新类,以及重载的概念和作用。. 本章学习要点. Visual Basic.NET 语言的新特性和变化。 封装、继承、多态性的概念和使用方法。 类和对象的概念、定义方法及对象的构造。 继承和重载的概念及应用。 接口的概念及用法。. 5 .1 面向对象的思想.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 五章 Visual Basic.NET 面向对象语言基础' - aiko-perez


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
本章学习目标

了解面向对象程序设计方法的基本原理及主要特点——抽象性、封装性、继承性、多态性。掌握类和对象的概念以及如何用类来解决具体问题并在类的基础上如何派生出新类,以及重载的概念和作用。

slide3
本章学习要点
  • Visual Basic.NET语言的新特性和变化。
  • 封装、继承、多态性的概念和使用方法。
  • 类和对象的概念、定义方法及对象的构造。
  • 继承和重载的概念及应用。
  • 接口的概念及用法。
slide4
5.1 面向对象的思想

面向对象的方法将数据与对数据的操作方法放在一起,作为一个相互依存、不可分离的整体——对象。对同类型对象抽象出共性,形成类。类的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。每个对象都有各自的内部属性和操作方法,整个程序由一系列相互作用的对象构成。

slide5
5.2 面向对象程序设计的特点

面向对象的程序设计方法是一种系统化的程序设计方法,它允许抽象化、模块化的分层结构,具有多态性、继承性和封装性。

抽象性与封装性

继承性

多态性

slide6
5.2.1 抽象性与封装性

面向对象方法中的抽象是指对具体问题进行概括,抽出一类对象的公共性质并加以描述的过程。抽象的过程,就是对问题进行分析和认识的过程。

slide7
5.2.2 继承性

继承性是指一个新类可以从已有类派生,这个过程称类的继承。新类继承了已有类的特征,称原来类的派生类,也叫做子类,已有类叫做基类或父类。

slide8
5.2.3 多态性

多态性是指一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。多态性支持“同一接口,多种方法”,使高层代码只能写一次而在低层可多次复用。

例如,“调制解调器”类是“电话”类的派生类。“电话”类可以有“拨号”方法,“调制解调器”类也可以有“拨号”方法。但该方法的实现方式可以完全不同。

slide9
5.3 类和对象

将数据及对数据的操作法封装在一起,作为一个相互依存,不可分离的整体——对象。

对同类型对象抽象出其共性形成类。

slide10
对象
  • 客观世界中的:是现实世界中的一个实际 存在 的事物(如:人、车、一项计划)。

特点:有静态特性

有动态特性(例:学生)

  • 计算机中的:是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。

属性:描述对象静态特征的数据项。

行为:描述对象动态特征的数据项。

slide11
  • 类:具有相同属性和行为的一组对象的集合。

为属于该类的全部对象提供了抽象的描

述,包括属性和行为两个部分。

类与对象的关系:

集合——成员

抽象描述 ——具体实例

slide12
5.3.1 属性

Visual Basic.NET的对象都有许多属性,它们是用来描述和反映对象特征的参数,对象中的数据就保存在属性中。

按钮的常用属性

slide13
5.3.2 方法

对象的属性实际上是对象的数据,而对象本身就是对这些数据及其操作进行封装的结果,对象本身包含的函数或过程叫做方法。

        列表框的常用方法

slide14
对象调用方法的语法格式为:

对象名.方法 [ 参数 ]

例如:

列表框名.clear

列表框名.Items.Add(“新的表项名”)

slide15
5.3.3事件及事件过程

对于对象而言,事件就是发生在该对象上的消息。可以把事件看做是一个响应对象行为的动作。

文本框的常用事件

slide16
5.4 面向对象编程的实现

Visual Basic.NET是一种真正意义上的面向对象语言,它将编程人员带入了一个全新的编程方式中,即真正的面向对象编程技术,它是一种用对象分析、设计并编写应用程序的方法。

slide17
5.4.1 类的创建

要实现面向对象的编程,必须首先定义类。在Visual Basic.NET中,使用Class语句定义一个类,同时定义这个类的属性、事件和方法等。

slide18
项目中增加空类的方法:

在VB.NET中增加一个类,需要先创建一个新的Windows应用程序项目,步骤如下:

(1)打开VB.NET集成开发环境,出现起始页。

(2)单击“新建项目”,打开新的项目窗口,选择“VB项目”类型,“空项目”模板,输入项目名称,然后确定。

(3)选择“项目”|“添加类”菜单命令,弹出“添加新项”对话框,在“模板”中选择“类”,在“名称”框中输入类的名称“ClassName”,单击“打开”按钮,出现一个空类。

项目中添加了一个新文件,它包含了以下代码:

Public Class Class_Name

End Class

1 class
1、Class关键字

   在.vb文件中可以包含多个类、模块以及其他代码。在VB.NET中创建类的时候,只要在Class和End Class之间就可以添加与该类有关的代码。

Public Class Class_Name

End Class

2 property
2、用Property语句创建属性

  类的属性描述了对象的具体特征。在Visual Basic.NET中,类中的属性需要用Property语句来创建,属性可以有返回值,也可以赋值,所以,创建属性的关键在于如何实现返回值和赋值,由Get语句和Set语句实现。

  • Property语句的格式为:
  • Property 属性名([参数表]) [As 类型名1]
  • Get
  • <语句块>
  • End Get
  • Set (ByVal Value As 类型名)
  • <语句块>
  • End Set
  • End Property
slide21

创建属性的例题:

Public class myclass

Public x As Integer

Private y As Integer = 0

Public Property y() As Integer

Get

Return y

End Get

Set(ByVal value As Integer)

If value <= 50 Then y = value

End Set

End Property

End Class

slide22
3、创建方法

在VB.NET中,类中方法的创建是使用Sub和Function关键字:

Sub mywork( )

……

End Sub

Function myage( ) as integer

……

End Function

Sub和Function的区别是,用Sub来创建一个方法它不返回数值;若是用Function来创建一个方法,它将返回一个数值作为结果。

slide23
作用域关键字包括以下几个:
  • Private:私有属性,表明只能调用类中的代码。
  • Friend:友元属性,表明可以在项目/控件中调用代码。
  • Public:公共属性,表明可以在类外部调用代码。
  • Protected:保护属性,表明改类的派生类可调用代码。
slide24
【例5-1】 建立一个“学生”类,代码如下:
  • Public Class student
  • Dim score As Decimal = 85
  • Public Sub show()
  • System.Console.WriteLine("学生成绩为:" & score)
  • End Sub
  • End Class
  • Public Class test
  • Shared Sub main()
  • Dim student1 As student
  • student1 = New student
  • student1.show()
  • End Sub
  • End Class
slide25
5.4.2 对象的声明和取消

   在面向对象的编程中,实际操作的是类中的具体实例——对象,类只是一个模板。因此创建一个对象的过程又被称为实例化。

   定义好类以后可以通过New关键字创建类的实例,即类的对象。

1. NEW语句

Visual Basic.NET使用NEW语句创建对象,程序员可以在任何地方使用NEW 代码。例如:创建一个myclass类型的对象,代码如下:

Dim theclass as myclass

Theclass=new myclass

上面的语句可以简化为下面的语句:

Dim theclass as new myclass

slide26
2.取消对象

   要销毁一个对象,也就是释放与这个对象有关的资源,只需要给该对象变量赋值Nothing即可。代码如下:

Dim theclass as myclass

Theclass=new myclass ‘在此对象实例化和初始化

Theclass=nothing ‘销毁theclass对象

slide27
【例5-2】定义一个clock(时钟)类。通过这个类我们可以知道时钟的一些信息:时钟由时、分、秒三个整数来实现。所有这些都是时钟对象的属性,是对象性质的信息描述。另外,时钟还有显示时间等行为,这就是对它的方法,例如:ShowTime(显示时间)。【例5-2】定义一个clock(时钟)类。通过这个类我们可以知道时钟的一些信息:时钟由时、分、秒三个整数来实现。所有这些都是时钟对象的属性,是对象性质的信息描述。另外,时钟还有显示时间等行为,这就是对它的方法,例如:ShowTime(显示时间)。
slide28

Public Property seconds() As Integer

Get

Return s

End Get

Set(ByVal value As Integer)

s = value

End Set

End Property

Public Sub ShowTime()

Console.WriteLine("设置时间为" & hours & ":" & minutes & ":" & seconds)

End Sub

End Class

  • Public Class clock
  • Private h As Integer
  • Private m As Integer
  • Private s As Integer
  • Public Property hours() As Integer
  • Get
  • Return h
  • End Get
  • Set(ByVal value As Integer)
  • h = value
  • End Set
  • End Property
  • Public Property minutes() As Integer
  • Get
  • Return m
  • End Get
  • Set(ByVal value As Integer)
  • m = value
  • End Set
  • End Property

Module Module1

Sub main()

Dim time1 As New clock()

time1.hours = 10

time1.minutes = 28

time1.seconds = 59

time1.ShowTime()

End Sub

End Module

slide29
5.4.3 对象的生命周期

VB.NET中的对象有生存周期。定义一个对象的生存周期只需要一个New事件,这个New事件是在对象中其他代码之前运行的,并且在对象被创建时被调用。

   在VB.NET中,类似普通变量的初始化,类实例化时也可以初始化,称为对象的初始化,即给它的数据成员赋初值。对象初始化时,由一个特殊的成员函数完成,这个函数称为构造函数。对象的构造函数是在创建一个类的新实例的时候被调用的,程序中不能执行直接调用。构造函数的名称只能用New,并且不能指定函数类型,构造函数可以重载,即可以定义参数个数不同或参数类型不同的多个构造函数。

slide30
构造函数的格式如下:

Public Sub New( ……)

End Sub

   若类中没有定义任何形式的构造函数,系统会自动生成默认的构造函数,即空构造函数。如下:

Public Sub New( )

End Sub

slide31
1、对象的构造

   对象构造是在使用New关键字创建类的新实例对象时被触发的。

Public class theclass

Public sub new()

      ‘在这里初始化对象

End sub

End class

   利用这种类型的构造函数,就可以创建类的一个实例对象:

Dim obj as new theclass()

slide32
可以采用两种方式实现构造函数:一是通过使用optional关键字来声明一个可选参数,二是通过重载new方法.

(1)使用optional关键字,只需把参数声明为可选即可,形式如下:

Public sub new(optional byval id as integer=-1)

If id=-1 then

‘在这里初始化对象

Else

‘用id值来初始化对象

End if

End sub

(2)使用一个new方法,通过重载来实现的,形式如下:

Public overloads sub new

‘在这里初始化对象

End sub

Public overloads sub new(byval id as integer)

‘用id值初始化对象

End sub

slide33

Module Module1

Sub main()

Dim time1 As New clock()

time1.ShowTime()

Dim time2 As New clock(10, 28, 59)

time2.ShowTime()

End Sub

  • Public Class clock
  • Private h As Integer
  • Private m As Integer
  • Private s As Integer
  • Public Sub New()
  • h = 12
  • m = 12
  • s = 12
  • End Sub
  • Public Sub New(ByVal h1 As Integer, ByVal m1 As Integer, ByVal s1 As Integer)
  • h = h1
  • m = m1
  • s = s1
  • End Sub
  • Public Sub ShowTime()
  • Debug.WriteLine("设置时间为" & h & ":" & m & ":" & s)
  • End Sub
  • End Class
slide34
2、对象的中止
  • VB.NET是使用一个名为“垃圾收集”机制来中止对象的。
  • 垃圾收集的主要优点是它避免了由引用计数带来的循环引用问题。如果两个对象相互引用,且每个对象都没有任何其他引用它们的代码,垃圾收集程序会发现它们并将它们中止。还有对象的中止处理过程是在应用程序空闲时执行的,减少了对用户的影响。
slide35
5.4.4 共享类成员
  • 1、共享方法
  • 2、共享数据
  • 3、全局变量
slide36
1、共享方法

   在VB.NET中,一个类不仅可以拥有所有正常的方法和属性,而且还可以拥有一些不需要创建类的实例的方法,这些方法就是共享方法。

Public Class Math

Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer

Return a + b

End Function

End Class

可以不用实例化一个Math对象就可以访问,代码如下

Dim result As Integer

result = Math.Add (5,10)

slide37
共享方法不仅可以通过常用的方法来访问,而且可以在不需要创建一个对象的条件下提供访问的功能。实际上,当一个共享方法被调用的时候,没有任何对象被创建,它就像在模块中的一个程序,可以被直接调用。共享方法不仅可以通过常用的方法来访问,而且可以在不需要创建一个对象的条件下提供访问的功能。实际上,当一个共享方法被调用的时候,没有任何对象被创建,它就像在模块中的一个程序,可以被直接调用。
  • 共享方法和其他常用的方法一样,也可以被重载,所以可以利用相同的共享方法来创建一系列变化的方法,每一种方法有不同的参数列表。
slide38
2、共享数据

   如果类的所有实例需要共享一个数值,或者每个特定类型的对象要共享相同的变量,这些时候都可以通过使用共享变量来实现目的。共享变量可以使用Shared关键字来声明。

例如:

Public class mycounter

Private shared mintcount as integer

End class

注意:在默认状态下,共享方法的作用域是public,共享变量的作用域是private。

slide39
例:

Public class mycounter

Private shared mintcount as integer

Public sub new()

Mintcount+=1

End sub

Public readyonly property count() as integer

Get

Return mintcount

End get

End property

End class

slide40
3、全局变量

   对于共享变量另外一个用法是提供全局变量的类型。给定一个Public作用域共享变量。

例:

Public Class TheClass

Public Shared a As Integer

End Class

slide41
5.5 类的继承

Visual Basic.NET支持类的继承,允许用户定义一个类,作为其他类继承的依据,继承类能够继承,扩充基本类的属性和方法,继承类也可以重载基本类的一些方法,所有在Visual Basic.NET建立的类缺省的属性都是可继承的,其中已有类叫做基类(父类),继承的新类叫做派生类(子类)。

1、实现基本的继承

2、禁止继承

3、基类成员在派生类中的作用域

slide42

1、实现基本的继承

【例3-3】建立person类及它的派生类employee类。

Public Class person

Public sname, Iage, ssex

Public Property name() As String

Get

Return sname

End Get

Set(ByVal value As String)

sname = value

End Set

End Property

Public Property age() As Integer

Get

Return Iage

End Get

Set(ByVal value As Integer)

Iage = value

End Set

End Property

Public Property sex() As String

Get

Return ssex

End Get

Set(ByVal value As String)

ssex = value

End Set

End Property

End Class

slide43

Module Module1

Sub Main()

Dim aemployee As New employee()

aemployee.name = "王强"

aemployee.sex = "男"

aemployee.age = 25

aemployee.salary = 3600.0

aemployee.Displayemployee()

End Sub

End Module

Public Class employee

Inherits person

Dim Ssalary As Single

Public Property salary() As Single

Get

Return Ssalary

End Get

Set(ByVal value As Single)

Ssalary = value

End Set

End Property

Sub Displayemployee()

Debug.WriteLine("雇员的姓名:" & name)

Debug.WriteLine("雇员的性别:" & sex)

Debug.WriteLine("雇员的年龄:" & age)

Debug.WriteLine("雇员的薪水:" & salary)

End Sub

End Class

slide44
2、禁止继承

   在默认状态下,创建的任何类都是可以用作基类,可由这个基类创建其他的类。但有时需要创建一个不被继承的类,这时可以在类的声明中使用NotInheritable关键字。

Public NotInheritable Class Class_name

End Class

slide45
3、基类成员在派生类中的作用域

   通过继承性创建子类时,新类将从父类获得所有Public 和 Friend方法、属性及变量。但在父类中声明的Private的任何内容都不能直接应用于新子类的代码中。

slide46

Module Module1

Sub Main()

Dim aemployee As New employee()

aemployee.setperson("王强", 25, "男", 3600.0)

aemployee.Displayemployee()

End Sub

End Module

Public Class employee

Inherits person

Dim Ssalary As Single

Public Property salary() As Single

Get

Return Ssalary

End Get

Set(ByVal value As Single)

Ssalary = value

End Set

End Property

Sub setperson(ByVal n As String, ByVal a As Integer, ByVal s As String, ByVal c As Single)

name = n

age = a

sex = s

salary = c

End Sub

Sub Displayemployee()

Debug.WriteLine("雇员的姓名:" & name)

Debug.WriteLine("雇员的性别:" & sex)

Debug.WriteLine("雇员的年龄:" & age)

Debug.WriteLine("雇员的薪水:" & salary)

End Sub

End Class

slide47
5.6 重载

VB.NET具有重载方法的功能,可以利用重载来实现多态性。重载是可以在一个类中可多次声明相同名称的一种方法,只要每个声明都有不同的参数列表即可。其中参数列表不同指的是参数的数据类型不同或参数的个数不同。

slide48
Public Class sum

Public Function add(ByVal a As Integer, ByVal b As Integer) As Integer

Return a + b

End Function

Public Function add(ByVal a As Double, ByVal b As Double) As Double

Return a + b

End Function

End Class

Module Module1

Sub main()

Dim NO1, NO2 As New sum

Debug.WriteLine(NO1.add(5, 6))

Debug.WriteLine(NO2.add(2.5, 3.6))

End Sub

End Module

slide49
5.7多继承——接口

   多继承由多个基类继承所以为编程带来一定的复杂性,但可以通过接口来解决此问题。和类一样接口也定义了一系列属性、方法和事件。但与类不同的是,接口并不提供实现,它们由类来实现,并从类中被定义为单独的实体。