1

私が作成した Java には 3 つのクラスがあります。

カレッジコース

package CollegeCourse;
import javax.swing.JOptionPane;
public class CollegeCourse {

protected String Dept;
protected int CourseNum;
protected int Cred;
protected int fee;
protected int Charge = 120;
protected int labfee;

public void inputDepartment(){
    Dept = JOptionPane.showInputDialog(null, "Enter Department");
}

public void inputCourseNumber(){
    String CourseNumString = new String(" ");
    CourseNumString = JOptionPane.showInputDialog(null, "Enter Course Number");
    CourseNum = Integer.parseInt(CourseNumString);
}

public void inputCredits(){
    String CredString = new String(" ");
    CredString = JOptionPane.showInputDialog(null, "Enter Credits");
    Cred = Integer.parseInt(CredString);
}

 public void displayNonLabCourse(){
    fee = Cred * Charge;
    JOptionPane.showMessageDialog(null, Dept + CourseNum + 
            "\nNon-lab Course" + "\n" + Cred +" Credits" + "\nTotal fee is $" + fee);
 }

}

ラボコース

package CollegeCourse;
import javax.swing.JOptionPane;
public class LabCourse extends CollegeCourse {

 public void displayLabCourse(){
    labfee = fee + 50;
    JOptionPane.showMessageDialog(null, Dept + CourseNum + 
            "\nLab Course" + "\n" + Cred +" Credits" + "\nTotal fee is $" + fee);
 }
 }

ご利用コース

package CollegeCourse;
public class UseCourse{
public static void main(String[] args) {
    CollegeCourse college = new CollegeCourse();
    college.inputDepartment();
    college.inputCourseNumber();
    college.inputCredits();
    college.displayNonLabCourse();
    }
}

ユーザーが「BIO」のような特定の部門に入ったときに、UseCourse クラスに LabCourse 表示メソッドを表示させるにはどうすればよいですか?

学科 (ENG など)、コース番号 (101 など)、単位数 (3 など)、およびコースの料金 (360 ドルなど) を保持するデータ フィールドを含む CollegeCourse という名前のクラスを作成します。クレジット時間あたり $120 で計算される料金を除いて、すべてのフィールドがコンストラクターへの引数として必要です。コース データを表示する display() メソッドを含めます。コース料金に $50 を追加する LabCourse という名前のサブクラスを作成します。親クラスの display() メソッドをオーバーライドして、コースがラボ コースであることを示し、すべてのデータを表示します。ユーザーに情報を要求する UseCourse という名前のアプリケーションを作成します。ユーザーが BIO、CHM、CIS、または PHY のいずれかの部門のクラスに参加する場合は、LabCourse を作成します。ユーザーが他の部門に入ると、実習費を含まない CollegeCourse を作成します。次にコースデータを表示します。ファイルを CollegeCourse.java、LabCourse.java、および UseCourse.java として保存します。

4

2 に答える 2

2

これは、元の実装とはまったく異なります。しかし、私はそれがあなたが望むことをすることを信じています。おそらくもっと良い実装方法がありますが、私はあなたが私にくれた情報に基づいて実装しているだけです。あなたがそれをすべて理解することを願っています...


UseCourse:

import javax.swing.JOptionPane;

public class UseCourse
{   
    public UseCourse()
    {
        CollegeCourse college;
        // Collect all the necessary data first to determine whether it is a lab course or not.
        String dept = JOptionPane.showInputDialog(null, "Enter Department");

        String courseNumString = JOptionPane.showInputDialog(null, "Enter Course Number");
        int courseNum = Integer.parseInt(courseNumString);

        String credString = JOptionPane.showInputDialog(null, "Enter Credits");
        int cred = Integer.parseInt(credString);

        // Now that we have the info we can ask the question.
        if (dept.equals("BIO") | dept.equals("CHM") | dept.equals("CIS") | dept.equals("PHY"))
        {college = new LabCourse(dept, courseNum, cred);}

        else {college = new LabCourse(dept, courseNum, cred);}
        college.display();
    }

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

CollegeCourse:

import javax.swing.JOptionPane;
public class CollegeCourse {

protected String dept;
protected int courseNum;
protected int cred;
protected int fee;
protected int Charge = 120;
protected int labfee;

public CollegeCourse(String dept, int courseNum, int cred)
{
    this.dept = dept;
    this.courseNum = courseNum;
    this.cred = cred;
    fee = cred * Charge;
}

public void display(){

    JOptionPane.showMessageDialog(null, dept + courseNum + 
            "\nNon-lab Course" + "\n" + cred +" Credits" + "\nTotal fee is $" + fee);
 }
}


LabCourse:

import javax.swing.JOptionPane;
public class LabCourse extends CollegeCourse 
{
    public LabCourse(String dept, int courseNum, int cred)
    {super(dept, courseNum, cred);}

    public void display()
    {
        fee += 50;
        JOptionPane.showMessageDialog(null, dept + courseNum + 
                "\nLab Course" + "\n" + cred +" Credits" + "\nTotal fee is $" + fee);
    }  
}
于 2012-12-10T11:23:20.073 に答える
1

継承を使用してこれを実行する場合は、CollegeCourseクラスとLabCourseクラスの両方で「displayCourse」のような同じメソッド名を付ける必要があります。次に、ユーザーによる入力に基づいて:

CollegeCourse c = null;
if (userSelectedCollegeCourse) {
c = new CollegeCourse(param1, ...);
}else{
c = new LabCourse(param1, ...);
}

c.displayCourse();
于 2012-12-10T11:22:54.120 に答える