[和管子对话] 1 2007-4-5/对面向对象的你言我语
2007-04-05 19:22
190 查看
引用:记录和管伟同志在软件开发方面的交流点滴,汇成江河以滋志同道合者。
主人公简介:
管子,又名双眼皮,乃技术通博之人。
王者,.NET的爱好之徒,认为C#代码,有艺术的感觉而痴狂。一句话,为技术而艺术。
管语:
面向对象是一个理论,每一种面向对象的程序语言对这个理论的支持程度都不一样,C++支持的最全面,但是C++中有太多自己的东西,所以说C++用来描述面向对象理论,尽管全面,但不完美,其他像java或C#虽然这两个语言用来描述这个理论比较好,但是它们支持的不够全面。
这是因为面向对象也并不是完美的理论,所以语言的发明人,就抛弃了他们认为面向对象理论中的糟粕!
这和关系数据库的理论和数据库的产品之间的关系是非常类似的,关系数据库理论的作者提出要满足n条规则,那么这个数据库产品才算是关系型的,而时至今日,世界上只有oracle才仅仅满足了m条,m约等于n/2的,oracle已经相当成功,为人类的文明进步提供了巨大帮助了,呵呵!我自己的一点看法,说出来给你听听。
王论:
面向对象是程序设计的思想里程碑,从POP到OOP,最重要的转变,应该是从需求到设计,不是以流程为重点,而是以对象为核心。我们针对需求,重点考虑应该是有什么东西,这些东西有什么特性,去做什么,这些思路清晰了,对象、对象的关系用OOP的技术以包装,设计就自然而然出来了。
管语:
>另外,刚才说到了数据库,想起一点事情:
>咱们做程序是面向对象的编程,而数据库现在用的都是关系型的,所以对象和关系这是矛盾的,咱们不得不就要转一下,转对象为关系,那就天下大乱了,所以只好转关系为对象,把数据库看成是对象,把记录、记录集看成是对象,这个转化过程中,就会有一些新东西被提出来,像Beacon用的是DAO,java中比较有名的是hibernate,J2EE规范中的实体EJB也是干这个的。这种数据库的对象就叫持久化对象,说的有点乱,不知道意思清楚没有。
>关系数据库已经不是万能的了,现在似乎有了面向对象的数据库,不知道只是理论还是已经有了产品。如果这块成熟,说不定实体EJB或hibernate就会消失了。
>现在GIS也很火的,GIS数据就不能直接以关系的方式存在关系数据库中,也不是不能,是巨麻烦的,所以GIS用的是空间数据库,现在没有好的空间数据库,就只好在关系数据库上改,Oracle中有special数据库特性,用来解决GIS数据库问题,相信SQL Server2005也有类似解决方案。
王论:
呵呵,你涉猎太多了。
我的理解,你上所言,应该是ORM的范畴。其实Hibernate就是典型的ORM框架,在.NET中有对应的NHibernate框架。将数据库和对象建立映射,然后以对象的方式来实现数据库的操作,应该是这个样子,所以业务层的发挥度就大大提高,以前用Sql做的,现在可以用C#来写。程序发展越来越高级了,从汇编到Fortan,从过程到对象,每一步都是思想的提升。所以我们再追赶技术的时候,切不可沉迷于手段,思想的永恒才是关注的焦点。
王论:
//Author: www.anytao.com //
//Date: 2007-4-5 //
//To Guanwei, a simple ORM example. //
using System;
namespace Anytao.Data
注:以上示例借鉴苏朋Webcast讲座《设计数据存储策略——SQL Server 2005应用开发》。
今日到此,明日再论。
主人公简介:
管子,又名双眼皮,乃技术通博之人。
王者,.NET的爱好之徒,认为C#代码,有艺术的感觉而痴狂。一句话,为技术而艺术。
管语:
面向对象是一个理论,每一种面向对象的程序语言对这个理论的支持程度都不一样,C++支持的最全面,但是C++中有太多自己的东西,所以说C++用来描述面向对象理论,尽管全面,但不完美,其他像java或C#虽然这两个语言用来描述这个理论比较好,但是它们支持的不够全面。
这是因为面向对象也并不是完美的理论,所以语言的发明人,就抛弃了他们认为面向对象理论中的糟粕!
这和关系数据库的理论和数据库的产品之间的关系是非常类似的,关系数据库理论的作者提出要满足n条规则,那么这个数据库产品才算是关系型的,而时至今日,世界上只有oracle才仅仅满足了m条,m约等于n/2的,oracle已经相当成功,为人类的文明进步提供了巨大帮助了,呵呵!我自己的一点看法,说出来给你听听。
王论:
面向对象是程序设计的思想里程碑,从POP到OOP,最重要的转变,应该是从需求到设计,不是以流程为重点,而是以对象为核心。我们针对需求,重点考虑应该是有什么东西,这些东西有什么特性,去做什么,这些思路清晰了,对象、对象的关系用OOP的技术以包装,设计就自然而然出来了。
管语:
>另外,刚才说到了数据库,想起一点事情:
>咱们做程序是面向对象的编程,而数据库现在用的都是关系型的,所以对象和关系这是矛盾的,咱们不得不就要转一下,转对象为关系,那就天下大乱了,所以只好转关系为对象,把数据库看成是对象,把记录、记录集看成是对象,这个转化过程中,就会有一些新东西被提出来,像Beacon用的是DAO,java中比较有名的是hibernate,J2EE规范中的实体EJB也是干这个的。这种数据库的对象就叫持久化对象,说的有点乱,不知道意思清楚没有。
>关系数据库已经不是万能的了,现在似乎有了面向对象的数据库,不知道只是理论还是已经有了产品。如果这块成熟,说不定实体EJB或hibernate就会消失了。
>现在GIS也很火的,GIS数据就不能直接以关系的方式存在关系数据库中,也不是不能,是巨麻烦的,所以GIS用的是空间数据库,现在没有好的空间数据库,就只好在关系数据库上改,Oracle中有special数据库特性,用来解决GIS数据库问题,相信SQL Server2005也有类似解决方案。
王论:
呵呵,你涉猎太多了。
我的理解,你上所言,应该是ORM的范畴。其实Hibernate就是典型的ORM框架,在.NET中有对应的NHibernate框架。将数据库和对象建立映射,然后以对象的方式来实现数据库的操作,应该是这个样子,所以业务层的发挥度就大大提高,以前用Sql做的,现在可以用C#来写。程序发展越来越高级了,从汇编到Fortan,从过程到对象,每一步都是思想的提升。所以我们再追赶技术的时候,切不可沉迷于手段,思想的永恒才是关注的焦点。
王论:
//Author: www.anytao.com //
//Date: 2007-4-5 //
//To Guanwei, a simple ORM example. //
using System;
namespace Anytao.Data
注:以上示例借鉴苏朋Webcast讲座《设计数据存储策略——SQL Server 2005应用开发》。
今日到此,明日再论。
相关文章推荐
- [和管子对话] 1 2007-4-5/对面向对象的你言我语 (转载)
- Day26-递归和对面对象编程初步
- 集体智慧编程第六章对面向对象的深入理解
- java基础学习——对面向对象的重识
- 我对面向对象设计的理解——Java接口和Java抽象类 转
- 由JavaScript中call()方法引发的对面向对象继承机制call的思考
- 谈谈我对面向对象以及类与对象的理解
- 简述对面向对象思想的理解
- 黑马程序员——C#对面向对象编程的理解
- 再探java基础——对面向对象的理解(1)
- [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非 (转载)
- 优米-马云与80后面对面对话实录
- 我对面向对象的理解
- java基础学习——对面向对象的重识
- 我对面向对象编程的认识2001
- (c++的对话)Solmyr 的小品文系列之三:对象计数(上)
- 我对面向对象分析与设计与实现的一些看法
- 对面象对象概念的理解、解释
- JavaScript window对象 - 浏览器对象模型(BOM),使 JavaScript 有能力与浏览器“对话”
- 我对面向对象的理解