0

私はJavaプログラムを持っています:

    public class Faculty 
    {
    String facultyName;
    Double gemavailable; 
    }

    public class Session
   {
    String coursename;
    float noofhours;
    ArrayList<Faculty> faculty=new ArrayList<>();
    }

    public class TrainingInstitute 
   {
   ArrayList<Faculty> faculty=new ArrayList<>();
   ArrayList<Session> session=new ArrayList<>();

   public void takeASession(String coursename,float hours,ArrayList<Faculty> faculty)
   {
    Session s=new Session(coursename, hours, faculty);
    session.add(s);
   }

そして、私は次のようなメインクラスを持っています:

    public class TrainingController 
    {

    public static void main(String[] args) 
    {
        TrainingInstitute t=new TrainingInstitute();

        t.takeASession("java", 5,f1);
    }

私の主な動機は、コース名、コースを受講した教員、コースの期間を設定してセッションオブジェクトを作成することです。セッションオブジェクトは、トレーニングインスティテュートのsessionTakenリストに追加されます。どうすればいいですか?

4

4 に答える 4

1

これを行うには2つの方法があります

クラスにオーバーロード コンストラクターを設定し、最初に 1 つの教員をプッシュしてから、メソッドSessionを使用して教員を段階的に追加することができます。addFaculty

    public class Session {

    private String coursename;
    private float noofhours;
    private ArrayList<Faculty> faculty=new ArrayList<Faculty>();

    public Session(String courseName, float noOfHours, Faculty faculty){
        this.coursename=courseName;
        this.noofhours=noOfHours;
        this.faculty.add(faculty);

    }

    public Session(String courseName, float noOfHours, ArrayList<Faculty> faculty){
        this.coursename=courseName;
        this.noofhours=noOfHours;
        this.faculty=faculty;

    }

    public void addFaculty(Faculty faculty){
        this.faculty.add(faculty);

    }


}

それ以外の場合は、

 t.takeASession("java", 5,new ArrayList(){{add(f1);}});
于 2012-10-30T16:09:47.207 に答える
1

次のようにオブジェクトをインスタンス化できるようにするにSessionは:

Session s = new Session(coursename, hours, faculty);

Sessionクラスでそのようなコンストラクターを定義する必要があります

public class Session {
    private String courseName;
    private float noOfHours;
    private List<Faculty> faculties;

    public Session(String courseName, float noOfHrs, List<Faculty> faculties) {
        this.courseName = courseName;
        this.noOfHours = noOfHrs;
        this.faculties = faculties;
    }

リストのタイプとして (実装)Listではなく (インターフェース)を使用する必要があります。ArrayListまた、クラスのフィールドをカプセル化する必要があります。

于 2012-10-30T16:10:38.613 に答える
0

投稿が遅れて申し訳ありませんが、これは私がプログラムを実行した方法です: public class TrainingInstitute {

private ArrayList<Faculty> faculty1=new ArrayList<Faculty>();
private ArrayList<Session> session1=new ArrayList<Session>();

public void takeASession(String facname,String cname,float noOfhours)
{

        Session s=new Session(cname, noOfhours,new Faculty(facname));
        session1.add(s);
        System.out.println("The session for"+""+facname+"is added and the size is:"+session1.size());
}
于 2012-11-06T04:02:02.640 に答える
0

これが私がすることです

public class TrainingController {

    public static void main(String[] args) {
        Faculty faculty1 = new Faculty("NY", 200.0);
        List<Faculty> faculties = new ArrayList<Faculty>();
        faculties.add(faculty1);

        TrainingInstitute training=new TrainingInstitute();
        training.takeASession( new Session("java", 5, faculties) );
        training.takeASession( new Session("php", 4, faculties) );
        System.out.println(training);
    }
}

class Faculty {
    String facultyName;
    double gemavailable;
    public Faculty(String facultyName, Double gemavailable) {
        this.facultyName = facultyName;
        this.gemavailable = gemavailable;
    }
    public String toString(){
        return facultyName+" "+gemavailable;
    }
}

class Session {
    String coursename;
    float noofhours;
    List<Faculty> faculties;
    public Session(String coursename, float noofhours,
            List<Faculty> faculties) {
        this.coursename = coursename;
        this.noofhours = noofhours;
        this.faculties = faculties;
    }
    public List<Faculty> getFaculties() {
        return faculties;
    }
    public String toString(){
        return coursename+" "+noofhours+" "+faculties;
    }
}

class TrainingInstitute {
    Set<Faculty> faculties = new HashSet<Faculty>();
    List<Session> sessions = new ArrayList<Session>();
    public void takeASession(Session session) {
        sessions.add(session);
        faculties.addAll(session.getFaculties());
        for (Faculty faculty: faculties){
            faculty.gemavailable -= session.noofhours;
        }
    }
    public String toString(){
        return "faculties: " + faculties + "\nsessions:" + sessions;
    }
}
于 2012-10-30T16:38:14.040 に答える