asp.net打开OO的另一扇窗

时间:2010-03-03 12:20:23  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:发的系统中﹐您却很难看到这种模拟﹐而依然是些以数据库为中心的增删改查动作﹐很少能看到”真实的世界”的身影。         出现这种情况﹐很大程度上都是受数据库为中心的影响。         以数据库为中心开发系统﹐有一套成熟的理论﹐也经历住了多年的考验﹐是到今天为止﹐大部分信息系...
  正文:园子里这么多讨论OO的﹐我也来凑一下热闹吧。
  
  
  面向对象开发一个最重要的思想就是对真实世界进行模拟。
  
  
  然而﹐在大量的使用面向对象语言开发的系统中﹐您却很难看到这种模拟﹐而依然是些以数据库为中心的增删改查动作﹐很少能看到”真实的世界”的身影。
  
  
  出现这种情况﹐很大程度上都是受数据库为中心的影响。
  
  
  以数据库为中心开发系统﹐有一套成熟的理论﹐也经历住了多年的考验﹐是到今天为止﹐大部分信息系统开发时的不二选择。
  
  
  以一个图书管理系统为例﹐有这样的一些功能﹕新书上架﹐借阅﹐归还。
  
  
  按照数据库方法﹐我们会设计出这样的三个关系﹕
  
  书籍(BookID,ISBN﹐书名﹐作者﹐出版社﹐内容简介)
  
  借书证(CardID﹐姓名﹐电话﹐身份证号﹐地址)
  
  借阅(BookID,CardID,借阅时间,归还时间,)
  
  
  然后在数据库中建表
  
  
  接下来提供书籍新增﹐删除﹐修改﹐查询﹐借书证增删改查﹐图书借阅﹐归还的人机界面
  
  
  再围绕数据库编写增删改查对象和方法。大家争论的Book.Save和BookManager.Save方法也是在此吧。其实只要不重复代码﹐使用起来方便﹐高效﹐统一﹐无论将Save方法放在哪﹐都是有其道理的。
  
  
  对于大部分信息系统﹐以数据库为中心是十分合适的﹐这种方法也是非常高效且成熟。
  
  
  然而﹐您还是可以尝试另外一种方法
  
  
  我们想象这样的场景﹕
  
  
  有一个 [图书馆]
  
  [图书馆]里有很多[书架](可以理解为﹕书籍分类目录)
  
  [书架]上有很多[书籍]
  
  一个读者进入系统﹐系统帮助他浏览[图书馆]的[书架],然后在其中一个[书架]中找到了他想借阅的[书籍]﹐接下来﹐它将[借书证]交给管理员﹐要求借阅该[书籍]﹐管理员办理借阅手续﹐产生一笔[借阅记录]﹐完成借書過程
  
  
  这个场景可以由下面这个对象完成
  
  
  Class 图书馆帮助者
  
  {
  
  
  
   Public List<书架> 所有书架
  
  {
  
   Return 图书馆.Instance.所有书架
  
   }
  
  
  
   Public void 选择书架(书架)
  
   {
  
   记录当前书架
  
  }
  
  
  
  Public void 选择图书(图书)
  
  {
  
  记录所选图书
  }
  
  
  
   Public void 借阅(借书证)
  
   {
  
   If(借书证.借出记录!=null)
  
   Throw Exception “该书已借出”;
  
   New 借阅记录();
  
   借阅记录.Book = 当前图书
  
   借阅记录.Card = 借书证
  
   借阅记录.时间 = Now
  
   当前图书.借出记录 = 借阅记录
  
   借书证的借阅记录.Add(借阅记录)
  
  }
  
  }
  
  
  
  这就是借书的用例实现﹐而这些对象则是系统领域模型中的对象。
"asp.net打开OO的另一扇窗"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13018.html


关键字:

关于《asp.net打开OO的另一扇窗》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td