物流データの持ち方

物流モデルにおいて、戦略レベル、戦術レベル、運用レベルで統一的に扱うデータとして、全レベルの情報を全て持つ方法がある。これをオブジェクト指向風に、各レベル毎にインターフェースを定義するのはどうだろうか。実際には問題グループ毎にインターフェースを定義する。データの方は、解きたい問題のインターフェースを継承して実装する。例えば、ネットワーク問題と配送問題を解きたければ、両方のインターフェースを実装するなど。

public interface ITest1
{
  string Name {get;}
}
public interface ITest2
{
  string Name {get;}
}
public class Test1 : ITest1
{
  public string Name {get {return "Test1";}}
}
public class NewTest : Test1, ITest2
{
  public string Name {get {return "NewTest";}} // (1)
}

例えば、上記のようなクラスが合ったときに、下記はどのような出力になるか?

NewTest org = new NewTest();
Console.WriteLine(((ITest1)org).Name);
Console.WriteLine(((ITest2)org).Name);

最初の出力は、Test1である。クラスNewTestを修正して最初の出力をNewTestにするにはどうすればよいだろうか?回答は、ちょっと気持ち悪い書き方になる。
尚、上記の(1)のpublicをとると、また違う結果が得られる。


家で、ADSLから光ファイバになった。無線LANも使えるようになった。