书城计算机网络综合应用软件设计
8724600000022

第22章 软件构造(1)

6.1软件构造概述

软件实现对应于第1章的软件构造部分。软件构造就是通常所说的软件编码和调试。对于软件构造,需要强调以下几点。

1.设计模式的使用

当然,软件构造的内容事实上是相当丰富的,尤其是当选择相应的设计模式时。设计模式概念是由建筑设计师Christopher Alexander提出:“每一个模式描述了一个在周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。上述的定义是对设计模式的广义定义。将其应用到面向对象软件的领域内,就形成了对设计模式的狭义定义:设计模式就是解决某个特定的面向对象软件问题的特定方法。设计模式对于面向对象的编程十分重要。

2.代码复查的重要

在这一阶段,保证软件质量的最佳手段就是代码复查,所谓代码复查最基本的要求是程序员在执行编译之前,复读代码。当然在团队开发时,也可以请有经验的程序员进行复查。

这一看似简单的操作现在已经成了保证软件质量的非常重要的一个措施。尽早建立这一观念,将十分有益。

3.代码重构

代码重构虽然是极限编程中的做法,但对于中小型的,或者需求多变环境下的软件项目却有着普遍的意义。所谓代码重构是要求程序员随时准备对其程序进行结构上的重新调整,以保证代码始终保持在最佳的可复用、低冗余的状态。

在本章后面的内容中将重点介绍在Visual Studio.Net开发平台的软件实现技术。

6.2.NET框架介绍

6.2.1.NET Framework

首先要声明的是,由于篇幅有限,在这里只概括性介绍.NET Framework。

要了解新的事物或概念,必须先了解它的定义。微软对.NET Framework的定义是这样的——The.NET Framework is a new computing platform that simplifies application development in the highly distributed environment of the Internet。意思是.NET Framework是在高度分布式的互联网环境中,使软件开发简单化的新的计算平台。这里所说的“分布式的互联网环境”很重要。以后很多的商业活动会在网上进行,所以也应该跟着时代潮流,在做程序的时候要考虑到这一点。说白了就是在.NET Framework平台下可以提高我们应用程序开发的速度。下面首先介绍一下.NET平台的优点。

6.2.2.NET平台的优点

①提供标准的面向对象开发环境,不仅可以在本地与对象交互,还可以通过Web Service和.NET Remoting技术与远程对象交互。

②提供优化的代码执行环境,使以前让人们头疼的程序版本问题得到了解决。可以在同一台机器中安装相同程序的不同版本,而且deployment也得到了改善,微软称其为“XCOPY”,就是说像复制文件一样简单了。

③提供代码运行安全性。以前总会担心网页中包含的ActiveX控件会执行恶意的代码,但现在不用担心了,因为.NET Framework可保障执行代码的安全性。

④使用JIT(Just In Time)技术,提高代码运行速度。

⑤提供标准的框架和强大的开发工具,可以让程序员在实际的开发当中,积累更多的经验。

⑥.NET遵循业界标准规范,所以可以让代码(.NET里的代码)与其他系统交互。

6.2.3.NET构架

.NET有两个主要的部件:一个是CLR(Common Language Runtime),中文名叫公共语言运行库;另一个是.NET Framework class library,称它为.NET Framework类库。

CLR是.NET系统构架中最核心部分,负责执行代码、管理内存、提供安全性等核心功能,有点类似于JAVA的VM。运行在.NET Framework中的代码叫作managed code,反之叫作unmanaged code。公共语言运行库还提高了开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。任何选择以运行库为目标的编译器供应商都可以这样做。以.NET Framework为目标的语言编译器使得用该语言编写的现有代码可以使用.NET Framework的功能,这大大减轻了现有应用程序迁移过程的工作负担。

.NET Framework类库是一个与公共语言运行库紧密集成的可重用的类型集合。它提供功能强大而且完全面向对象的函数库,可以在任何种类的项目中使用。以前SDK是函数方式,而且比较复杂,但现在用组件封装之后,使用起来就比较简单了。.NET Framework class library包括以下方面的组件:

Console applications

Windows GUI application(Windows Forms)

Asp.NET applications

XML Web services

Windows Services

