2017-04-03 15 views
0

私はJavaを初めて使用しています。このプログラムの実行をどのように追跡できますか?このプログラムは継承を正しく伝えるのか、それとも継承のない通常のカプセル化を伝えるだけですか?トレースの実行と継承java

私は本当にこれらのクラスで継承を伝えているのかどうか疑問に思っています。あなたの反応は非常に高く評価されています。

これはファーストクラス、TestMembers

public class TestMembers { 

    public static void main (String args []){ 

     Members Ailee=new Members("Ailee","52213116028","BRS",2,1.6,45); 
     Members Amy=new Members("Amy","52213116032","BDR",2,1.63,57); 
     Members Jack=new Members("Jack","52213116201","BRE",2,1.75,82); 

     String[] member = { "Ailee","Amy", "Jack"}; 
     JFrame frame = new JFrame(); 
     String teammembers = (String) JOptionPane.showInputDialog(frame, "Team 
     Members","Team members", 
     JOptionPane.QUESTION_MESSAGE,null,member, member[0]); 

     if (teammembers==member[0]){ 
      JOptionPane.showMessageDialog(null,Ailee,"Member Profile", 
      JOptionPane.INFORMATION_MESSAGE); 
     } else if (teammembers==member[1]){ 
      JOptionPane.showMessageDialog(null,Amy,"Member Profile", 
      JOptionPane.INFORMATION_MESSAGE); 
     } else if (teammembers==member[2]){ 
      JOptionPane.showMessageDialog(null,Jack,"Member Profile", 
      JOptionPane.INFORMATION_MESSAGE); 
     } 
     System.exit(0); 
    } 
} 

これは他のクラス、Person

public class Person { 

    private String name; 
    private double height; 
    private double weight; 

    public void setPersonname(String name){ 
     this.name=name; 
    } 

    public String getPersonname(){ 
     return name; 
    } 

    public void setPersonHeight(double height){ 
     this.height=height; 
    } 

    public double getPersonHeight(){ 
     return height; 
    } 

    public void setPersonWeight(double weight){ 
     this.weight=weight; 
    } 

    public double getPersonWeight(){ 
     return weight; 
    } 
} 

これは第三のクラス、Student

public class Student extends Person{ 

    private String id_number; 
    private String course; 
    private int semester; 

    public void setStudentIdNumber(String id_number){ 
     this.id_number=id_number; 
    } 

    public String getStudentIdNumber(){ 
     return id_number; 
    } 

    public void setStudentCourse(String course){ 
     this.course=course; 
    } 

    public String getStudentCourse(){ 
     return course; 
    } 

    public void setStudentSemester(int semester){ 
     this.semester=semester; 
    } 

    public int getStudentSemester(){ 
     return semester; 
    } 
} 

この第4クラスはMembers

public class Members extends Student{ 

    private double bmi; 
    private String bmistatus; 

    public Members(String name,String id_number, String course, int semester, 
     double height, double weight){ 
     setPersonname(name); 
     setStudentIdNumber(id_number); 
     setStudentCourse(course); 
     setStudentSemester(semester); 
     setPersonHeight(height); 
     setPersonWeight(weight); 
    } 

    public double getMemberBMI(){ 
     bmi= getPersonWeight()/(getPersonHeight()*getPersonHeight()); 
     DecimalFormat twoDForm = new DecimalFormat("#.00"); 
     return Double.valueOf(twoDForm.format(bmi)); 
    } 

    public String BMIstatus(){ 
     if (bmi>= 18.5 & bmi <= 25.0){ 
      return bmistatus= "Optimal weight"; 
     } else if (bmi<18.5){ 
      return bmistatus="Underweight"; 
     } else if (bmi>25.0){ 
      return bmistatus="Overweight"; 
     } 
     return bmistatus; 
    } 

    public String toString() { 
     return "Name: " + getPersonname() + "\nID: " + getStudentIdNumber() 
     +"\nCourse: 
     " + getStudentCourse()+ 
     "\nSem: " + getStudentSemester()+"\nHeight: "+getPersonHeight()+" metre"+ 
     "\nWeight: "+getPersonWeight()+" kg"+"\nBMI:"+getMemberBMI()+"\nBMI   status 
     :"+BMIstatus(); 
    } 
} 
+0

クラス内およびクラス間の書式の追加 –

答えて

0

私は、継承が構文上正しいと思います。設計の観点からは、より広い文脈に依存する。

ソフトウェア設計に関しては、それを簡単に学習する方法はありません。 Clean Code,RefactoringまたはDesign Patterns(この順番で)の本を読むことをお勧めします。彼らはあなたに多くの基本ルールを教えます。しかし、あなたの仕事から学ぶ必要があるので、これらのルールを適用する方法を学ぶことができます。

トレースについて、あなたは例えば、Logger、または単にSystem.outのいずれかを使用することができます。:

private static final Logger logger = Logger.getInstance(TestMembers.class); 
... 
if (teammembers==member[0]) { 
    logger.debug("first member"); 
} 
... 

また、私は、末尾のSystem.exit(0)を削除することをお勧め。これを行う他の方法があります。