2016-04-30 12 views
0
  1. 私は、多くの保護されたデータメンバーと、これらのデータメンバーを扱うさまざまなグループの多くのグループを持っています。
  2. これらのクラスをサブクラスで区切り、メソッドの異なるグループが異なるサブクラスになるようにしたいと思います。

1.IJavaのグループごとにクラスの別個のメソッド

class Student { 
    protected String name; 
    protected int courseNumber; 
    protected TreeMap<String, Integer> marks; 
    protected double successRate; 
    protected Pair<String, Integer>[] conferences; //name, place 


    void setName(String name) { this.name = name; } 
    //... setters 
    String getName() { return name; } 
    //... getters 

    //...constructors 

    int getHashCode() { 
     int res = 0; 
     //... 
     return res; 
    } 
    boolean less (Student b) { 
     boolean ls = false; 
     //... 
     return ls; 
    } 
    //... functions to compare objects 

    String lastConferenceName() { 
     return conferences[conferences.length - 1].getKey(); 
    } 
    //... some last data 

    double marksMedium(String[] s) { 
     int res = 0; 
     for (int i = 0; i < s.length; i++) 
      res += marks.get(s[i]); 
     return (double) res/s.length; 
    } 
    //... some medium functions 

    //... some group of functions 

    //... some other groups 
} 

このクラスを持って、私はその

class Student{ 
    protected String name; 
    protected int courseNumber; 
    protected TreeMap<String, Integer> marks; 
    protected double successRate; 
    protected Pair<String, Integer>[] conferences; //name, place 


    void setName(String name) { this.name = name; } 
    //... setters 
    String getName() { return name; } 
    //... getters 

    //...constructors 
} 

class StudentComparator{ 
    int getHashCode() { 
     int res = 0; 
     //... 
     return res; 
    } 
    boolean less (Student b) { 
     boolean ls = false; 
     //... 
     return ls; 
    } 
    //... functions to compare objects 
} 
class LastStudentInfoGetter{ 
    String lastConferenceName() { 
     return conferences[conferences.length - 1].getKey(); 
    } 
    //... some last data 
} 
class StudentMediumGetter{ 
    double marksMedium(String[] s) { 
     int res = 0; 
     for (int i = 0; i < s.length; i++) 
      res += marks.get(s[i]); 
     return (double) res/s.length; 
    } 
    //... some medium functions 
} 
class SomeStudentFunctions{ 
    //... some group of functions 
} 
///... SomeOtherClasses 

これらのクラスは、セッターとゲッター

を使用していない場合、それは良いだろうような何かをしたいです

更新

例えば

、私はこのクラスに

class Handler{ 
    void handle(){ 
     Student s = new Student(); 
     ///////........ 
     System.out.println(s.lastConferenceName()); 
     System.out.println(s.getHashCode()); 
    } 
} 

を持っていると私は、変換後lastConferenceName()とGetHashCodeメソッド()は異なるグループ

をしていることを

注意を仕事にハンドル()(またはそのような何かを)したいです

+0

これらのメソッドを使用してインターフェイスを作成し、「Student」にそれらを実装させることができます。 – markspace

+0

私は学生クラスを小さくしたいです。 Studentクラスのすべてのメソッドを実装したくない場合 – PolyProgrammist

+0

アクセスする場合は、アクセススコープを保護または公開する必要があります。コードを追加します。 –

答えて

0

各サブクラスから次のようにStudentクラスを拡張します。

public class Student { 
    private String name; 
    private int courseNumber; 
    protected TreeMap<String, Integer> marks; 
    private double successRate; 
// protected Pair<String, Integer>[] conferences; // name, place 

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

    // ... setters 
    public String getName() { 
     return name; 
    } 
    // ... getters 

    // ...constructors 
} 

class StudentComparator extends Student{ 
    public int getHashCode() { 
     int res = 0; 
     // ... 
     return res; 
    } 

    public boolean less(Student b) { 
     boolean ls = false; 
     // ... 
     return ls; 
    } 
    // ... functions to compare objects 
} 


class StudentMediumGetter extends Student { 
    double marksMedium(String[] s) { 
     int res = 0; 
     for (int i = 0; i < s.length; i++) 
      res += marks.get(s[i]); 
     return (double) res/s.length; 
    } 
    // ... some medium functions 
} 

class SomeStudentFunctions extends Student { 
    // ... some group of functions 
} 
+0

このようにすれば、他の方法にアクセスすることはできません。 私はすべての生徒の方法が必要です。 – PolyProgrammist

+0

サブクラス化すると、スーパークラスのプライベートメンバーにアクセスすることはできません。だからあなたはそれらを少なくとも保護しなければなりません。 –

+0

こちらをご覧ください。 – PolyProgrammist

関連する問題