[和管子对话] 1 2007-4-5/对面向对象的你言我语

引用:记录和管伟同志在软件开发方面的交流点滴,汇成江河以滋志同道合者。

主人公简介:

管子,又名双眼皮,乃技术通博之人。

王者,.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
{
public class Student
{
//定义属性和数据库中表Student一一对应
private string _name;
public string Name
{
get {return _name;}
set {_name = value;}
}
private int _age;
public int Age
{
get {return _age;}
set {_age = value;}
}
void Student(IDataAccessProvider dap)

dap.GetStudent(this);
}


interface IDataAccessProvider
{
//再次可以声明要实现的所有业务逻辑
public void GetStudent(Student s);
public void SetStudent(Student s);


public class SqlDataAccessProvider: IDataAccessProvider
{
public void GetStudent(Student s)
{
SqlConnection conn = new SqlConnection("DataSource = .; Catalog = ");
SqlCommand com = new SqlCommand("Select name, age from Student", conn);
com.Open();
SqlDataReader reader = com.ExecuteNonQuery();
while(reader.Read())
{
Console.WriteLine("The age of student {0} is {1} .", reader[0], reader[1]);


public void SaveStudent(Student s)
{
//
}


public class OracleAccessProvider: IDataAccessProvider
{
public void GetStudent(Student s)
{
//
}
public void SaveStudent(Student s)
{
//
}


}

注:以上示例借鉴苏朋Webcast讲座《设计数据存储策略——SQL Server 2005应用开发》。

今日到此,明日再论。

转载于:https://www.cnblogs.com/nianshi/archive/2007/05/26/760479.html

[和管子对话] 1 2007-4-5/对面向对象的你言我语 (转载)相关推荐

  1. 飞鸽传书2007程序语言的面向对象最后会成自然语言吗?

    飞鸽传书2007程序语言的面向对象最后会成自然语言吗?程序语言的向自然语言靠拢,自底向上还是自顶向下? 飞鸽传书2007绿色版: http://www.freeeim.com/ipmsg/ipmsg_ ...

  2. [和管子对话] 1 2007-4-5/对面向对象的你言我语

    引用:记录和管伟同志在软件开发方面的交流点滴,汇成江河以滋志同道合者. 主人公简介: 管子,又名双眼皮,乃技术通博之人. 王者,.NET的爱好之徒,认为C#代码,有艺术的感觉而痴狂.一句话,为技术而艺 ...

  3. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非

    发布日期:2007.4.6 作者:Anytao ©2007 Anytao.com 转贴请注明出处,留此信息. 本文将介绍以下内容: • .NET的基础和技巧探讨 • 胡言乱语话技术 王论: 今日话题: ...

  4. Excel 2007 宝典 (中文版高清PDF下载)

    Excel 2007 宝典 (中文版高清PDF下载) 转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/11/06/1597111.html

  5. 《系统》是南方周末2007年度最好的特稿

    [url]http://www.sichina.com/blog/detail/53037.html[/url]转载自关军的博客 智慧+勇气,是多么多么多么多么美妙 昨天下午有一段空闲时间,躲在万圣书 ...

  6. 与一个即将毕业的计算机系大四学生关于求职的对话

    最近一段时间因为家庭和感情原因,我也面临着辞职和找工作的问题,在北京上海和现在工作的城市因为人脉及虚名和其它原因,如果找起工作来可能会相对容易一些,但是主要是考虑到这些年一直在外漂泊,所以很想回到湖北 ...

  7. Office Project Server 2007 安装出错:SharePoint兼容性故障

    Office Project Server 2007 安装出错:SharePoint兼容性故障 转载▼情况:Office Project Server 2007 在 Windows Server 20 ...

  8. [你必须知道的.NET] 开篇有益

    ©2007 Anytao.com 转贴请注明出处,留此信息. 本文将介绍以下内容: • .NET的核心知识汇总 • 学习.NET的圣经心得 1. 引言 最近常常为学习中的问题而伤神,幸有管伟一起常常就 ...

  9. [你必须知道的.NET] 开篇有益(转载)

    [你必须知道的.NET] 开篇有益 转载自发Anytao.com 作者:Anytao 本文将介绍以下内容: • .NET的核心知识汇总 • 学习.NET的圣经心得 1. 引言 最近常常为学习中的问题而 ...

最新文章

  1. C# 准备开始学习 并行程序开发
  2. 【Windows 逆向】OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )
  3. Android 设置Activity透明
  4. Android18isalone,全新JAVA开发Android程序员需要掌握的英语单词(很全).doc
  5. eclipse 左边目录结构下五referenced library解决办法
  6. 承接各类软件开发项目
  7. Python编程练习题
  8. 过椭圆外一点引两条切线方程_S16-2 二次曲线和圆方程
  9. 广告屏蔽大师 v5.4.521.1800
  10. C语言——通讯录的实现
  11. 计算机创业计划书800字大全,创业计划书范文800字
  12. ARM 汇编详解 -- 体系结构与编程
  13. 乐味煲耳机软件中文版解读
  14. WIFI测试APP(华为、华三、锐捷)
  15. 基于PG与PostGIS搭建实时矢量瓦片服务
  16. 个人对系统拆分的理解
  17. Linux帐号和登录安全
  18. 通过父级id 递归找到所有子类
  19. MySQL数据库查看时区
  20. 中文期刊模板的页面格式,以《电力系统自动化》为例

热门文章

  1. 【postgresql】centos7安装postgresql-devel步骤
  2. 吹爆CSDN插件助手的细节功能(保姆级图文)
  3. 岭南学院python课程作业2-1
  4. 补习系列(3)-springboot 中的几种scope
  5. 在Centos7上安装osp
  6. jieba分词 自定义词表简介
  7. 复杂性思维中文第二版 十一、进化
  8. OpenEmu添加Core和bios
  9. 蚂蚁金服新一代数据可视化引擎 G2
  10. 【深度学习】实验1答案:Softmax实现手写数字识别