登陆注册
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.封装

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

同类推荐
  • 天下一家:网络联通世界(科学新导向丛书)

    天下一家:网络联通世界(科学新导向丛书)

    《天下一家:网络联通世界》一书从网络的基本知识出发,详细地介绍了网络科技的发展与用途,还包括校园网络对普及教育的重大作用。本书内容翔实、结构清晰、图文并茂,是一本实用性极强的网上冲浪参考书。
  • 办公设备使用与维护

    办公设备使用与维护

    信息技术的发展正前所未有地改变着人类生活的每一个层面,以信息化、全球化和高科技为特征的新经济浪潮滚滚而来,机遇与挑战并存。办公自动化是信息化时代最重要的标志之一,办公要实现自动化,当然离不开办公设备。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 玩转手机

    玩转手机

    本书主要包括:手机的发展历史、手机知识、手机的选购与巧用、手机与网络、手机短信等内容。
  • 图说电子计算机

    图说电子计算机

    今天人们谈到计算机常常会把它和网络联系起来。20世纪90年代兴起的因特网其影响之广、普及之快也是大家始料未及的,也从没有一种技术能像网络一样日新月异,并迅速地改变着我们的学习和生活方式。因特网大大缩小了时空界限,为我们提供了快捷方便的交流途径。在未来10年内,计算机又将会有怎样飞速的发展呢?在互联网上进行医疗诊断、远程教学、电子商务、视频会议等活动已经实现,未来的互联网的传输速率将会提高100倍,大家可以随时随地连接到因特网上,更方便地进行交流、沟通和开展商务活动。
热门推荐
  • 重生之至强学生

    重生之至强学生

    【一次热血沸腾的激情之旅】他,前世修真渡劫,却遇黑色天雷不幸陨落。她,今生命运多舛,却掌锦绣乾坤一心向前。是阴谋还是命运?看修真界'道尊'许天重生后,如何挣脱天道枷锁,挥手搅动都市风云,轻松纵横四方无敌,踩天才打恶少,抱得美人归。
  • 谱青葱

    谱青葱

    一个是出身寒门的音乐才女,一个是纵横商界的钢铁直男。酒店里,一场猝不及防的邂逅,让二人结下了解不开的梁子。他们本以为,这只不过是生命当中一个小小的插曲。却不想,这竟是爱情故事里,那浪漫的序章。
  • 傀蕴

    傀蕴

    裸傀维霸饮霜露,人貌傀洗旧风骚;牵线瑜手控命途,谋蕴诸家争尊位;傀自观闹世惬苦,指灵终旅孰长傲。
  • 岁月如风往事如叶

    岁月如风往事如叶

    风吹散了脚印,落叶飞向远方。往事如落叶随风,褪去。。。
  • 公子佛缘

    公子佛缘

    她是名满天下的仁弗小主,本在天上安安静静地听着佛法心经,却突然被扔下来历劫他是人间的一国太子,一夕之间被废了储君之位,成了温柔乡里的盛世公子公子要拿回天下,小主要担负责任。后来,公子要以天下为聘礼求取她她却斩断了两人之间一切的可能。盛世不知道,仁弗小主这繁华又可笑的一生,皆是为了他而准备的。他们就像这折子上早已写好的戏文,是悲是喜,谁都逃不过,且走,且看吧。
  • 来自地狱的死亡诅咒

    来自地狱的死亡诅咒

            年薪50万元但要求是农历七月十四出生的男孩。<br/>    这个诡异的招聘信息轰动全城。<br/>    当林子健不顾女友的百般反对,成功应聘进入SHU公司,却意外地发现这家公司隐藏着种种不可告人的秘密。一个棺材般的黑木柜,五个镶着不同照片的骨灰盒,其中一个竟然挂着林子健的照片……<br/>    这是一家什么鬼公司?到处是杀戮和阴谋么?林子健感觉自己掉进黑暗陷阱,危机重重,一个个身份莫测的同事、一个个匪夷所思的事件相继登场,离奇招聘事件背后的真相又是什么呢?<br/>    暮光之下,林子健深知探索真相的凶险、恐怖,但他别无他路……<br/>  
  • 暴疯战纪

    暴疯战纪

    生命是一条艰险的峡谷,只有勇敢的人才能通过。
  • 末代人类

    末代人类

    未来,当人类科技发展到一定程度的时候,地球能源也随之被耗尽,最终爆发世界大战,灾害,战乱,水资源缺乏,末代的人类该何去何从?主角葬的旅途,是否能给人类带来一点希望,又是否能揭开这个世界真正的神秘面纱……
  • 我在明朝养龙玩

    我在明朝养龙玩

    我咋变成了胎儿?胡勇悲剧后,身带神仙洞府遗产投胎到明天启五年(1625年),不想英年早逝,或者蓄猪尾巴,就得折腾,三条神龙逼着不折腾都不行,且看小屁孩如何挽救民族…………ps:本书技术流,往返穿,带一点点玄幻神话,真的,只有一点点!
  • 诡异笔录

    诡异笔录

    他是一个以探索离奇事件为事业的奇异人物,他是一个将生死交付给好奇心的年轻男人,他是一个把揭开真相还原事实为己任的独特侦探,他是一个毫不逊色于卫斯理的独行大侠!他的名字叫异度侠,他的这一生都因为这个名字而发生改变,凶险、阴谋、暴力、邪灵、恶毒……他的一生都合这些因素联系到了一起,他的一生也因此变得极不平凡。在这一个接一个的凶险生涯中,一个隐藏在真实世界的暗黑世界呈现在我们面前,也许,那才是我们这个世界的真实面貌……