私のコードが次のようになるとしましょう:
public class MyController
{
private Foo foo;
private FooGenerator fooGen;
//setters
public void work()
{
this.foo = this.fooGen.generateFoo();
System.out.println(this.foo.toString());
}
}
public class FooGenerator()
{
public Foo generateFoo()
{
String[] names = ["Andy", "Bob", "Charlie"];
String[] colors = ["Red", "Green", "Blue"];
int nameIndex = new Random().nextInt(names.length);
int colorIndex = new Random().nextInt(colors.length);
return new Foo(names[nameIndex], colors[colorIndex], new Random().nextInt(100));
}
}
public class Foo()
{
private String color;
private String name;
private int age;
public Foo(String color, String name, int age)
{
this.color = color;
this.name = name;
this.age = age;
}
@Override
public String toString()
{
return "This Foo's name is " + this.name + ", color is " + this.color + ", and is " + this.age + " years old.";
}
}
つまり、MyController
にはFooGenerator
があり、Foo
からFooGenerator
が返されます。これは、MyController
が利用します。
問題は、これをUMLダイアグラムでどのように表すかです。
[免責事項:私はUMLジョッキーではないので、私のWordをそれに取ってはいけません。]
こんな感じになると思います。
簡潔にするため、一部の詳細は省略されています。
最初に一歩下がって考えるべきだと思います。図とやり取りしようとしているのは誰ですか?
あなたがクラス図を介してそれを絶対にやらなければならない場合、ニックの答えは合理的なアプローチです。ただし、クラス図は通常、静的な構造を示すために使用され、creates
は行動/寿命の関係のように見えるため、アクティビティ図などの行動図に適しています
最後に図は必要ですか?これはそのような低レベルの実装の詳細のように思えますが、それに興味があるのは別の開発者だけだと私が考えることができる唯一の人ですか?開発者としては、コードを読んだほうがいいと思います。また、FooGenerator
はUMLを経由するのではなく、Foo
のファクトリーであると簡単に説明しているかもしれません。
これは、進行中の「モデルベース」と「モデル駆動型」のエンジニアリング論争の非常に小さな例です。問題は、モデルの目的は何ですか?
お役に立てれば