内容简介本书主要讲解了用VB.NET设计类时的一些具体细节。首先介绍什么是类型,接下来具体介绍组成类型的类型成员(如方法、构造函数、属性和事件等),最后研究如何将类型集中在一起组成程序集。本书适用于希望深入理解.NET平台的VB.NET开发人员,通过对本书的学习,可以进一步理解VB.NET为设计类而提供的各种机制。Andy Olsen, Damon Allison, James Speer:Visual Basic .NET Class Design HandbookEISBN:1-86100-708-6Copyright? 2002 by Wrox Press Ltd.Authorized translation from the English language edition published by Wrox Press Ltd.All rights reserved. For sale in the People's Republic of China only.Chinese simplified language edition published by Tsinghua University Press.
前言 想请问一下听说过 Visual Basic .NET的人,VB.NET超越Visual Basic 6的最大改变是什么, 很可能他们会说是“面向对象”。但是这表示什么意思呢?在某种程度上,Visual Basic从VB5开始就已经是面向对象的了,那么.NET本身的创新之处又在哪里呢?大多数人认为应该是继承,这样可以利用代码重用和类层次结构的多态性。那确实是在我们的代码中使用面向对象技术的一种可见方式,但是还有一个至关重要的基本转变,即我们在任何时候编写的所有代码最后都属于一个类,VB.NET程序员必须习惯这一点,虽然这在VB.NET中并没有得到广泛的重视。 因此,每次当您使用Visual Studio .NET或记事本开始编写VB.NET代码时,您实际上正在设计一个类。当您编写一个Sub时,您是在编写一个方法;当您声明一个Event时,您是在创建字段和其他类。理解这一点后,您就可以知道我们能把什么放入一个类中,以及它对.NET运行时的真正意义,它能完全利用Visual Basic .NET 的基础。本系列丛书的目的是解释如何使用语言来最有效地使用 .NET 平台,而本书的目的是解释如何使用Visual Basic .NET来最有效地使用.NET 类型系统。 0.1 本书面向对象 本书面向希望探索.NET平台全部功能的VB.NET开发人员。虽然编写VB.NET程序可能只需在Visual Studio中拖放,然后右击组件,将代码添加到事件处理程序中,但本书面向的是有兴趣在这些约束之外编写代码的开发人员。如果希望定义自己的数据类型,建立自己的类层次结构,或建立带有健壮接口的类,那么就需要深入理解VB.NET 为设计类提供的机制。这也是本书的主题。 本书假定您已经使用VB.NET编写过代码,熟悉其基本语法。您应该熟悉所选择的开发工具,知道如何编译和运行VB.NET代码。 您应该知道.NET基本的面向对象机制—— 例如,哪些对象是类的实例,如何实例化对象,如何访问对象的方法和属性。不过,我们会在讨论时,扼要讲述一下其中关键字的含义和语法。 0.2 本书主要内容 每次利用VB.NET编写代码时,我们都是在编写一个类—— 这是无法避免的。本书讨论程序员在这个环境中所做的一些决定,把这些决定放入它们真正的上下文中:有关类设计的决定。因此,当我们编写一个Sub, 并决定是否使它Shared,Public 还是Private,以及它应该接受什么参数等时,本书帮助我们在如何影响类的设计的上下文中研究这些决定。 本书并不讨论我们每天都在编写的那些代码,而是提出问题“它真正在做什么?”要求您不要只在效果方面考虑每个VB.NET 关键字,而是要考虑它如何完成那个效果。在本书中,我们会介绍所有这些代码是如何被编译成.NET 类型的,如何定义类型成员,如何继承类型成员,如何把类型聚合到程序集中,如何能控制类型实例的创建,以及有效地编写类方面的更多内容。 注意: 在本书中,所附代码段顶部一般都省掉了“Imports System”。这样的代码段在vbc.exe编译器中是不能编译的,因此您在使用时应添加“Imports System”。 0.3 本书不包括的内容 本书不是一本关于面向对象分析和设计、UML建模或设计模式的书。它不解决如何抓住业务难题的问题,决定应该编写哪些类来解决这些问题。它集中在实现的问题上:如何编写一个类来提供特定的行为。 它也不是对面向对象的基本介绍,因为任何VB 程序员都应该已经熟悉这样的思想了,即一个对象对应了一个实例,调用它的方法并访问属性,即使没有自定义类型的过程,同样可以这样做。如果您使用对象很轻松,那么本书不一定适合于您。 0.4 本书具体内容 本书将介绍在.NET中究竟由什么组成一个类。我们从描述类型是什么,以及类如何关联到.NET类型框架开始,接下来讨论了组成类型的类型成员。本书大部分内容主要介绍VB.NET为设计类型成员(方法、构造函数、属性和事件)提供的不同机制,最后研究类型如何集中在一起组成程序集。 以下是各章的主要内容: 第1章—— 定义类型 该章阐述究竟什么是类型,类型在.NET中发挥什么作用,以及存在哪些类型。我们还要分析可以在VB.NET中声明的不同类型,以及它们如何映射为.NET类型。 第2章—— 类型成员 在第2章中,我们介绍类型成员:什么是类型成员,如何定义类型成员,以及如何用VB.NET 关键字定义类型成员。我们还要介绍由从.NET根类System.Object派生出来的每个类型所继承的类型成员。 第3章—— 方法 方法是.NET 应用程序中广为应用的工具,包括所有程序逻辑。该章研究对所有方法通用的行为,以及在VB.NET中如何定义简单方法。 第4章—— 构造函数和对象生命周期 构造函数是有些特殊的方法,调用它可以初始化类型的新实例。在该章中,我们介绍如何编写这些特殊的方法,以及如何使用它们来控制可以创建类型实例的代码。 第5章—— 属性 属性(标量属性和索引属性)是一种机制,它允许我们创建指定方法来访问属于类型的数据。该章研究如何实现属性,索引属性如何工作,以及在VB.NET 中默认属性所发挥的作用。 第6章—— 事件和委托 VB.NET 中最复杂的类型成员是事件。该章阐述委托如何工作,以及.NET 如何通过委托字段和指定方法来提供它的事件基础结构。 第7章—— 继承和多态性 类型并不仅仅是它的成员总和,它还包括从超类中继承的所有成员。本章研究.NET 类型的继承工作机制,成员何时被继承或不被继承,以及我们如何使用VB.NET控制和利用继承。 第8章—— 代码组织和元数据 当我们在VB.NET 中编写类时,我们必须决定在何处准确地放置这个类,除了在逻辑上要放置在命名空间结构里,在物理上还要放置在源文件里,以及最终放置在.NET程序集里。该章将讨论这些问题。我们还要使用.NET元数据把数据添加到我们的类中,这个类也许对其他使用它的程序员有用。 0.5 前提条件 在学习本书前,您应该能够编译和执行在Visual Basic .NET中编写的代码。这意味着您将需要: ● .NET Framework SDK,可从 Microsoft的MSDN站点 的Software Development Kits类别中获得。在本书出版时,下载页面可通过下面的URL获得: ● Visual Studio .NET,它结合了 Visual Basic .NET。包括2002版的Visual Basic .NET IDE和下面的 Microsoft产品: Microsoft Visual Basic .NET Standard Microsoft Visual Studio .NET Enterprise Architect Microsoft Visual Studio .NET Enterprise Developer Microsoft Visual Studio .NET Professional 产品主页是 还有几种支持其他平台的.NET产品正在开发中,但是在本书出版时,都不支持 VB.NET 编译。