0

クラスを設計する良い方法は何ですか?簡単なチャットプログラムを作成しようとしています。画面内のオブジェクトが使用するすべてのものをカプセル化する必要があります。いくつかのクラス、ロギングクラス、メッセージパイルクラス(送受信されたメッセージを保持するため)、テキストボックスクラス、およびボタンクラスを作成しました。メッセージパイル、テキストボックス、およびボタンで同じ文字列変数を共有する必要がありますが、クラス内にカプセル化する必要があります。

Baseクラスを作成してみました。これは、テキストボックスとボタンクラスに共通するすべてのデータと機能を保持します。これらの3つのクラスは、Baseから派生して、その共有変数を使用します。私がこれをしたときだけ、変数は共有されませんでした。これを行う方法はありますか?グローバル変数のようなものですか?独自のクラスとその派生クラス内でのみですか?2つの派生クラスの両方のオブジェクトは、Baseクラスオブジェクトの変数にアクセスできる必要があります。

4

1 に答える 1

1

クラスとオブジェクトを混同しています。いくつかのメンバー変数を持つ基本クラスがある場合、すべての派生クラスは(潜在的に)基本クラスのメンバー変数にアクセスできます。

ただし、異なる派生クラスまたはそれらの1つを複数回インスタンス化する場合、各オブジェクトには、基本クラスからのものを含む、完全に独立したメンバー変数のセットがあります。これは、まさにオブジェクトであるためです。

オブジェクトの特定のグループで同じ「共有」変数を使用する場合は、これらの共有物を専用の「共有」クラスに固定できます。次に、これらの「変数」を共有する必要があるオブジェクトのグループごとに、この「共有」クラスのインスタンスを作成し、それをグループ内のすべてのオブジェクトに渡します。

これは、「静的」クラスメンバー、または使用している言語で呼び出されるものをいじるよりも柔軟性があります。これは、複数の「共有」オブジェクトを持ち、どれを正確に決定するかによって、オブジェクトのこれらの「グループ」を複数持つことができるためです。 「実際の」オブジェクトは、同じ「共有」データ/変数を共有します。

何が起こっているのかを詳しく知らなければ、クラスとオブジェクトの階層を設計する方法についてこれ以上の推奨事項を提示することは困難です。

于 2012-09-23T20:53:30.860 に答える