动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 软件工程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 软件工程 ]的信息

本月文章推荐
.经典的软件质量保证检查过程(1).
.网站项目系统分析及软件建模.
.嵌入式操作系统课程作业之Write .
.应用程序设计指南:从N层到 .NET.
.管理信息系统需求调研分析指南.
.UML类图详解.
.IE编程简述之“两”个WebBrowser.
.有效的软件质量管理.
.统一建模语言UML轻松入门之基本概.
.Vista新技术:WCF开发指南之客户.
..NET泛型技巧之类型参数之间的转.
.UML在关系型数据库设计中的应用.
.软件开发质量管理层次模型.
.项目管理案例剖析.
.统一建模语言UML简介.
.如何成为一个好的系统分析员.
.2006拭目以待 SOA标准走向成熟.
.摘录─GBK环境下Emacs与外部程序.
.Apache中的文件与目录(1).
.XAML开发入门之XAML核心语法.

面向对象软件开发的十大原则

发表日期:2008-3-23 |



  对于开发人员来说,时时回过头来检查一下应用程序是非常有用的。考虑一下这个应用程序是否达到了预期目的?是否遵循了最佳方案?要想实现目的是否还存在更好的方法?温故而知新,也许你会从回顾中发现新的思路。

  本文就提出10种顶尖的面向对象的编程技术来帮助你对应用程序进行评价,希望你使用这10个顶尖技术从面向对象的编程中获得最大利益。

  1. 重新审阅对象的声明操作

  如何声明对象变量会给对象的使用和性能带来重大的影响。你应该使用这个语法:

    Private m_oCust As Ccustomer

注重一定要使用正确的范围。在大多数情况下,你希望对象变量是私有的。假如只是在一个特定的程序中需要这个对象,就可以用Dim来声明它是属于那个程序私有的。假如在整个类或表单模块中都需要它的话,就应该用Private 在那个类或表单的顶部声明它。按照习惯,在模块层声明的变量要加一个前缀 "m_",以表示用于模块层或成员变量。假如需要从类外部使用对象变量,就不要将变量设成Public,宁可定义一个Property Get程序来使用对象变量,这样就防止了其它代码不用你不希望的方法去使用变量。

  在声明中,总是使用类名称,而不要使用 "As Object",因为使用 "As Object" 会使对象变量成为后期捆绑(late-bound)。这就意味着在运行时间之前,Visual Basic不知道你将使用的对象类型,因此它不能给你提供自动列表成分(对象属性和方法的下拉列表)。更重要的是,在运行时会对早期捆绑(early-bound)对象造成明显的性能冲击。

  最后,在声明中不要使用"New"这个要害字。使用要害字"New"时,将在引用它的任何时间自动创建对象,这对性能会造成稍微的影响,因为每个对象的属性和方法调用都必须进行校验以确定对象是否被创建了。使用"New"这个要害字还会给调试带来噩梦,因为在对象被破坏之后,假如你不经意地再次引用它的话,应用程序会自动地重新创建对象。当你预备移植到.NET时,理解这一点更加重要,因为在那里要害字"New"有一个不同的意义。在.NET中,要害字"New"答应你在声明时创建一个对象,比如下面这条语句将创建一个新的Customer对象:

   Private mo_Cust as New CCustomer()

  2. 重视对象清除行为

  当不再需要对象变量时,一定要释放它们,然后VB就会破坏与变量相联系的对象,从而释放应用程序中的内存。使用下面的代码释放一个对象:

   Set x = Nothing

  3. 封装的重大作用

  Encapsulate(封装)从字面上讲就是放入封套或"放在一个壳子中"。从面向对象编程 (OOP) 的角度来看,这意味着将所有与一个对象相关的数据和处理都放在它的类中。

  封装有时候指的是信息隐藏,因为你将对象的数据藏在了类的内部。假如其它的类需要使用数据,可以使用属性程序(.NET 中的属性声明)来暴露这些数据。这个行为为类提供了控制, 它控制用户可以如何观看或刷新数据,并且防止其它对象误用数据。

  封装使得对象之间的交互作用变得简单化。一个对象不用知道另一个对象的全部数据或者其数据是如何治理的,就能够使用这个对象。例如,一个Customer对象可能有名字和地址属性以及电话号码、信用历史和其它相关域。假如一个Invoice 对象想要使用一个 Customer 对象,它可以为发票请求名字和地址,而不需要知道Customer是从哪里获取那个数据的,或者其它数据元素是什么。

  对于如何为可扩展的标记语言(XML)将文档对象模型 (DOM) 封装在一个包装类中的解决方案,请参考此文,这使你能够更轻易地与一个XML文件进行交互作用,而不需要知道DOM的细节。

  4. 状态监视问题

  良好的基于组件的开发技术会频繁地要求无状态的对象。无状态对象没有保持的属性,只有方法。你可以访问一个无状态的组件,执行方法,然后不需要获取方法调用间的任何数据就可以完成处理。

  有一些OOP方面的文章提出没有属性的对象就不是对象。 但是我们现在忽略这个语义上的问题,你可以创建有方法而没有属性的类。当你从事COM+或Web开发时,经常会需要这样做。一个ASP页面可以在一个组件上执行一个方法来完成一个非凡的处理,然后再释放组件,不用为治理对象状态而费心。

  5. 传递参数的可扩展性

  参数提供了类的方法之间传递信息的途径。你需要用参数向方法传递任何必要的数据,非凡是当你需要无状态对象的时候。

  例如,无状态对象Customer 的PlaceOrder方法要求把客户的信息作为参数传递给它,然后PlaceOrder方法就用这个信息来完成必要的处理。

  当定义方法的参数时,一定要使它们可以扩展。例如,下面这行代码是不可扩展的:

   Public Function PlaceOrder(sLastName as String, sFirstName as String, sAddress as String)

  要想调用这个方法你必须传递这3个参数。但是假如你以后决定在定单上还需要电话号码,就必须修改函数签名,这就破坏了兼容性以及每个调用此方法的代码段。为了防止这个问题的发生,一个更好的解决方法是:在一个容器中传递参数。你可以使用记录集、变量数组或 XML字符串来传递更普通的参数。

  当转移到.NET时,这个技巧就不是十分必要了,因为在.NET中你可以进行函数装载,这样就可以具有两套不同参数的同一个函数:

