AはBのオブジェクトを生成してBを返す  
Bはレコードを追加する  
Cは引数にBのオブジェクトを持ち追加したレコードによってファイルを作成しそのファイル名を返す

AとBはできましたがBで作成したlistをどうやってCに渡すかがわかりません

```

    public class A{
        public B create(){
            B b = new B()
            return b;
        }
    }
    
```

Bは

```

    public class B{
        private ArrayList list = new ArrayList();
    
        publc void add(int a,int b,String c){
            list.add(a);
            list.add(b);
            list.add(c);
            System.out.println(list);
        }
    }
    
```

としまして  
Xでは

```

    public class x{
        public void test{
            A a = new A();
            B b = a.create();
            b.add(000001,1234,"テストデータ");
        }
    }
    
```

これで想定の結果が出力されました。  
後はCのメソッドを作ってXで呼び出せれば完成です

Cでは

```

    public class C{
        public String createFile(B add){
            //ファイルを作成
        }
    }
    
```

このCの部分を作成するに当たってBのaddという情報を渡すにはどうしたらいいのでしょうか？
CC BY-SA 3.0
2016-02-09T02:06:31.547
21871
2016-02-09T15:42:00.510
2016-02-09T06:07:24.010
14338
14338
question
java
Javaについて
スタブということなので、レコードの追加処理やファイルの生成処理の実コード的な部分ではなく、クラスの輪郭を作る方法がわからないという解釈で説明します。

Javaのクラスはインスタンス化しないと使えません。ですので、A,B,Cのクラスを使うには下記のようにそれぞれインスタンス化する必要があります。

```

    A a = new A();
    B b = new B();
    C c = new C();
    
```

また、クラスに何かをさせるにはクラスにメソッドを定義する必要があります。

  * Aのクラスは「Bのオブジェクトを生成する」メソッドが必要
  * Bのクラスは「レコードを追加する」メソッドと、Cクラスがファイルを作る際に呼ぶ「レコードを取得する」メソッドが必要
  * Cのクラスは「ファイルを生成してファイル名を返す」メソッドが必要

これらを踏まえると、A,B,Cのクラス定義は下記のようになるかと思います。

クラスA:

```

    public class A
    {
        /** Bオブジェクトを生成する */
        public void createB()
        {
            return new B();
        }
    }
    
```

クラスB:

```

    public class B
    {
        /** レコードを追加する */
        public void addRecord(Object object)
        {
        }
    
        /** レコードを取得する */
        public Object getRecord()
        {
        }
    }
    
```

クラスC:

```

    public class C
    {
        public String createFile(B b)
        {
            // 作成したレコードを取得
            Object object = b.getRecord();
            // ファイルを作成する処理
            ・・・
            return "ファイル名";
        }
    }
    
```

これらを利用する場合は下記のようになります。

```

    A a = new A();
    // Bオブジェクトの生成
    B b = a.createB();
    // レコードの追加
    b.addRecord(/* レコード情報を表す何か */);
    // ファイル生成
    C c = new C();
    String fileName = c.createFile(b);
    
```

インプットとなる情報が何であるのかは提示されていないため引数は適当に記載しています。
CC BY-SA 3.0
2016-02-09T03:03:39.067
21872
2016-02-09T03:03:39.067
10724
21871
answer