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

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

同类推荐
  • 中文版AutoCAD2005辅助设计宝典

    中文版AutoCAD2005辅助设计宝典

    本书全面、详细地介绍了中文版AutoCAD2005的特点、功能以及使用方法和技巧。全书共分11章,前九章分别介绍了利用中文版AutoCAD2005进行辅助设计的方法和技巧,最后两章讲解了若干综合实例。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 多媒体技术

    多媒体技术

    多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术多媒体技术
  • 中文版AutoCAD2005建筑绘图精讲精学

    中文版AutoCAD2005建筑绘图精讲精学

    本书从中文版AutoCAD2005建筑绘图的基础进行介绍,讲解了建筑绘图的环境设置、二维建筑图形的绘制、二维建筑及装饰图形的编辑、建筑绘图中的文字标注和图形查询、建筑装潢平面图中的尺寸标注、建筑绘图中图块的应用、建筑平面图的绘制、建筑立面图的绘制、建筑剖面图的绘制、建筑绘图中的三维造型、三维建筑模型绘制及建筑图纸的布局与打印输出等内容。
热门推荐
  • 邪君毒妃极绝灵师

    邪君毒妃极绝灵师

    “我恨你们,恨你们生下我,恨你们舍弃我,恨你们侮辱我,恨你们排斥我!更恨你们在我脸上留下的伤疤,你们都该死!都该下地狱。”南宫澈羽,没有一丝温度,不带任何感情,就像地狱修罗一样,仿佛下一秒,她眼前的每个人都死于她的手下。3年前你们抛弃我,我原谅你们,你们不知道,三年后!你们明明知道,却还要不要我,舍弃我,让我自生自灭。这一次,你就像我的猎物,再逃你也逃不出我的手掌心!爱我的,走了。恨我的,灭了。毁我的,魂飞魄散。背叛我的,残了。欺骗我的,已经不是人。但是我还是恨你们。
  • 迷失的狐狸

    迷失的狐狸

    来自狐仙界的死宅狐狸,寻找玉符回家的故事,在寻找玉符的过程却开启了一段神奇的旅途。“喂,这位少年你看到我的玉符了吗?”
  • 十二诡门

    十二诡门

    这是一个主角带着九条龙与一群小弟征服诡异世界、回到神秘时代称帝的故事。十二道诡门,十二个风格迥异的世界。看下去,后续很精彩。
  • 重生女配洗白日常

    重生女配洗白日常

    林娇娇穿越了,穿成七十年代文中的极品女配,还附带了个坑爹系统。林家个个是极品,整天鸡毛蒜皮小事吵个没完。面对吃不饱的日子,林娇娇望着系统里的肉和各种精细粮为了吃肉,林娇娇努力完成任务,改变自己,发展和谐家庭却不想原女主重生了...PS:新书求收藏求推荐,架空苏爽文。
  • 幻之阵

    幻之阵

    当24世纪金牌杀手成了暮雪境圣卿公主。当她打遍东西两域无敌手时。一个惊天秘密渐渐的揭开面孔……本该和平的轮回之路,却因一块七彩圣石而变得无法控制。当世间生灵涂炭,无一活物,一个新的时代又缓缓而来……
  • 炊烟何时起

    炊烟何时起

    炊烟袅袅升起,谁有能走进你的世界,与你一起一餐一饭瀚海漠然翻涌,我愿执起你的手,陪你看遍万家灯火这是属于云袅袅和申漠然的故事……
  • 英雄联盟之野路皇者

    英雄联盟之野路皇者

    平行世界。一次凑角的比赛,让武孟走上了一条他自已都没有想到的路。城市争霸赛,他力挽狂澜。从一支边缘小队,到三级联赛最大的黑马。极富激情的战术,无所畏惧的心态,武孟和队友一起,登上了世界的最高舞台。
  • 龙战之骑

    龙战之骑

    被抛弃的龙延被龙族收养几年之后,龙族被自身演化七个种族联手毁灭。长大后的龙延走上了独自一人对抗七个种族为龙族复仇的道路。
  • 恐龙德克之泪王子

    恐龙德克之泪王子

    地下被尘封的驱魔师黑蟒终于被释放,同时被释放的还有被黑蟒控制的大量的恐龙化石,它们在黑蟒的带领下,爬出地面,攻占了一个又个村庄,除了德克和部分驯龙师逃出包围,所有的居民都被黑蟒军团所囚禁,黑蟒对德克提出了要求,只要德克交出龙立方,便释放所有居民。德克无奈,只好照做。但黑蟒依然食言,不但每天都会残食居民,而且还利用龙立方的魔力,破坏了德克恢复的复活法术,并重伤了德克,德克生命垂危之际,被一群沙漠中不起眼的小动物们救出,后在大白鹅的指引下,去遥远的海边,寻找能克制龙立方的法器——泪王子。
  • 九十九号交易所

    九十九号交易所

    【你想要财富吗?想要地位吗?想要权势吗?那么进来交易吧。爱太痛,恨太苦,痴太悲,缠太伤。交易吧,用你最纯粹最炽烈的情来交易。】——九十九号交易所这世间最浓烈的爱,最苦涩的恨,最执着的痴,最无望的缠……到后来,都是一缕云烟,一抔黄土,一片孤魂。再醒来,她变回了她,又不是她了。守着九十九号交易所,看尽人间百态,交易一切的爱恨痴缠。无论是爱情,亲情,友情——这世间一切纯真炽热的情感,她都愿意交易,她也只交易这一项。金钱、地位、权势,你想要的,拿你最纯粹的情来交易,你准备好了吗? PS: 1.非正常快穿,故事长短不定 2.各故事基本无关联 3.佛系更新,谨慎入坑