Public Function PlaceOrder(sLastName _
as String, sFirstName as String, sAddress as String)
Public Function PlaceOrder(sLastName _
as String, sFirstName as String, _
sAddress as String, sPhone as String)

更多的请看:http://www.QQread.com/windows/2003/index.Html
  6. 现在就使用XML

  XML提供了一个治理状态和在应用程序的组件之间传递它的很好方法。 你可以用任何喜欢的格式来定义XML,然后可以从XML字符串插入、更新、删除或回顾任何信息。

  XML最好的一点是它的跨平台性并拥有独立的销售商。XML既不是Microsoft的技术也不是Sun的技术,是万维网联盟W3C控制着这个标准,具体细节请参见原文。

  XML成为了.NET中的数据存取标准,所以现在就使用会使你一路领先。

  7. 定义灵活的界面

  界面(Interfaces)提供了一个在运行时间插入组件的很好途径。你可以定义一个界面,建立一个执行它的类,然后就可以在任何时间,很轻易地用任何执行同一界面的其它类来代替这个类。

  例如,你可以开发一个邮件列表的标签打印组件,并且定义这个组件所要求的标准界面。在这个例子中,那个界面包括名字和地址信息。然后,任何执行这个界面的类都可以使用这个组件,而不需要对其进行任何修改。一个执行标签打印界面的客户类可以使用这个组件来打印客户邮件标签,一个执行标签打印界面的职员类可以使用这个组件来打印薪水标签等。

  8. 继续功能

  继续是OOP的一个要害原则,它答应你定义一个对象的基础功能,然后将那个功能应用于对象的特定子类中。

  例如,你可以为一个客户(Customer)对象定义基础功能,可以恢复和保存数据以及计算一个折扣。然后就可以定义一个政府客户对象,让它继续客户对象的所有功能,但是屏蔽掉折扣计算,因为给政府客户的折扣更高。

  在VB.NET中,你很快就能实现这些。

  9. 按照模型进行处理

  开发一个描述交易的域模型对于理解应用程序的目的以及它应该解决的问题是非常有用的。 
但是有一个常见的错误是取得域的模型并试图为它编码。相反,你应该融合域模型到一个执行模型中,这个执行模型定义了如何建立类的方法。融合过程中,需要考虑许多因素,请参阅建立对象模型。

  10. 了解OOP,使用OOP

  所有的.NET都是面向对象的。现在你对OOP了解得越多,理解得越好,将来转移到.NET就越轻易。在所有项目中都要预备好使用类模型。假如你不了解OOP,或者虽然你了解它但是并不真正理解它,可以采用一个OOP类。OOP技术很快就会成为你的第二个自我,你会发现想记起原来是怎么编码的都很困难。
上一篇:利用GDI+的双缓冲技术来提高绘图效率 人气:403
下一篇:软件测试组织与方法 人气:260
浏览全部软件工程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