热 门: 什么是花 生壳?    百度为什么不收录网站首页?    申请免费空间    网站如何备案    什么是音乐小偷?    什么是SEO,如何网站优化?     大量精美网页特效    设为首页 | 加入收藏
首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

企业网站建设
.com .com.cn .cn .net .net.cn
.cc .org .org.cn .tv
本站搜索:
温馨提示: 如果没找到您需要的内容, 欢迎在此搜索.
绵阳网站建设

 711网络 网页编程编程综合

原来面向对象和数据库是冤家

来源: 互联网    日期:2006-6-21

     
 

    智能建站已经成为企业网站建设的主要方式,建立个性化企业网站是企业品牌形象的体现;具有强大灵活的网站功能、HTML生成、搜索引擎优化,现有简体、繁体、英文、日文等多国语言可选用。赶快申请,立即拥有个性化企业网站...

 
 

  话说当年面向对象和数据库刚出道的时候,曾经引发过惊天动地的大讨论(当然,这里说的是关系型数据库,以下简称数据库)。两个阵营的人都试图说服对方,加入到自己的阵营里来(传说是都说了,你别做了那个了,没发展)。经过车轮式讨论,也没得到共识,只好分道扬镳了。

  虽然,无法考证这个传说是不是真的,但确实,面向对象和数据库之间存在着矛盾。这正是我们学习了面向对象理论之后,信心百倍地要去做项目时,突然发现有很多问题的原因。

  要是世界上只有面向对象,或则只有数据库,那该多好啊?但这只是奢望罢了。既然矛盾并共存着,那就只能取长补短了。

  让面向对象和数据库,好好合作

  大家有没有觉得,类图和ER图画出来之后,是不是很像?矛盾就在这里,数据库阵营的人认为,面向对象做得是在内存中建立一个新的数据库,浪费了资源。而面向对象阵营的人认为面向对象更符合人的思维模式、可以开发出更健壮的系统。

  先看一下面向对象和数据库的优点吧。面向对象的优点在于模块化和处理复杂的业务逻辑,而数据库的优点在于数据存储、查询、统计。

  解决一个问题,不是只有一种方法,不能说哪一个方法是万能药。每一个方法都有它存在的意义。

  面向对象和数据库各有其特长,何不让它们发挥各自的特长呢?

  面向对象,你就处理复杂的业务逻辑~

  数据库,你就处理数据的查询、统计、简单的业务逻辑~

  好,首先大的方向已经明确了,但开始做项目之前还要明确以下几点,

  当需要时,才加载 ,类有属性和方法,下面定义了一个客户类,

  // 客户类
  class Customer
  {
   Public int Id; //客户ID
   Public String Name;//客户姓名
  
   // 取客户的销售额
   public bool GetSaleAmount();
  }

  我现在要查询客户的销售额,那么Id和Name对我来说是没有意义的。如果不是数据库编程,这都是无关紧要的,但数据库编程中,属性的数据保存在数据库里,所以每生成一个对象,都要去查询数据库的话,系统的性能肯定大打折扣。看一下修改后的类

  // 客户类
  class Customer
  {
   // 取客户信息
   public DataSet GetInfo ();
  
   // 取客户的销售额
   public bool GetSaleAmount();
  }

  类中把Id和Name属性去掉,然后加了一个GetInfo方法。现在好了,生成客户对象,不会进行数据库查询,当需要客户信息时,可以调用GetInfo方法来获得。这种方法看起来,不像是面向对象的,因为它没有属性,面向对象是思想、理论,理论要联系实际,根据实际情况取舍一些东西是无可厚非的,况且,这样做也不会丢掉面向对象的优点(还可以用,继承、多态等等)。

  用什么来传递数据 ,编程工具都有数据库控件,比如.NET有DataSet,Delphi有TTable、TQuery等等。那,是使用数据库控件还是使用对象?应该是从它们的优点去出发来决定用哪一个。对象结构简单,操作起来非常方便,而且直观。数据库控件虽然结构复杂,操作不方便,但处理大量数据是它的优势。所以传递单条记录时使用对象,传递一组记录的时候使用数据库控件是一个不错的方法。

  当然传递一组记录时也可以用对象,把对象装在容器里,然后传递。但要考虑一下几点,只是为了显示吗?那就大可不必,因为它的功能只是显示,数据库控件可以做得很好,而且不需要额外的工作。要用这些对象做统计操作吗?那就需要考虑效率问题了,数据传输和对象生成,需要消耗更多的资源。而且统计是数据库的强项,为什么放着能干的人,不用呢?

  一般常用的业务逻辑类编写方式

  用类把你的函数封装起来

  方法:声明一个static类,然后把函数放到类里。不要说这个太不像面向对象了,类是一个模块,能准确定义一个类是面向对象中最困难的事情。

  数据处理:手写SQL

  数据容器:编程工具提供的数据库控件。

  // 客户类
  static class Customer
  {
   // 输入客户信息
   static public bool Insert(int Id,int Name)
   {
   }
  
   // 更新客户信息
   static public bool Update(int Id,int Name)
   {
   }
  
   //删除客户信息
   static public bool Delete(int Id)
   {
   }
  
   //获得客户信息
   static public DataSet GetInfo(int Id)
   {
   }
  
   //获得客户列表
   public DataSet GetList()
   {
   }
  }

  优点

  - 对面向对象理论方面要求不高,通过短时间学习,就可以掌握

  - 代码简单易懂

  - 代码效率高

  缺点

  - 不能充分发挥面向对象的特点

  - Update和Insert把数据库字段作为参数,当添加字段或删除字段时,需要修改函数。

  发挥面向对象和数据库的特点

  方法:声明一个Entity类和一个业务逻辑类

  数据处理:手写SQL

  数据容器:插入、更新 、传递单条记录使用Entity对象,一组记录使用数据库控件

  // 客户Entity
  class CustomerEntity
  {
   public int Id;
   public string Name;
  }
  
  // 客户类
  class Customer
  {
   private int Id;
   //构造
   public Customer(int Id)
   {
   this.Id = Id;
   }
  
   // 输入客户信息
   public bool Insert(CustomerEntity CustEntity)
   {
   }
  
   // 更新客户信息
   public bool Update(CustomerEntity CustEntity)
   {
  
   }
  
   //删除客户信息
   public bool Delete()
   {
   }
  
   //获得客户信息
   public CustomerEntity GetInfo()
   {
   }
  
   //获得客户列表
   public DataSet GetList()
   {
   }
  }

  优点

  - 能发挥面向对象和数据库各自的特点

  - 代码效率高

  缺点

  - 需要比较全面的面向对象理论

  - 使用了Entity类,需要自动生成工具

  使用O/R Mapping 工具

  方法:使用O/R Mapping工具

  数据处理:O/R Mapping 工具自动处理

  数据容器:对象

  // 客户类
  class Customer
  {
   public int Id;
   public string Name;
  
   // 输入客户信息
   public bool Insert(CustomerEntity CustEntity)
   {
   }
  
   // 更新客户信息
   public bool Update(CustomerEntity CustEntity)
   {
   }
  
   //删除客户信息
   public bool Delete()
   {
   }
  
   //获得客户信息
   public CustomerEntity GetInfo()
   {
   }
  
   //获得客户列表
   public IList GetList()
   {
   }
  }

  优点

  - 能发挥面向对象特点

  - 可以自动把对象模型转换到数据模型

  - 能自动处理,简单的CURD

  缺点

  - 需要很高的能力和耐心

  - 流行的O/R Mapping 工具都是开源出来的,没有保障

  - 还不是很完善,存在不可预测的危险

  - 对于处理复杂的对象关系,配置复杂

  - 需要额外学习O/R Mapping 方面的知识

  那到底该用什么样的方式?

  采用什么样的方式,实际上说,主要还是在人,而不是在技术。确定使用哪种方式之前,可以考虑以下几个问题,

  - 使用它的目的是什么?

  - 对它了如指掌吗?如果出现问题,能马上解决吗?

  - 它简单吗?初学的人需要多长时间,才能掌握?

  - 跟所有人达成共识了吗?有没有抵触的人?

  不要让项目成为你练手的试验品,不要让底下的人每天处理80%的工具问题,只处理20%的业务逻辑。业务逻辑才是客户需要的东西。

