4

私は学校で OO プログラミングを学んでおり、今後数か月間、すべての課題にサイコロ ゲームと、ジャンブルやハングマンなどの単語ゲームが含まれます。各割り当てでは、これらの変数の新しいクラスを作成する必要があります。HangmanWordArray、JumbleWordArray など。再利用性のために、割り当てに再利用できるクラス (または一連のクラス) を作成したいと考えています。それがどのように見えるかを視覚化するのに苦労しています.私の質問が理にかなっていることを願っています...

クラスには、アクセサーとミューテーターを備えたプロパティと、さまざまなオブジェクトを返すメソッドが含まれていると仮定しましょう...単語、文字、サイコロ。これらのクラスを編成する方法の経験則はありますか?

クラスごとに 1 つのオブジェクトを保持するのが最善ですか? または、すべてのオブジェクトが「割り当てに必要なもの」として関連付けられているため、すべてのオブジェクトを 1 つのクラスにグループ化します。または、データ型ごとにグループ化して、すべての数値オブジェクトを 1 つのクラスに、すべての文字列を別のクラスに分類しますか?

私は、現実の世界で、プログラマーがクラスまたは一連のクラス内でオブジェクトをグループ化する方法について決定を下す方法と、このタイプの設計シナリオを組み立てるために使用する必要があるいくつかの質問と思考プロセスに取り組んでいると思います。 .

4

2 に答える 2

4

現実的には、プロジェクトごとに異なります。何かをグループ化するための保証された「正しい方法」はありません。それはすべてあなたのニーズに依存します。つまり、古いコードをどれだけ簡単に読み取って更新できるかということです。すべてのゲームを 1 つの「ゲーム」クラスに含めることができれば、それを行っても問題はありません。ただし、ゲームが非常に複雑で多くのサブルーチンと変数がある場合は、それらをすべて独自のクラスに移動する方が管理しやすいでしょう。

そうは言っても、アイテムを論理的にグループ化する方法はあります。たとえば、操作 (char から文字列へ、文字列から int へ、html エンコード/デコードなど) に使用されるソロ関数が多数ある場合、それらすべてを保持する「ヘルパー関数」クラスを作成することができます。同様に、アプリケーションがデータベース接続を使用する場合、共有接続を保持および管理するためのクラスを作成し、クエリ結果を取得して非クエリを実行するためのメソッドを持つことができます。

物事を細かく分解しようとする人もいます。たとえば、上記のデータベース コアの代わりに、データベース接続を作成および管理するための 1 つのクラスを作成する場合があります。別のクラスを作成してから、接続クラスを使用してクエリを処理します。この方法がうまくいかないわけではありませんが、項目が小さすぎると管理が非常に難しくなる可能性があります。

自分が何をしているのかを正確に知らなければ、それを行う方法を伝える方法はありません。各プロジェクトで同じメソッドを再利用する場合、それらを共有できる場所に配置できる可能性があります。何が最も効果的かを理解するために私が見つけた最良の方法は、それを試して、それがどのように反応するかを確認することです!

于 2013-09-04T12:27:48.753 に答える