質問

銀行のローンのデータベースを管理するJavaでアプリケーションを開発しています。アプリケーションの開発にはいくつかの範囲があり、馬鹿げているかもしれない質問がありますが、それは言語の開発を学んでいて、コンビニックの答えを得ていないので、私がいつも話していることです。

私のプログラムには、一般的なツールとして使用している多くのクラスと方法があります。たとえば、Excel Writingのクラス、ファイルリーディング/ライティングのクラス、さまざまな方法で文字列を操作するクラス、私のデフォルト形式でダイアログ/メッセージを表示するクラス、特定の数学関数のクラス(数学)など

これらのクラスは本物だとは想像できません (クラス/オブジェクトは意図されています)が、ツールボックスとして私の頭に浮かぶ。だから私はそれらを静的にします。そのようにして、私はたとえば書いています

excelWriter.create("C:\temp.xls");
excelWriter.append("mydata1\tmydata2\nmydata3\tmydata4");
excelWriter.close();

それよりも

ExcelWriter myExcelWriter;
myExcelWriter.create("C:\temp.xls");
myExcelWriter.append("mydata1\tmydata2\nmydata3\tmydata4");
myExcelWriter.close();

これは、私のために常にそこにあるもののようなツールボックスを考えているという理由で私にもっと適しています。 C ++の数学は同じケースでも静的でもありませんか?私はそれを多くの同僚やコーディングフレンドと話し合ってきましたが、彼らのほとんどは、それがオブジェクト指向のプログラミングのすべてだから、オブジェクトを作成しなければならないと言っています。

私は彼らが別の文脈で言ったことを理解しています:私の暇なとき、私はVB.NETを使用してカードゲームを開発しています。そこには、ゲーム、プレーヤー、デッキ、ハンドのクラスがありました。多くのゲーム、プレイヤー、デッキ、ハンドがあるので、私がすべてのクラスの多くを作成したオブジェクト。そして、彼らは本物として想像することができます。ゲームを開発している場合、特に非常に異なります。 ゲームの開発は、本物が含まれているため、はるかにオブジェクト指向です.

私は疑問に思っていました、私はどういうわけかここでひどく間違っていますか? OOPとは何かについて、徹底的なものについて話したいと思います。また、静的クラスの目的を聞きたいと思います。

ありがとう

役に立ちましたか?

解決

いいえ、この場合、少なくとも私の意見では、静的メンバー関数のみを含むクラスは正しいことではありません。 2番目のExcelWriterクラスの方が良いでしょう。とにかく、Excel出力のファイルハンドルをどこに保存していますか?静的変数ではありません、私は願っていますか?これは、このクラスのデータメンバーの主要な候補者です。

この場合、あなたが書いている出力ストリームを表していると考えるようにしてください。将来的には、2つの出力ストリームを同時に開くことをお勧めしますが、これは「ツールボックス」クラスでは不可能です。

静的メンバー関数のみを含むクラスは、関連する関数をグループ化する方法として役立つ場合がありますが、これはまれであり、多くの場合、クラスをデータを含むオブジェクトを中心に再設計できることを意味します。静的メンバー関数は、たとえばクラスのさまざまなコンストラクターを持つ方法として役立ちます。

他のヒント

静的クラスと関数は、中立関数と計算にのみ使用する必要があります。何かに対する答えを得る必要がある場合にのみ。

OOPのデザインは、自分が何をしているのかを考えて文字通り使用しているときに非常に簡単です。たとえば、場合には、Excelライターである「myexcelwriter」という言葉を使用しました。だから、それが何かであるならば、それはオブジェクトです。つまり、インスタンスが必要です。

あなたがしていることを常に説明してください。あなたがしていることが名詞で説明できるなら、それはオブジェクトです。それが形容詞の場合、それは属性またはクラスのメンバーです。それが動詞の場合、それは方法です。それが副詞の場合、それは属性または関数に渡される変数です。

静的クラスは、独立した関数を含むツールであり、入力変数を使用していくつかの計算を行うだけです。 (繰り返しますが Math, 、それは2つの数字を計算するだけです)

クラスの静的関数は、機能するためにインスタンスの状態を必要としないクラスのオブジェクトで使用されるツールです。 (好き Int.Parse())

OOPは本物の言語IMOにはるかに近いため、このようにプログラムする方が直感的です。

クラスはしません 持ってる 現実の世界を表すために。それらを使用すると、プログラムが理解しやすくなる場合、あなたはそれを正しくやっています。

とはいえ、クラスにはデータとメソッドの両方が必要です。あなたのExcelとファイルのクラスは私には良いように見えますが、メソッドとデータのみを持っていないクラスには注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top