论坛首页 Java企业应用论坛

我也来发邮件

浏览 19963 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-04-04  
Trustno1 写道
jeffrey_he 写道
对象就是对象,简单的也是对象。

ADT,Object Base和Object  Oriented完全是三个不同的概念,虽然他们可能采用相同的语法。


不明白你的意思,我的意思是说邮局是个对象,就算这个邮局只有一个发送邮件的方法也应该看成是一个对象。麻烦多敲几个字,太抽象了。

在一个系统中总会有一些东西无法和现实中的东西相对应,所以就不应该看成是对象,只是由于JAVA中所有的东西都是用class来构造的,容易让我们误以为这些东西也是对象。好像一个论坛系统,通常我们会把一个版块设计成对象,然后可能设计一个控制版块的类,用来创建版块、删除版块等等工作。而这个控制版块的类在现实中没有东西对应。
楼主是这个意思么?
不过我还是不明白你究竟想表达的是什么,是想说这样做的弊端么?还是这样做是错误的?
就上面论坛的例子,把论坛系统看成是一个对象,论坛系统可以创建论坛板块、删除论坛板块等等,由于对板块的控制方法很多,把这些方法放到一个类里面,把它定义为论坛板块控制器,它是没有现实对象跟它对应的,但看成一个虚拟的对象有什么问题呢?
楼主总是提到过程,这部分跟过程有关系么?

在面向对象编程中肯定是存在过程编程的,例如完成一个业务,我可能调用多个对象协同完成。这个业务本身就是一个过程,我们当然是按过程的思路来编写程序了。

楼主写了很多,不过我还是没明白你究竟想表达的是什么东西?
0 请登录后投票
   发表时间:2004-04-04  
楼上的讲的都很好:

我觉得期间最为重要的,就是一个分层的问题。

什么样的方法应该放到对象上面,什么样的不放,是个很主观的东西。

有很多情况下面,一个操作都会涉及到更新N多个对象的状态,查询N多个对象的状态。这个时候,这个操作也许本身不属于某一个对象,很经常的情况呢,就是将其作为一个commander模式来实现,需要在设计的时候注意这些操作(Commander),单向的依赖于对象的方法(对象所具有的方法,不能够调用这些commander)。

有些过程或者操作是不需要作为一个commander的,也就是实用工具类(Utils),相当于函数库,实现为immutable的函数,本身没有状态。
0 请登录后投票
   发表时间:2004-04-05  
jeffrey_he 写道
在一个系统中总会有一些东西无法和现实中的东西相对应,所以就不应该看成是对象,只是由于JAVA中所有的东西都是用class来构造的,容易让我们误以为这些东西也是对象。好像一个论坛系统,通常我们会把一个版块设计成对象,然后可能设计一个控制版块的类,用来创建版块、删除版块等等工作。而这个控制版块的类在现实中没有东西对应。
楼主是这个意思么?


对,我基本上就是这个意思!

jeffrey_he 写道
不过我还是不明白你究竟想表达的是什么,是想说这样做的弊端么?还是这样做是错误的?

就上面论坛的例子,把论坛系统看成是一个对象,论坛系统可以创建论坛板块、删除论坛板块等等,由于对板块的控制方法很多,把这些方法放到一个类里面,把它定义为论坛板块控制器,它是没有现实对象跟它对应的,但看成一个虚拟的对象有什么问题呢?
楼主总是提到过程,这部分跟过程有关系么?


在面向过程思考的年代,我们常常把真实世界的运行方式,“看成”一个一个的过程。而在现在,面向对象的思想成为主流,于是我们就常常会把只跟计算机相关的工作过程,“看成”一个一个的对象。

这样的两种“看成”,就是对实际情况的扭曲。这样的扭曲,会使得写出来的程序不自然,不合理。

我想指出的,就是面向对象的思考方式,应该集中在真实世界,或者现在常说的“业务层”,而不是像现在这样,无所不在。


jeffrey_he 写道
在面向对象编程中肯定是存在过程编程的,例如完成一个业务,我可能调用多个对象协同完成。这个业务本身就是一个过程,我们当然是按过程的思路来编写程序了。


你说的过程,是一个对象内的某个方法内的过程,与我说的不是一个意思。

jeffrey_he 写道
楼主写了很多,不过我还是没明白你究竟想表达的是什么东西?


我写了很多,因为要说出的这个太......,所以需要做很多的铺垫,我才敢说出来——“面向对象不应该用在所有的层面上,那样的思考方式,是有害的!”。
0 请登录后投票
   发表时间:2004-04-05  
有对象未必就是OO。
ADT,Object base也都是基于对象的概念,但是和OO却一点关系都没有
0 请登录后投票
   发表时间:2004-04-05  
Trustno1 写道
有对象未必就是OO。
ADT,Object base也都是基于对象的概念,但是和OO却一点关系都没有


CSDN_面向对象编程:Java中的抽象数据类型
说ADT和OO没有一点关系,似乎有点过了......

但是关于Object base的不同于OO介绍,我没有找到,能介绍一下区别吗?
0 请登录后投票
   发表时间:2004-04-05  
我晕,扯到这些概念性的东西上去了,完全走题了吧?
0 请登录后投票
   发表时间:2004-04-05  
庄表伟 写道
Trustno1 写道
有对象未必就是OO。
ADT,Object base也都是基于对象的概念,但是和OO却一点关系都没有


CSDN_面向对象编程:Java中的抽象数据类型
说ADT和OO没有一点关系,似乎有点过了......

但是关于Object base的不同于OO介绍,我没有找到,能介绍一下区别吗?

6.0以前的vb,javascript,都是object base的语言
0 请登录后投票
   发表时间:2004-04-05  
庄表伟 写道
我写了很多,因为要说出的这个太......,所以需要做很多的铺垫,我才敢说出来——“面向对象不应该用在所有的层面上,那样的思考方式,是有害的!”。


不至于吧,这地球人都知道。“有害的”这个说法有点耸人听闻,如果改用“笨重的,x钝的”可能会更好些。
0 请登录后投票
   发表时间:2004-04-05  
xanada 写道
不至于吧,这地球人都知道。“有害的”这个说法有点耸人听闻,如果改用“笨重的,x钝的”可能会更好些。


我当然可以选择一个更加“温和”的评价词。

但是相比面向对象思想带来的种种“问题”。言辞激烈一些,可能能够吸引更多的注意。纠枉必须过正,应该就是用在这样的问题上的吧。:)
0 请登录后投票
   发表时间:2004-04-05  
jeffrey_he 写道
我晕,扯到这些概念性的东西上去了,完全走题了吧?


我倒不是不当心扯到这些概念性的东西上去的。
我更愿意承认,我是处心积虑要扯到这些概念性的问题上来的。

发邮件只是一个引子,面向对象的问题,当然可以从讨论这个例子入手。

再者说,概念性的东西,不搞清楚,怎么能够更好的编程呢?
1 请登录后投票
论坛首页 Java企业应用版

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