由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 问个问题
相关主题
问个问题abstract class 的简单例子
JSF, Wicket, and Vaadindesign pattern in Java那本书比较好?
问个gwt client code调用远程object的问题关于Java design pattern
推荐个Design Patterns学习道路吧any body has experience with JADE?
Core J2EE Design PatternShow off一下一天画出来的,欢迎拍砖
想自学J2EERe: Must have public?
设计模式的问题Re: hashtable
大牛们能不能谈谈core java?Swing help
相关话题的讨论汇总
话题: relational话题: database话题: oo话题: class
进入Java版参与讨论
1 (共1页)
c**o
发帖数: 186
1
如果有两个类ab,注意不是接口,你想同时使用这2个类的功能,应该如何定义c类呢
g*****g
发帖数: 34805
2
You don't have to extend, you can encapsulate them.
Pass a and b in C's contructor and keep a and b as
instance variables.

【在 c**o 的大作中提到】
: 如果有两个类ab,注意不是接口,你想同时使用这2个类的功能,应该如何定义c类呢
c**o
发帖数: 186
3
thanks.
我就觉得题目比较模糊.不知道它是不是想考概念.
而且我觉得用instance variable.改变的永远是instance,跟c没关系啊.c的instance永远不能直接用ab
的功能.
g*****g
发帖数: 34805
4
Sure it can. Let's say a has a function test(), you can have a function
test() for c, all public api should be fine.
class C{
A a;
B b;
void test() {
a.test();
}
}

永远不能直接用ab

【在 c**o 的大作中提到】
: thanks.
: 我就觉得题目比较模糊.不知道它是不是想考概念.
: 而且我觉得用instance variable.改变的永远是instance,跟c没关系啊.c的instance永远不能直接用ab
: 的功能.

S*********t
发帖数: 78
5
我猜 这个是考 is-a 和 has-a 的区别。
inheritance vs. composition

永远不能直接用ab

【在 c**o 的大作中提到】
: thanks.
: 我就觉得题目比较模糊.不知道它是不是想考概念.
: 而且我觉得用instance variable.改变的永远是instance,跟c没关系啊.c的instance永远不能直接用ab
: 的功能.

c**o
发帖数: 186
6
I got it.
t*******e
发帖数: 684
7

generalization vs. aggregation (composition is a strong form of aggregation)

【在 S*********t 的大作中提到】
: 我猜 这个是考 is-a 和 has-a 的区别。
: inheritance vs. composition
:
: 永远不能直接用ab

c*****t
发帖数: 1879
8
is-a / has-a 其实并不是好的概念。这个东西的使用范围是 non-recursive
data 。所谓的 1:1,1:n 都是 relational database 上的概念。而 relational
database 的适用范围很窄。所以并不适合 class design 。
同时,表面上 inheritance 从定义上就是 is-a ,而 composition 就是
has-a,但是这两个概念并不是 mutually exclusive 的概念(在 relational
database 里则是)。
例子:
class A : implements B
{
private B b;
A () { this (null); }
A (B other) { b = other; }
public void action () { if (b == null) foo (); else b.action (); }
...
}
这种情况下,这种 composition 其实同时是 is-a 也是 has-a 。所以简单的
用 is-a / has-a

【在 S*********t 的大作中提到】
: 我猜 这个是考 is-a 和 has-a 的区别。
: inheritance vs. composition
:
: 永远不能直接用ab

t*******e
发帖数: 684
9

What you described here is a Gof composite pattern.
Recursive relationship exists in relational data model.

【在 c*****t 的大作中提到】
: is-a / has-a 其实并不是好的概念。这个东西的使用范围是 non-recursive
: data 。所谓的 1:1,1:n 都是 relational database 上的概念。而 relational
: database 的适用范围很窄。所以并不适合 class design 。
: 同时,表面上 inheritance 从定义上就是 is-a ,而 composition 就是
: has-a,但是这两个概念并不是 mutually exclusive 的概念(在 relational
: database 里则是)。
: 例子:
: class A : implements B
: {
: private B b;

c*****t
发帖数: 1879
10
Nope. In relational database, recursive relationship is nothing
more than an attribute that refers to the primary key. It doesn't
mean 1:n or has-a relationship.
Being able to store is-a and has-a of the same type would mean
hierarchical database, which doesn't fit in relationship database
well. If you can recall, the attributes of hierarhical database
must be flattened to "abc / def / ghi" type of attributes to be
stored in relational databases.
Thus to be able to store is-a and has-a of sam

【在 t*******e 的大作中提到】
:
: What you described here is a Gof composite pattern.
: Recursive relationship exists in relational data model.

F****n
发帖数: 3271
11
Containment and inheritance are two basic ways of reuse in OO.
In fact inheritance can be regarded as a special case of containment.
They are trying to test you OO concepts I guess.

永远不能直接用ab

【在 c**o 的大作中提到】
: thanks.
: 我就觉得题目比较模糊.不知道它是不是想考概念.
: 而且我觉得用instance variable.改变的永远是instance,跟c没关系啊.c的instance永远不能直接用ab
: 的功能.

F****n
发帖数: 3271
12
你这个例子不对,IS A 对应 Class, conceptually是一个集合
Has-a 对应的是Instance,conceptually 是 set member
所以is-a和has-a至少在Java这种分Class和Object的语言来说是严格分开的。

【在 c*****t 的大作中提到】
: is-a / has-a 其实并不是好的概念。这个东西的使用范围是 non-recursive
: data 。所谓的 1:1,1:n 都是 relational database 上的概念。而 relational
: database 的适用范围很窄。所以并不适合 class design 。
: 同时,表面上 inheritance 从定义上就是 is-a ,而 composition 就是
: has-a,但是这两个概念并不是 mutually exclusive 的概念(在 relational
: database 里则是)。
: 例子:
: class A : implements B
: {
: private B b;

F****n
发帖数: 3271
13
我觉得把JAVA的conceptual foundation说成relational DB肯定不对,你说的问题在
Relation DB中存在但在OO设计中基本上都能解决,JAVA有很好的OO模型相反
Relational DB才不具有OO概念,所以我们才需要EJB,SPRING。JAVA对应的应该是OODB。

【在 c*****t 的大作中提到】
: Nope. In relational database, recursive relationship is nothing
: more than an attribute that refers to the primary key. It doesn't
: mean 1:n or has-a relationship.
: Being able to store is-a and has-a of the same type would mean
: hierarchical database, which doesn't fit in relationship database
: well. If you can recall, the attributes of hierarhical database
: must be flattened to "abc / def / ghi" type of attributes to be
: stored in relational databases.
: Thus to be able to store is-a and has-a of sam

i**w
发帖数: 883
14
Adapter Pattern
1 (共1页)
进入Java版参与讨论
相关主题
Swing helpCore J2EE Design Pattern
菜鸟问题想自学J2EE
谁用过 BlueJ ? 有什么好和不好的地方设计模式的问题
A question about inheritance大牛们能不能谈谈core java?
问个问题abstract class 的简单例子
JSF, Wicket, and Vaadindesign pattern in Java那本书比较好?
问个gwt client code调用远程object的问题关于Java design pattern
推荐个Design Patterns学习道路吧any body has experience with JADE?
相关话题的讨论汇总
话题: relational话题: database话题: oo话题: class