是有可能在這個 constructor in UML sequence diagram對象實例化另一個對象?
從另一個對象 看看實例化對象是否這種情況可能在編程語言如Java?
這種情況在建模語言(如UML)中可能嗎?
是有可能在這個 constructor in UML sequence diagram對象實例化另一個對象?
從另一個對象 看看實例化對象是否這種情況可能在編程語言如Java?
這種情況在建模語言(如UML)中可能嗎?
如果我明白你在問什麼,是的,你可以通過繼承或組合來做到這一點。
繼承:
ClassB extends ClassA {
public ClassB() {
super(); // calls ClassA constructor
// do more stuff
}
}
組成:
ClassX {
private ClassY y;
public ClassX() {
y = new ClassY(); // calls ClassY constructor
// do more stuff
}
}
祝你好運!
我不同意第一個。在UML圖中有兩個對象。在VikingSteve的代碼中,只有一個對象被創建。我的理解是,即使涉及兩個類,爲一個對象繪製兩條生命線也不是很好的UML。 – 2013-02-21 22:39:58
那麼是的,你是對的,第二個例子會更合適:) – vikingsteve 2013-02-21 22:41:47
是的,這是Java的重要組成部分,以及任何面向語言的對象。
如果你有兩個對象,A和B,B是A的子類,你可以實例化一個使用B:
A baseObject = new B();
這裏的關係表示 'B' 是一個 'A':這意味着在任何你有A的地方,你可以在它的地方實例化一個B,因爲B是A的一個合適的子類型。注意,如果你像這樣使用它,你仍然只能使用A的接口。
使用列表時可以看到Java中的一個實際示例。 Java中的List類是從Collection派生的抽象容器類型。在這個例子中,列表是我們的'A'類型。有許多不同種類的列表,例如LinkedList和ArrayList。 LinkedList和ArrayList是List的適當子類型,在本例中爲'B'類型。所以,你可以初始化列表作爲其任何亞型:
List<String> stringList = new ArrayList<String>();
或
List<String> stringList = new LinkedList<String>();
希望這是一些幫助。
是的,面向對象編程的整個概念取決於對象能夠創建其他對象。
在Java中,我們通過調用構造函數(如new ClassB()
)爲我們創建一個新的ClassB對象來創建實例。如果我們想讓ClassA實例化ClassB,我們只需要讓ClassA調用ClassB的構造函數即可。下面是我們如何會做它在Java中
public class ClassA{
public ClassA(){
ClassB instance1 = new ClassB();
}
}
在這裏,我做了它,這樣,當ClassA的被實例化(具有這就是所謂的構造函數),它創造的ClassB的稱爲INSTANCE1一個新的實例。
你在問是否可以從Java中的另一個對象實例化對象?考慮到每個程序都需要一個對象,我當然希望如此。 – 2013-02-21 22:31:45
關於你的第二個問題,你實質上是問UML中的這個例子是否可以用UML表達。很難看出答案可能不是「是」。我認爲你需要澄清這個問題。 – 2013-02-21 22:37:26