オブジェクト指向を意識したことがないのでオブジェクト指向の設計をしようと学習していますが、なんだかよくわからなくなってきました。
例えば一月分の予定を入力するカレンダーのようなプログラムを作る場合、
一ヶ月分のカレンダーに、日付ごとの入力フォームをつくり、入力された内容をDBに保持するプログラムとします。
DBのレコードは1日ひとつ、項目には1日単位の年月日、イベント名、起床時間、持ち物、予算などがあり今後も増える可能性があるとします。
このケースでは入力画面からDBに書き込むSQL文を発行するまでに、日付単位で管理するべき情報をもったオブジェクトが毎月30個ほど作られることになりますよね?
となるとそれらのオブジェクトを生成するために引数として入力画面から5つのデータを渡すことになると思います。
引数5つでもプログラムとして多すぎる気がしますし、今後も増えていくとしたらただ羅列するのは可読性が悪いので他の方法を取るべきだと思います。
でもセッターでフィールドに逐一値を入れていくのも不自然で無駄が多い気がしますし、
配列などに入れてデータを渡すのはオブジェクト指向らしくない気がして、どうすればいいのかわからなくなってきました。
この例は素人が適当に作ったので根本的に考え方がおかしいところもあるかもしれませんが、
オブジェクトが管理するべき引数が多くなることってありますよね?
そういったときはどう対処すればいいのでしょうか。
また、DBからデータを読み込んで表示するときには、この日付ごとのデータを保持したオブジェクトから画面描画オブジェクトにインスタンス変数を渡すことになると思うのですが、
この場合にはフィールドをpublicにして直接参照するか、全ての変数にgetterを設定して逐一渡していくか、配列などに入れてまとめて渡す方法しか浮かびません。
フィールドがpublicなのは良くないと聞きますし、getterを使うべきではないという意見も見ます。
配列は求めているデータがどこに格納されているのか識別できず、配列を作ったクラスを閲覧しなければいけないのでカプセル化に失敗している気がします。
何かいいやり方はないのでしょうか。
回答5件
あなたの回答
tips
プレビュー