4

銀行のローンのデータベースを管理するアプリケーションを Java で開発しています。私はアプリケーション開発の経験があり、ばかげているかもしれない質問がありますが、言語の開発を学んでいて説得力のある答えが得られなかったので、それは私がいつも話していることです.

私のプログラムには、汎用ツールとして使用する多くのクラスとメソッドがあります。たとえば、Excel 書き込み用のクラス、ファイルの読み取り/書き込み用のクラス、さまざまな方法で文字列を操作するクラス、私の既定の形式でダイアログ/メッセージを表示するクラス、特定の数学関数のクラス (数学)など

これらのクラスを実際のものとして想像することはできませんが(クラス/オブジェクトが意図されているように)、ツールボックスとして頭に浮かびます。それが私がそれらを静的にする理由です。そのように私は例えば書く

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++ の Math も同じケースであり、静的でもありませんか? 私は多くの同僚やコーディングの友人と話し合ってきましたが、ほとんどの人はオブジェクトを作成する必要があると言っています。それがオブジェクト指向プログラミングのすべてだからです。

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

私は不思議に思っていました、私はどういうわけかここでひどく間違っていますか? oop とは何かについての意見を詳しく聞きたいです。また、静的クラスの目的についても知りたいです。

ありがとう

4

3 に答える 3

2

静的クラスと関数は、ニュートラルな関数と計算にのみ使用する必要があります。何かの答えを得る必要があるときだけ。

OOP の設計は、文字通り何を行っているか、何を使用しているかを考えると非常に簡単です。たとえば、あなたの場合、Excel ライターである「myExcelWriter」という単語を使用しました。したがって、それが何かである場合、それはオブジェクトです。つまり、インスタンスが必要です。

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

静的クラスは、独立した関数を含むツールであり、入力変数を使用していくつかの計算を行うだけです。(これも のようMathに、2 つの数値を計算するだけです)

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

OOP は実際の言語の IMO にはるかに近いため、この方法でプログラミングする方がより直感的です。

于 2010-12-24T16:40:31.993 に答える
2

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

この場合、オブジェクトは書き込み先の出力ストリームを表すものと考えてください。将来、2 つの出力ストリームを同時に開きたいと思うかもしれませんが、これは「ツールボックス」クラスでは不可能です。

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

于 2010-12-23T10:56:13.923 に答える
1

クラスは、現実世界のものを表す必要はありませんそれらを使用してプログラムが理解しやすくなれば、それは正しいことです。

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

于 2010-12-23T10:48:17.900 に答える