UMLシーケンス図でこのコンストラクターを見て、別のオブジェクトからオブジェクトをインスタンス化することは可能ですか ?
このような状況は、Java などのプログラミング言語で可能ですか?
UML などのモデリング言語でこのような状況はありえますか?
UMLシーケンス図でこのコンストラクターを見て、別のオブジェクトからオブジェクトをインスタンス化することは可能ですか ?
このような状況は、Java などのプログラミング言語で可能ですか?
UML などのモデリング言語でこのような状況はありえますか?
はい、オブジェクト指向プログラミングの概念全体は、オブジェクトが他のオブジェクトを作成できることに依存しています。
new ClassB()
Java では、新しい ClassB オブジェクトをインスタンス化するコンストラクタなどを呼び出してインスタンスを作成します。ClassA に ClassB をインスタンス化させたい場合は、ClassA に ClassB のコンストラクターを呼び出させるだけです。Javaでそれを行う方法は次のとおりです
public class ClassA{
public ClassA(){
ClassB instance1 = new ClassB();
}
}
ここでは、ClassAがインスタンス化される (コンストラクターが呼び出される) ときに、 instance1というClassBの新しいインスタンスを作成するように作成しました。
はい、これはJavaの重要な部分であり、オブジェクト指向言語です。
AとBの2つのオブジェクトがあり、BがAのサブクラスである場合、Bを使用してAをインスタンス化できます。
A baseObject = new B();
ここでの関係は、「B」がA「A」であることを示しています。つまり、Aがある場所であればどこでも、BはAの適切なサブタイプであるため、その場所でBをインスタンス化できます。このように使用してください。
リストを使用すると、Javaの実際の例を見ることができます。JavaのListクラスは、Collectionから派生した抽象コンテナタイプです。この例では、リストは「A」タイプです。LinkedListやArrayListなど、さまざまな種類のリストがあります。LinkedListとArrayListは、Listの適切なサブタイプであり、この例ではタイプ「B」です。したがって、リストをそのサブタイプのいずれかとして初期化できます。
List<String> stringList = new ArrayList<String>();
また
List<String> stringList = new LinkedList<String>();
うまくいけば、これはいくつかの助けになります。
あなたが求めていることを理解していれば、はい、継承または構成を介してこれを行うことができます。
継承:
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
}
}
幸運を!