0

これはおそらく単純な問題ですが、私は問題を抱えています。私は3つのクラスを持っています。setmethodを含むStudentクラス:

public boolean setName(String fname)
{
        this.name = fname;
        return true;
}

文字列をsetmethodに渡すメインを持つTestClass

static Student action;

public static void main(String[] args)
{
        action.setName("John");
}

addstudentメソッドを含むClassroomクラス。

public boolean add(Student newStudent)
    {
            ???
            return true;
    }

オブジェクトを作成して配列リストに追加する方法は知っていますが、3つの別々のクラスを使用してそれを行う方法について混乱しています。私の配列リストの初期化は次のとおりです。

List<Student> studentList = new ArrayList<Student>();

Studentクラスで設定されている属性(この場合はname)を、Classroomクラスで作成されている新しいオブジェクトに関連付けるにはどうすればよいですか?

4

3 に答える 3

2

驚き最小の原則に従う必要があると思います。つまり、作成するメソッドが必要なことを正確に実行するようにします。あなたの例では、あなたのメソッドsetNameaddメソッドは何らかの理由でブール値を返します。通常、setterメソッドは、ある種のDB挿入のような操作を実行していて、オブジェクトが実際に挿入されたことを確認したい場合を除いて、ブール値を返しません。

また、一般的なイディオムは、静的mainメソッドでコントローラーオブジェクト(つまり)を作成してから、コンストラクターで必要なものを初期化するか、mainメソッド自体の内部でTestClass作成されたオブジェクトのメソッドを呼び出すことです。TestClass

これが解決策です。

public class TestClass {    
    private Classroom c;

    public TestClass() {
        c = new Classroom();
        private Student s = new Student();
        s.setName("John");
        c.add(s);
    }

    public static void main(String[] args)
    {
        new TestClass();
    }
}

public Classroom {
    private List<Student> studentList;

    public Classroom() {
         studentList = new ArrayList<Student>();
    }

    public boolean add(Student newStudent) {
         studentList.add(newStudent);
         return true; //not sure why you're returning booleans
    }
}
于 2013-03-14T02:50:08.950 に答える
1

生徒のクラスは見栄えがよく、教室のクラスには生徒のリストと、生徒を追加/削除/リストする方法が含まれている必要があります。テストクラスでは、新しい生徒を作成して、教室に追加できるようにする必要があります。

于 2013-03-14T02:43:20.720 に答える
1

中間または最終のようなテストイベントであるテストクラスが必要であり、StudentとClassRoomをテストクラスに配置したいとします。

つまり、3つのクラスがあり、それらはすべて関連しています。これが必要な場合は、これを行うことができます。(これは非常に単純化されたバージョンです!!)

class Test{
    String name;
    HashMap<ClassRoom, ArrayList<Student> > roomMap;
    // ... other functions
}


// you can use ClassRoom as key and Student list as value.
// A ClassRoom key will return a value which is a Student list containg students who are going to take a test in that room.
 public static void main(String[] args) {
    Test test = new Test();
    test.name = "MidTerm";
    test.roomMap = new HashMap<ClassRoom, ArrayList<Student> >();
    ArrayList<Student> students = new ArrayList<Student>();
    students.add(new Student("John"));
    students.add(new Student("Mark"));
    ClassRoom room = new Room("R123");
    test.roomMap.put(room, student);

    // If there are a lot of test, then you could manage test in an ArrayList in your main.
    ArrayList<Test> testList = new ArrayList<Test> ();
    testList.add(test);
}

たぶん、あなたはあなたの要件のより多くの詳細を与えることができます。

于 2013-03-14T02:46:20.317 に答える