本の管理をするアプリを作っている時にまた疑問が出てきました。
public class Book
{
public string Title { get; set; }
public string ISBN { get; set; }
public Money Money { get; set; }
public int Rate { get; set; }
public DateTime BuyDate { get; set; }
}
本の管理にレートをつけられるようにしようと思っています。
iTunesの★マークのようなものにしたいので1~5の固定です。
つけていないものもあるので0も存在します。
ここでレートを付けている本を、それぞれのレート別にグループに分けたいと思いました。
そこでレート1~レート5までのグループをどのように管理するのがベストというか、どのように考えればいいのでしょうか。
私が考えたのは、グループ別に処理が分かれるのでクラスを作った方がいいと考えたのです。
とりあえず同じ処理もいくつか発生するので
public abstract class AbstractRate
{
public int Value { get; set; }
private static BookCollection _bookCollection; //全ての本が入る
public BookCollection BookCollection { get { return _bookCollection; } }
}
みたいな基底クラスを作り
public class Star1 :AbstractRate
{
private BookCollection _books;
}
から Star5までの似たようなクラスを作り、それぞれのレートのBookコレクションを持たせる形です。
ただこれだと同じようなクラスが増えるだけでものすごく冗長だと思うのです
そこでもう一つ思ったのは
public class GroupClass
{
public string GroupName { get; set; }
public BookCollection BookCollection { get; set; }
}
という形でグループ名と本のリストを入れておく形です。
これだとクラスは分かりやすくていいのですが、毎回処理をさせる際にこの名前のグループならこれみたいな処理が必要になる気がして悩んでいます。
実際どのように考えるのがいいのでしょうか?
直接的な回答でなくてもいいのですが、考える材料が欲しいです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
AllBooks=全ての本の情報
みたいにして、
http://dobon.net/vb/dotnet/programing/arrayfilte …
にあるような方法で、必要に応じて
Star5 = Allbooks.フィルタ(Rate-5を検索)
のように抽出して
foreach(book in Star5 ){
星5の処理;
}
と該当したものだけ処理をする。
というのが素直でいいと思います。
別解。
データはデータベースに保存する。
必要なときに、必要なものだけを抽出したり更新したりする。
お礼が遅くなって申し訳ないです。
ifで回さなくても個別に抽出して回せば確かに自然ですね!
データベースはまだこれからなので、とりあえず前者の方法でやってみて、のちにデータベースでも試してみたいと思います。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java リレーションエンティティクラスとは何ですか? 2 2023/02/10 00:02
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でのWNetAddConnection3の使...
-
C# visibleプロパティをfalseに...
-
C#で、あるクラスのメンバーす...
-
C# 矢印キーの取得
-
Processingでマウスクリックで...
-
大量のデータを読み込んで表示...
-
Graphics gra = this.getGraphi...
-
正規表現
-
Junitテストでvoid戻り値メッソ...
-
javaの基本的な質問
-
決められて時間が経過するとア...
-
ウインドウアプリケーション
-
getConnection( )メソッドの戻り値
-
プログラミング(Java)じゃん...
-
ボタンの複数割り当てについて
-
コンボボックスを使う時の警告
-
C#でのDLLのメソッドの作り方
-
JavaFXでの表内のチェックボッ...
-
C#のインクリメント演算子のオ...
-
javaを用いて,a列,b列の空白...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C# 矢印キーの取得
-
Thread.sleepのInterruptedExce...
-
unityでのC++エラーの原因がわ...
-
C#で別のFormへ複数の値を返そ...
-
C# visibleプロパティをfalseに...
-
エンターキーを押すとOKボタン...
-
Processingでマウスクリックで...
-
C#でキーイベントが発生しない...
-
[C#.net]スレッド化された別フ...
-
C# DataGridView列カスタマイズ
-
【C#】ソースコードをファイル...
-
LVM_SETITEMSTATEでListViewの...
-
GetDIBits関数の使い方について
-
未割り当てのローカル変数
-
C# MouseHoverを何度も呼ぶには
おすすめ情報