.NET Framework包括类、接口和值类型,它们可加速和优化开发过程并提供对系统功能的访问。为便于语言之间进行交互操作,.NET Framework类型是符合CLS的,并因此可在任何编程语言中使用,只要这种语言的编译器符合公共语言规范(CLS)。

.NET Framework类型是生成.NET应用程序、组件和控件的基础。.NET Framework包括的类型执行下列功能。

①表示基础数据类型和异常。

②封装数据结构。

③执行I/O。

④访问关于加载类型的信息。

⑤调用.NET Framework安全检查。

⑥提供数据访问、多客户端GUI和服务器控制的客户端GUI。

.NET Framework还提供一组丰富的接口以及抽象类和具体(非抽象)类。可以按原样使用这些具体的类,或者在多数情况下从这些类派生我们自己的类。若要使用接口的功能,既可以创建实现接口的类,也可以从某个实现接口的.NET Framework类中派生类。

在这里要提示的是.NET Framework有一个简化版本。.NET Compact Framework是.NET Framework的简化版本。为了在小型机器(Smart Device)中运行,微软为.NET Framework减了肥,让它适合当前小型机器硬件环境。用于PDA的Compact Framework有2MB多的容量,而用于手机的只有几百KB。要开发小型机器程序需要安装Smart Device Extension。

下面以字符串处理、异常处理和文件处理为例对其如何使用进行说明。

1.String(名称空间是system.String)

类型声明

dim s as string

取得字符串的长度

s.Length()

检索子串

s.substring

Dim myString As String=”abc”

Dim test1 As Boolean=String.Compare(myString.Substring(2,1),”c”)=0

myString.Substring(3,1)

Dim test2 As Boolean=String.Compare(myString.Substring(3,0),String.Empty)=0

2.异常处理(名称空间system.Exception)

当对数据库操作(如插入)失败时将会产生一个异常,或者对文件操作时文件不存在,或者文件创建失败等,都会发生异常。发生异常就要进行相应的异常处理,.NET框架中提供了强大的异常处理功能。如下面是对算术异常的处理。

Public Shared Sub Main()

Dim x As Integer=0

Try

Dim y As Integer=100/x

Catch e As ArithmeticException’算术异常

Console.WriteLine(”ArithmeticException Handler:{0}”,e.ToString())

Catch e As Exception’其他异常

Console.WriteLine(”Generic Exception Handler:{0}”,e.ToString())

End Try

End Sub"Main

如上面所示处理异常时用:

Try

处理容易发生异常的代码用:

Catch

如果发生异常,在这儿进行处理

End Try

其实.NET Framework包含的东西和涉及的方面很多。下面把它涉及的一些概念罗列到一起,并附加简单解释和深入探讨的网页。读者如果遇到这些概念可以有的放矢地去寻找答案。

3.公共语言运行库

公共语言运行库是管理代码执行并提供简化开发过程服务的运行时环境。

http://www.microsoft.com/china/net/products/tools.asp

程序集是构成逻辑功能单元的类型和资源的集合。程序集是部署、版本控制、重用、激活范围和安全权限的基本单元。

http://www.vchelp.net/itbookreview/view_paper.asp?paper_id=1063

应用程序域可以提供应用程序间的隔离。

http://www.microsoft.com/china/msdn/library/SecurityGuide/Appendix.asp

通用类型系统标识公共语言运行库所支持的类型。

http://www.ccw.com.cn/02/0214/b/0214b02_2.asp

元数据和自描述组件。

.NET Framework中可以通过允许编译器将附加的声明信息或元数据发出到所有模块和程序集中来简化组件互操作。

http://www.studa.com/newbook/2003—10—13/20031013154848.asp

跨语言互用性。

使用不同编程语言创建的托管对象能够在.NET Framework中彼此进行交互。

http://www.microsoft.com/china/net/news/07—11.NETframework.asp

.NET Framework安全性。

用于防止未经授权的代码和未经授权的用户使用资源和代码的机制。

.NET Framework类库。

该类型库可以加快和优化开发过程,并能够访问系统功能。

6.3VB.NET面向对象编程

6.3.1面向对象的技术要点

1.抽象

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,要设计一个学生成绩管理系统,考查学生这个对象时,只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者当作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。

2.继承

继承是一种联结类的层次模型,并且允许和鼓励类重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法,使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好地解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。

3.封装

封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。