クラスの抽象化レベルはどこまで?
クラスはどこまで抽象化すればよいのか?
現在、グラフのフィルター機能をクラスで作成しているのですが、
当方クラスを使ったことのない初心者であるため、
どこまでクラスで抽象化したらよいのかわかっておりません。
皆様のご意見を伺えたら幸いです。
テキストベースですが以下が現在考えているオブジェクトイメージとなります。
作成オブジェクトイメージ
業務時間フィルターオブジェクト
プロパティ
期間開始日
期間終了日
分割セグメント配列
メソッド
各セグメントの業務時間を分割セグメントへ代入する。
分割セグメント配列の中の時間を業務区分毎に分ける。
分割セグメント配列をグラフに表示する
月別業務時間フィルターオブジェクト
プロパティ
期間開始月
期間終了月
分割セグメント配列
メソッド
各セグメントの業務時間を分割セグメントへ代入する。
分割セグメント配列の中の時間を業務区分毎に分ける。
分割セグメント配列をグラフに表示する
年別業務時間フィルターオブジェクト
プロパティ
期間開始年
期間終了年
分割セグメント配列
メソッド
各セグメントの業務時間を分割セグメントへ代入する。
分割セグメント配列の中の時間を業務区分毎に分ける。
分割セグメント配列をグラフに表示する
残業時間オブジェクト
日別残業時間更新オブジェクト
プロパティ
期間開始日
期間終了日
分割セグメント配列
メソッド
各セグメントの残業時間を分割セグメントへ代入する。
セグメント毎の残業間を集計する
分割セグメント配列をグラフに表示する
月別残業時間更新オブジェクト
プロパティ
期間開始月
期間終了月
分割セグメント配列
メソッド
各セグメントの残業時間を分割セグメントへ代入する。
セグメント毎の残業間を集計する
分割セグメント配列をグラフに表示する
年別残業時間更新オブジェクト
プロパティ
期間開始年
期間終了年
分割セグメント配列
メソッド
各セグメントの残業時間を分割セグメントへ代入する。 セグメント毎の残業間を集計する
分割セグメント配列をグラフに表示する
これを抽象化してクラスにしてみたのが以下です。
クラス化(ver1)
グラフフィルタークラス
プロパティ
フィルタースタートポイント
フィルターエンドポイント
分割セグメント配列
分割単位
メソッド
各セグメントの業務時間を分割セグメントへ代入する。
分割セグメント配列の中の時間を業務区分毎に分ける。
各セグメントの残業時間を分割セグメントへ代入する。
分割セグメント配列の中の内容をグラフに表示する
クラス化できましたが、業務時間と残業時間が同一クラスにあると
可読性が悪いかな?と思いもう一段抽象化しました。
クラス化(ver2)
フィルタークラス
プロパティ
フィルタースタートポイント
フィルターエンドポイント
分割セグメント配列
分割単位
メソッド
分割セグメント配列の中の内容をグラフに表示する
業務時間フィルタークラス(フィルタークラスを継承)
プロパティ
メソッド
各セグメントの業務時間を分割セグメントへ代入する。
分割セグメント配列の中の時間を業務区分毎に分ける。
残業時間フィルタークラス(フィルタークラスを継承)
プロパティ
メソッド
各セグメントの残業時間を分割セグメントへ代入する。
いかがでしょうか?
経験が浅くどれが正解なのかわからないため、有識者の方々のご意見を伺えたらと思います。
質問内容詳細
①ver1の段階のクラスでも問題ないか?問題ないとしたらなぜ問題ないのか?
②ver2の段階のクラス分けで問題ないか?問題があるとしたらどのような点か?
③他にどのようなクラス分けがあるか?またはクラス化において不足している部分
以上、恐れ入りますがご教授のほどよろしくお願いいたします。