weixin_42300904
2009-03-18 22:20
浏览 183
已采纳

请教,面向对象的困惑?

我打个比如来说,大家帮忙看看我的想法哪里错了

比如要建立一个论坛,论坛有很多种板块,比如像javaeye的有java板块,ajax板块。
每个板块都一些设置,不同的板块可能有些不同的设置或显示选项。
如果用建关系表,那我可以用一个forum_type的表来存储板块类型,然后用一个forum_type_property来对应不同板块的属性设置。

但如果用对象来建类,那是不是像这样:


public class Forum{
}


JavaForum:

public class JavaForum extends Forum{
}


AjaxForm:

public class AjaxForm extends Forum{
}


但如果这样的话,那我要增加一个种类的板块,岂不是要新建一个类?而不是像关系表那样,新增一个板块就添加相应的数据就可以了……

我知道我的理解是有问题的,请问我的想法错在哪里?
问题补充:
没明白,可能我举的例子有问题
再说一个,比如我有一个动态添加动物的功能,关系数据表是这样的。
一个动物表:
t_animal:
id   name
1    老虎
2    乌鸦

然后一张动物的器官表:
t_animal_part:
id  animal_id part_name
1      1         头
2      1         四肢
3      1         尾巴
4      2         头
5      2         双脚
6      2         尾巴
7      2         翅膀

乌鸦比老虎多了翅膀的部分。
如果我要添加一种动物,比如蛇,那么只要在t_animal表添加一条“蛇”的数据,
然后在t_animal_part表添加相应的不分即可。不用改任何代码。

但如果按照每一种动物一个类的话,比如:

public Tiger extends Animal{
}

那势必是每添加一种动物就要加一个类吧?
比如添加蛇就要添加一个这样的类:

public snake extends Animal{
}


或者说,用类继承都是静态,固定了的,不可在运行时再添加或者删除。
那如果我现在要做一个可以在运行时添加删除动物的功能,是不是就不能用这种面向对象的想法了?


问题补充:

-----------------------------补充分割线--------------------------------

你说的我应该明白。
但不知道你有没有看我的问题补充,那个动物的例子。
我说的就是每个动物都是不同的。比如老虎有四条腿没有翅膀,而乌鸦两条腿有翅膀。
如果按上文说的数据表来建模,那么我添加一种动物只需要保存相应的数据即可。但如果建模成那种继承的类模型,就不是添加数据就可以解决问题了。因为要添加相应的类。

其实我的意思大概应该也相当于你说的那个SpeForum。
按你的说法,那只能是添加相应的类了。
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

5条回答 默认 最新

相关推荐 更多相似问题