2012-12-10 41 views
1

繼承和對話框我在java中,我創建了三個類別:在Java中使用

CollegeCourse

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); 
} 

}

LabCourse

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); 
} 
} 

UseCourse

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顯示方法?

創建一個名爲CollegeCourse類,其包括保持部 (例如ENG)對過程數據字段,過程號(例如,101)時,幣(例如3), 和費(例如,360美元)。除費用外,所有這些字段都必須作爲構造函數 ,計算費用爲每個學分$ 120。 包含顯示課程數據的display()方法。創建一個名爲LabCourse的子類, 增加50美元的課程費用。覆蓋父類display()方法以指示 課程是顯示所有數據的實驗課程。編寫名爲UseCourse的應用程序 提示用戶輸入信息。如果用戶在以下任何部門中進入課程, 會創建一個LabCourse:BIO,CHM,CIS或PHY。如果用戶進入任何其他部門,請創建一個不包含實驗室費用的CollegeCourse 。然後顯示課程數據。將文件 保存爲CollegeCourse.java,LabCourse.java和UseCourse.java。

回答

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); 
    } 
} 
+0

我想使用if-else方法,所以我可以過濾inputdepartment中的輸入,並在用戶輸入某個部門時提示displayLabCourse。我怎樣才能做到這一點? –

+0

我是否正確地假設並非每個CollegeCourse都有LabCourse?在這種情況下,您如何將所有課程分爲兩組LabCourse和No LabCourse? – cworner1

+0

它將根據用戶在部門中的輸入進行區分。只有當用戶在部門字段中輸入BIO,CHM,CIS或PHY時,纔會使用LabCourse –

1

如果你想使用繼承來做到這一點,那麼你應該在CollegeCourse和LabCourse類中都有類似「displayCourse」的方法名。然後根據用戶的輸入:

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

c.displayCourse(); 
+0

你能解釋一下這個代碼?即時新和我不明白的語法 –

+0

當你有相同的方法,即在超級課程大學課程和LabCourse displayCourse然後調用c.displayCourse使用CollegeCourse或LabCourse的方法取決於你放在c中。我所建議的是用CollegeCourse或LabCourse根據用戶的輸入初始化c。 –

+0

你能用我的代碼展示一個完整的例子嗎?我無法理解你的解釋。對不起 –