论坛首页 Java企业应用论坛

算法和面向对象的讨论(从业务领域知识帖子切分出来)

浏览 9592 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-11-21  
OO
weihello 写道
我酸一句:此言差矣

"对象建模解决的是软件的结构问题", 这句话问题多多。

一般说,我们认为框架解决软件结构问题。

IMO,对象建模不过是以对象描述业务世界的事物。

"但是肯定不直观而且会绕很多弯路",此言我也不同意,对象建模的目的就是为了更直观,至于是否走弯路,那就看你对事物的理解足够透彻否。

一点浅见,但愿不贻笑大方。

呵呵,我说的是“某些场合”、“有些复杂的问题”就是为了避免争论。我承认对象建模要解决的问题可能更复杂,但是它要解决的主要还是结构方面的复杂性,而不是细部的复杂性。
软件开发大的范围是以体系结构为中心,但是在一些小的范围会出现以数据结构+算法为中心的情况(尤其是在 OLAP 一类的应用中算法是非常重要的)。在软件开发的细部采用更好的算法会起到一巧破千斤的作用。对于项目开发可能这些细部没有必要精益求精,但是对于产品开发这些细部也是非常重要的,甚至会成为产品质量的瓶颈。
可能我谈的不够具体使你没有完全明白我们遇到的问题为何需要实现稀疏距阵和向量计算。以后我会具体谈一些关于算法的问题。谈这些问题时最好不要把 OO 牵扯进来,因为这是粒度不同的两个问题。就象设计模式好还是框架好这个问题一样,它们完全是粒度不同的概念。

我前一些时候强调关注业务的重要性,现在又强调关注低层技术,似乎绕了一个圈,彼此矛盾。但是这些问题(业务需求、技术实现的难度)你在做项目时哪个是可以避开的呢?
   发表时间:2003-11-21  
dlee 写道

    可能我谈的不够具体使你没有完全明白我们遇到的问题为何需要实现稀疏距阵和向量计算。以后我会具体谈一些关于算法的问题。谈这些问题时最好不要把 OO 牵扯进来,因为这是粒度不同的两个问题。就象设计模式好还是框架好这个问题一样,他们完全是粒度不同的概念。


    其实算法问题我也遇过,让我难以决断。结果发现,我没有理解问题的实质。贴子里我贴过,之前我不知道世界上本应该存在TimeRange。想想如果不用TimeRange封装,那么我的这个时间范围算法复杂。 最后,我用了一系列的对象解决了这个问题。大大简化了问题,让客户程序绝对轻松了许多。

   OO和算法不冲突,也不是丛属关系;他们的关系与框架-模式关系是有本质区别的。一般说了,我们认为一个算法可以以一些对象来解决问题。:)
0 请登录后投票
   发表时间:2003-11-21  
weihello 写道
一般说了,我们认为一个算法可以以一些对象来解决问题。

我现在与你谈的是基础的算法问题,还没有封装到对象建模的高度。
即使你设计了一些对象实现了一个复杂的算法(举个例子,图的两点间最长路径和最短路径),在这个细部仍然是以算法为中心的(首先你了解这个算法,然后设计对象来实现它。然后你才会进一步考虑你的设计要有灵活的结构,以便将来替换为更好的算法,这是一个 GOF 的 Strategy 模式所要做的事情)。只有你将算法适当封装后在大的范围内才是以体系结构为中心的。
我们在做开发的过程中发现有些问题甚至需要使用比《数据结构》教材中更加复杂的算法。我并不认为这是软件开发的普遍现象。大多数情况下对象建模都是可以解决的。对于一些复杂的算法,需要多个对象配合来实现。相同的算法在面向对象语言(Java)中的实现方式同在面向过程语言(C)中的实现方式也会有不同,但是这只是实现问题。如果连算法都没有,设计一堆对象出来能解决什么问题呢?
0 请登录后投票
   发表时间:2003-11-21  
看来我要继续切分帖子了,分出来一个

算法 vs 面向对象

的帖子。
0 请登录后投票
   发表时间:2003-11-21  
呵呵,标题好象还是有点...... 很容易发展为又一次主义之争。
胡适曰:“多研究些问题,少谈些主义。”
0 请登录后投票
   发表时间:2003-11-21  
dlee 写道
呵呵,标题好象还是有点...... 很容易发展为又一次主义之争。
胡适曰:“多研究些问题,少谈些主义。”


    同意同意.........XXX vs XXX,比较泛滥........
0 请登录后投票
   发表时间:2003-11-23  
实在点的问题:
Java能用C++的算法库?
常见的几个算法的在Java中如何使用?--二分检索、快速排序、散列表
再复杂点就是外排序方面的应用了,主要是堆排序、查找树(B树之类的)
还是围绕数据量的大小衍生出来的问题,能一次读入内存处理的数据,靠几个基本的算法和数据结构都能满足要求了,数据大了才弄出一大堆复杂的东东,唉,叫老板卖内存……
0 请登录后投票
   发表时间:2003-12-17  
大家理解的算法能不能不要这么狭义呢?
0 请登录后投票
   发表时间:2003-12-17  
lingychen 写道
大家理解的算法能不能不要这么狭义呢?


广义的理解是什么呢?

算法应该和OO设计没什么冲突吧?你可以把某一种算法封装在任何一个Java对象的方法里,设计模式里也有strategy的模式来支持多个不同算法的切换和扩展。感觉算法应该还不会要和OO设计来做比较。
0 请登录后投票
   发表时间:2004-02-13  
恕我愚钝,不知道用面向对象的思想来实现那些用面向过程的思想实现的排序,查找,树结构能不能被当成是算法, 而能否把这些解决方案按照某些所谓的标准做成一个设计模式,
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics