2016-11-18 7 views
-2

私は以下のピクチャに示すようにサンプル時間表のデータを持っています。クラスとオブジェクトをJavaでモデル化したいと思います。クラスとオブジェクトで以下の時間表データを表現する方法

Sample data table

私のようなものでした:私は、データベースから類似のデータを取得し、配列アダプタにそれを送りたい

public class TimeTable(){ 
    private String day; 
    private String week1, week2, wee3, week4, week5; 

    public TimeTable(String day, String week1, String week2, String week3, String week4, String week5){ 

    this.day = day; 
    this.week1 = week1; 
    this.wee2 = week2; 
    this.week3 = week3; 
    this.week4 = week4; 
    this.week5 = week5; 
    } 
} 

を。 私はそれを見て、物事が乱雑に見えるようになります。私がこれを表現できる良い方法はありますか?

+1

「見た目が邪魔になる」とはどう思いますか?これはかなりシンプルなクラスのようですが、何が問題なのですか? – David

+0

@David私はコンストラクタがあまりにも多くのパラメータを取っていると思っていた。しかし、週の列は固定されています。つまり、変更されないので、5週間すべてを表すのに1週間の列を使用する方法を理解することはできません。 –

+0

私はこのデータが表すはずのものがわからないので、それをモデル化する他の方法を示唆することはできません。しかし、コンストラクタが6つのパラメータを必要とする場合、6つのパラメータが必要です。代わりに使用する単一の "パラメータオブジェクト"を作成することもできますが、そのオブジェクトのコンストラクタには6つのパラメータが必要になるため、この限られたシナリオでは何も得られません。 – David

答えて

0

私は、日付ベースの管理を使用することをお勧めします。このような構造:あなたは、5週間、または特定労働者に接着されていない、あなたは異なる方法でデータを表示し、分析することができます。このように

public enum Person { 
    JONH, IBRAHIM, IVAN, OTHER 
} 

public enum TimeRange { 
    A, M, EM, O, OTHER 
} 

public class TimeTableEntry { 

    protected Person person; 
    protected Date date; 
    protected TimeRange timeRange; 

    public TimeTableEntry(Person person, Date date, TimeRange timeRange) { 
     this.person = person; 
     this.date = date; 
     this.timeRange = timeRange; 
    } 
} 

労働者が頻繁に変更される場合は、一般的なコメントでDavidが提案したPersonIDと考えることができます。