精品网站程序下载(草根站长最爱)
QQ2013,QQ2012临时会话插件(全国首发)
711旅游网站管理系统V2013(无功能限制)
711幻灯片管理系统(全国首发) 各类网站程序下载
711企业网站管理系统V2013个人版(无功能限制)
711免费在线客服系统个人版 V2.0
电影小偷采集程序V2013免费下载
点此查看


更多的原来面向对象和数据库是冤家请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2006-6-21   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
· 企业程序V2013精品版
· 企业程序V2013营销旗舰版
· 购物商城系统V2013
· 旅游程序V2013
· 鲜花网站系统V2013
· 珍爱鲜花配送管理系统V2013免费下载
· 绵阳餐饮网2010免费下载
· 旅游网站管理系统V4.0
· 旅游网站管理系统V12.0免费版
· 学校网站管理系统
· 政府网站管理系统
· 律师事务所网站管理系统
· 仿阿里巴巴B2B门V2009
· 婚纱摄影网站管理系统2013
· 人才网管理系统V2009
· 企业程序中日英繁四语版
· 人才网管理系统V2009
· 公文传输系统(适合于政府机构)
· 711企业网站管理程序V2009超强完美版 
· 711酒店网站管理系统V2008 
· 711网站QQ在线咨询插件2013(兼容火狐)
·711企业网站程序免费版(无功能限制)
·711企业网站系统V2008.4多风格三语
·711网络在线图文下单与产 品输出系统
·711酒店网站管理系统V2008
·绵阳商铺信息网站管理系统
·711旅游旅行社网站管理系统V2007.10
·企业搭建网站的好处
·711二手网站网站管理程序
·711网络企业网站管理 系统韩国风格
·711企业网站管理系统(中英繁三语)
·711房产中介网站管理系统2008
·711分类网站管理程序(html版)
·711公文传输系统V2007.6正式发布
  友情赞助  

·快速设计网页必备的28款工具和生...
·网站上的广告与网站设计的关系
·[分享]网络创业的定位与切入点
·成功的网站其实很简单的就这样做...
·良好用户体验的网站主页 必备的1...
·以亲身体会讲述 43条网站设计中常...
·GOOGLE收录减少怎么办?
·个人网站赚钱必须要坚持
·搜索引擎最新免费登录入口大全
·一个个人站长些的网站宣传方法
·免费网站推广区
·百度"反垃圾网站"的若干问答
·宣传网站利器——你都搞了吗?
·网页应该怎样设计,才能被百度有...
·提高网站的Google PR值的私家绝招...
·让网站迅速被各大搜索引擎收录!...


本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报  点击这里给我发消息
//