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

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

同类推荐
  • 信息技术教育大全-计算机网络

    信息技术教育大全-计算机网络

    信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络
  • 悟道:一位IT高管20年的职场心经

    悟道:一位IT高管20年的职场心经

    本书是一位有20多年职场经验的IT企业高管撰写的一系列有关职场悟道的短文集成,讲述的是在企业里如何修炼自己,如何摆平自己的心态,怎样做到“世事洞明”和“人情练达”,如何“搞定老板”,怎样做到工作和生活平衡等诸多话题,涉及到跳槽、转行、升迁、环境、沟通、老板、下属、老外等等。每一篇都以作者的亲身经历或者身边的故事说明道理,语言简洁流畅,妙趣横生,更有不少经典片段和发人深省的职场警句,读起来就像是一个睿智幽默的老朋友坐在你面前娓娓道来。
  • 计算机与人工智能(科学新知丛书)

    计算机与人工智能(科学新知丛书)

    本书是专门为中小学生编写的科普读物。全书共分八个部分,分别就计算机诞生的历程,计算机的种类、构造、作用及其发展趋势等方面进行了详尽的论述,全书论述深入浅出,行文活泼流畅。为本书的主要读者——广大的中小学生朋友认识计算机、了解计算机和掌握计算机提供了一把钥匙,是新时期中小学生开展素质教育不可多得的科普读物,中小学生家长及教师阅读此书也能从中获得有益的启示和感悟。
  • 天下一家:网络联通世界(科学新导向丛书)

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

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

    微软360度

    本书是由微软总部华人协会组织编写的第二本书,是《微软360度——企业和文件》一书的姐妹篇,本书将着重向你呈现微软总部的华人专家是如何一步一步地走向成功的及在微软总部成功的心路历程,以及如何应对挑战,揭示了微软成功的最重要秘密之一——人才至上,读者读后收获更多的是这些成功人士的成功经验,从而为自己的成功做出更好的规划。就让我们一起通过此书来看看微软公司人才至上管理的方方面面,聆听微软的心声,感觉微软的脉动吧。
热门推荐
  • 要叫姐姐

    要叫姐姐

    京都北门,十里处,有一河,名叫沧澜。河岸,杨柳飘扬,碧波荡漾。河面微风,吹过凉风习习。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 穿成修仙界第一珍稀动物

    穿成修仙界第一珍稀动物

    [男女主闯荡江湖角色扮演日常,1V1超甜,非傻白甜不喜误入,绝世双宠,苏爽无比]失恋重回单身狗族的楚念星在晚上下班的途中遇到抢劫一命呜呼,睁开眼发现自己转世成为了一颗……蛋?成为蛋的日子过得其实还挺舒心,但有一天睡醒之后,发现自己蛋壳有点裂,等她出来一看,原来是一丫的一屁股把她坐裂了!正准备把那个用腚对着她的人骂的狗血临头,但一接触到那双眼睛,她不知道为什么就…就……怂了……楚念星:我不敢动……不敢动沈漾:那你动也可以吃瓜群众:狗粮我自己装,你们继续
  • 我被校草大人看上了

    我被校草大人看上了

    他们的“第一次”相遇,两眼相对,一次次误会和分离“安以洛,你是不是傻!”“对,我就傻,傻到喜欢上你!”从此以后,两人的地位发生了翻天覆地的变化“洛洛,要不要吃葡萄?”“洛洛,渴不渴?要不要喝水。”几年后的某一天,安以洛回忆道“我就不该先表白,看他现在这样~”安以洛式嫌弃怎么样的呢,毕业过后,姜亦城除了炫富,炫帅还炫老婆某个路人表示:姜总,您是不是太宠您妻子了?姜亦城:我宠着,你有意见?
  • 斗气至圣

    斗气至圣

    一代内家拳、超级杀手穿越异世,来到了斗气的世界。内劲与斗气,到底哪一种力量强?宗师之后,又是否有更高的修为境界?
  • 啵哒喵生

    啵哒喵生

    咱家是喵,喵眼看世界。晴川历历汉阳树。白云千载空悠悠。
  • 科学无极限

    科学无极限

    永生!自古以来多少帝王豪杰梦寐以求而不得的目标!杨晓宇杨晓理,二十一世纪最伟大的科学家!在他们的手里,永生,似乎触手可及!我们的故事,就从全民永生开始讲起在通往全民永生的道路上,各种脑洞大开的技术喷薄而发,各种新奇的事物层出不穷!全民永生,期待你的探索……………
  • 梦之造化

    梦之造化

    浮生若梦,为欢几何,一枕槐安,泛指梦境。 天璇星君被诛杀后,靠着一缕神魂至六道成功轮回,变成普通人林超。 林超前半生命运多舛,崎岖坎坷,一次偶然机遇,林超入梦平行空间,回到童年时期,梦里重新修道,并建立属于自己的商业帝国。 然而,一切都只是南柯一梦,是梦就会有醒来的一天……
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 欲念难安

    欲念难安

    这真不是剧透。1.看着见面每一天就将自己的初吻夺走的男人他彻底愣住了,然后一把推开,开始擦嘴唇。他才不是同性恋!2.看着眼前这个笑得不坏好意男人,他不由的感觉后*一凉。谁来救救他,他不想再被摧残了。这是一篇先校园后都市的文。外表呆萌实则腹黑透顶的妖孽攻x外表温雅俊逸实则爱炸毛的清水受。大宠小虐欢迎跳坑。眨眼/我保证绝对不是BE也绝对不会弃文。