当前位置:编程学习 > C#/ASP.NET >>

VB.NET中的面向对象编程特征

答案:     Visual Basic 7也被称作VB.NET,具备了面向对象(OOP)编程语言的所有特征。对于VB编程人员来说,面向对象的概念和面向对象编程方式都不陌生。
  
    如果问一个面向对象程序设计高手什么是面向对象程序设计语言?他可能会说出一大堆诸如类、接口、消息隐匿、封装、继承、多态性这样的名词,这些名词听起来都很酷,不是吗?但面向对象编程并非通过一两天的学习或听一次课就能掌握的。要真正地掌握面向对
  象程序设计,不但需要掌握一定的理论知识,同时还要进行一些实际的编程练习。本文探讨了在VB.NET中运用面向对象原理编程的基本方法,全面论述VB.NET中面向对象编程的知识已经超出本文的范围。
  
  面向对象编程的优点
  
    不知道读者是否考虑过为什么现代程序设计语言会向面向对象编程靠拢?C++、JAVA为什么这么普及?这是因为面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等等。这些优点是过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点:
  
    维护简单
  
    模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。
  
    可扩充性
  
    面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。
  
    代码重用
  
    由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework类库,.NET Framework类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
  
    下面我们最简单的特性开始来论述面向对象编程的一些特性。
  
  类
  
    在面向对象编程技术中,类是重点中的重点。简单地说,类是一种提供一定功能的数据类型。在VB.NET中定义一个类要用到关键字Class,例如,下面的一小段代码就定义一个名字为Employee的类:
  
    Employee类
  
    Class Employee
  
    End Class
  
    定义一个类就是这么简单。注意,在对类命名时,微软推荐使用Pascal语言的命名规则。根据这种命名规则,就意味着类名的第一个字母必须大写,并且后面的并发连结词的第一个字母均为大写,例如象GeneralManager、SmallDictionary、StringUtil都是合乎这种规则的类名。
  
  类成员
  
    一个类有象域、属性、子程序和函数这些成员,例如,下面的employee类中有一个名字为work的子程序:
  
    包含Work方法的Employee类
  
    Class Employee
  
    Public Sub Work ()
  
    ' Do something here
  
    End Sub
  
    End Class
  
    子程序和函数都被称为方法,方法的命名也遵循Pascal语言的命名规则。
  
    另一种类成员是域。域的命名法则遵循camel规则,即除第一个子串外的所有子串的第一个字母大写。象salary和quarterlyBonus都是符合规则的域名。下面的代码在Employee类中添加了salary和quarterlyBonus这二个域:
  
    增加了二个域的Employee类
  
    Class Employee
  
    Dim salary As Decimal = 40000
  
    Dim yearlyBonus As Decimal = 4000
  
    Public Sub PrintSalary()
  
    ' print the salary to the Console
  
    System.Console.Write(salary)
  
    End Sub
  
    End Class
  
    Module Module1
  
    Public Sub Main()
  
    Dim anEmployee As Employee
  
    anEmployee = New Employee()
  
    anEmployee.PrintSalary()
  
    End Sub
  
    End Module
  
    上述代码段中的Module1模块中提供了子程序的Main函数,这也是VB.NET程序开始的地方。要编译源程序,就必须用一种或另一种方式提供访问Main Sub的途径。
  
    如果你使用的不是Visual Studio.NET,那么可以使用vbc.exe软件编译VB.NET源程序,vbc.exe是在安装.NET Framework时自动安装的。例如,当你把源代码保存为Employee.vb文件后,在Employee.vb所在的目录下,输入vbc Employee.vb即可编译该源程序。
  
    现在我们再来看看上面的代码,子程序的Main函数首先定义了一个Employee类型的变量━━anEmployee:
  
    Dim anEmployee As Employee
  
    然后使用关健词New对Employee进行初始化:
  
    anEmployee = New Employee()
  
    这样,我们就得到了一个Employee类型的变量,我们就可以使用它的功能了(福特汽车公司的工程师生产出汽车后,我们就可以启动并驾驶它了。)。在我们的例子中,可以使用下面的方法调用PrintSalary方法:
  
    anEmployee.PrintSalary()
  
    这一方法会打印Employee中salary变量的值。
  
    当然,我们也可以将子程序的Main函数移到类的定义中去,这样就无需再使用模块了。下面的代码即演示了这种方法:   子程序的Main函数在类的定义中
  
    Class Employee
  
    Dim salary As Decimal = 40000
  
    Dim yearlyBonus As Decimal = 4000
  
    Public Sub PrintSalary()
  
    ' print the salary to the Console
  
    System.Console.Write(salary)
  
    End Sub
  
    Public Shared Sub Main()
  
    Dim employee As Employee
  
    employee = New Employee()
  
    employee.PrintSalary()
  
    End Sub
  
    End Class
  
    注释:PrintSalary方法中的System.Console.Write表示我们调用了Console类中的Write方法,而Console类又是System名字空间的一部分。关于名字空间的要领将在下面的部分讨论:
  
  名字空间
  
    在编写.NET软件时,我们会用到类和其他类型。为了使应用程序更有条理性,可以将类组合为名字空间,微软的.NET Framework类库就是这样的。如果打开.NET Framework SDK文档中的.NET Framework Class Library,会看到其中有80多个名字空间,需要经常乃至的重要的名字空间包括System、System.IO、System.Drawing、System.Windows.Forms等。例如,在Employee类的PrintSalary方法中,我们就使用了System名字空间中的Console类。
  
    如果要在程序中使用名字空间,可以首先导入它,以便在以后每次使用其成员时无需重复该名字空间的名字。例如:可以将表4、5中的代码改写为下面表6中形式:
  
    导入名字空间
  
    Imports System
  
    Class Employee
  
    Dim salary As Decimal = 40000
  
    Dim yearlyBonus As Decimal = 4000
  
    Public Sub PrintSalary()
  
    ' print the salary to the Console
  
    Console.Write(salary)
  
    End Sub
  
    Public Shared Sub Main()
  
    Dim employee As Employee
  
    employee = New Employee()
  
    employee.PrintSalary()
  
    End Sub
  
    End Class
  
    好了,我们现在就可以在PrintSalary方法使用Console类而无需引用名字

上一个:VB.NET实现超级ptm查看器
下一个:ASP.NET图象处理详解

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,