A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱峁 中级黑马   /  2012-12-10 16:36  /  1863 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class AA
{
private int k; // 成员变量

// 实质是面向过程
public static int add(int x, int y)
{
return x + y;
}

public void set(int x)
{
k = x;
}

public int add(int y)
{
return k + y;
}
}

public class MyObject
{
public static void main(String[] args)
{
AA a = new AA();
a.set(3);
System.out.println(a.add(7));
System.out.println(a.add(9));

AA b = new AA();
b.set(5);
System.out.println(b.add(7));
System.out.println(b.add(9));

// 伪面向对象
/*
AA a = new AA();
int m = a.add(5,6);
System.out.println(m);
*/
}
}

伪面向对象是什么

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
说不清啊,貌似尽量不用?{:soso_e153:}
回复 使用道具 举报
我晕
你说了等于没说
回复 使用道具 举报
个人感觉是没有掌握好面向对象的思想,为了实现某一功能而写出了伪类,七实质还是面向过程(调用方法,实现功能)...
这个是思想问题...
回复 使用道具 举报
搜索出来的。。。。。。参考一下。。。。  

  什么叫【伪面向对象】?
    面向对象是将业务需求的自然语言转化成遵循一定标准的可让参与者有共同理解的抽象化概念。因为对于一个业务需求的自然语言描述,100个人可能就有100种理解或者派生出不同的分支,因此将其抽象化成大家有共同理解的概念,至少能让这些分歧减少到最小,让大家都明白要做哪些,哪些隐形的可以不做,哪些隐形的确一定要做。其实这就是业务建模的一个过程,其包含了业务需求到业务模型的过程。
   
    而【伪面向对象】呢?就是直接将业务需求转化成物理模型,而不是经由业务模型->技术模型的过程。
为什么这么说呢?面向对象是以对象间的关系来描述自然语言中的自然关系,而这种对象的关系是足够表达清楚这种抽象关系的,那么我们看物理模型,物理模型实际是集合类的数据排列,比如:某张表,某个视图。表间只能表达主外键关系,很难表达出集继承,多对多,一对多等等这样的关系,而对象关系就能轻易表达出来。打个比方:在一个数据库关系图上讨论对象间的关系,或在一个对象类图上讨论对象间的关系是否合适,哪个更清晰?很明显是后者。但很多人在设计系统的时候,往往直接由业务需求向物理模型转化(我们当然要排除那些牛人),我觉得这是非常不对的,这往往就是悲剧的开始。
    那么应该怎么做呢?一个比较好的顺序是:业务需求->业务模型->技术模型->物理模型
从上而下的流向设计
    用这样的顺序分析出来的系统,才能说是业务明确的(我不否认直接到物理模型的设计方法也可以做出好的系统,但看过上文应该清楚,可能做为系统设计人员能明白,但做为开发人员呢?不一定能明白物理模型中暗含的各种关系)
举例:


三种对象关系在对象图上明明白白,但如果在数据关系图上呢?

就是一个主外键关系,看这个图,恐怕当事人还要去仔细思考一下,到底是上面哪种关系呢?,如果稍微不注意,就可能导致出错(这还不包括中间表的情况,如果是中间表的情况,这个图就是错误的了)。
而【伪面向对象】设计方法就会造成以上的情况产生,真正的面向对象方法在对象设计的时候就已经确定了,因此根本不可能出现在物理表阶段出现的这种问题。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马