2

これは誰もが尋ねることができる最もばかげた質問だと思いますが、私はこのトピックに頭を悩ませているようには見えません。クラスはオブジェクトの作成に使用されることを理解していますが(インスタンス化するとき)、私を混乱させるのは、「プログラムでクラスを作成できるかどうかはいつわかりますか?」です。

仮に、ユーザーからの入力(名前、番号、その他の詳細)を収集するプログラムを作成し、それらの詳細を使用して計算を行い、すべてをローカルに保存するとします。その基本ですが、プログラムをよりスムーズ/高速またはより保守しやすくするためにクラスを使用する必要がありますか?

私は自分自身を混乱させていますか?

編集:私は主にVisualStudioやNetBeansIDEなどのプログラムを使用しています。

4

6 に答える 6

2

あなたが言うように、クラスは、プロパティメソッドとイベントを持つ型を記述することができる構造です。

単純な状況では、クラスを使用しなくても簡単に回避できますが、より大規模で複雑なプロジェクトでは、適切に考え抜かれたオブジェクト モデルを使用すると、作業がはるかに簡単になります。保守、拡張、再利用、読み取りが容易になります。

その時点でより多くの作業のように感じるかもしれません (ほとんどの場合、おそらくそうです) が、サポートが必要なものを作成しているのであれば、決して無駄な作業ではありません。

于 2012-08-21T23:37:54.473 に答える
1

Java では選択の余地がありません。クラスの外にあるコードを書くことはできません。

クラスはインスタンスのテンプレートです。状態と動作を 1 つのソフトウェア コンポーネントにカプセル化します。目標を達成するために相互作用するクラスのインスタンスを作成することによって、プログラムを作成します。

プログラムをよりスムーズ/高速にする、またはより保守しやすくするために、クラスを使用する必要がありますか?

C# について話すことはできませんが、Java では選択肢がありません。メインクラスですべてを行う単一のクラスを作成するか、問題のさまざまな部分 (I/O、計算、永続性など) を処理するいくつかのクラスに分割します。1 つ以上のクラスが必要です。 .

クラスを作成し、それらからオブジェクトを作成するのは、それらが解決したい種類の問題にうまく対応するためです。それらは、世界の物理的なもの (例: Person、Car、Bank など) をモデル化する実際のオブジェクトか、アイデアの具体化 (例: PersonFactory、Account など) のいずれかです。オブジェクトは問題をモデル化するため、オブジェクト指向コードを作成することを選択します。うまく解決したい。

一部の問題は、関数型プログラミングに役立ちます。問題を解決するプログラムを作成する方法は複数あります。

于 2012-08-21T23:42:27.340 に答える
0

クラスは主に私たち人間がコードを整理するのを助けるためのものです。それらは、必ずしもコンピューター上でソフトウェアの実行を高速化するわけではありません。クラスについて初めて学んだとき、「実世界の」オブジェクトをモデル化すると役立つことがわかりました。たとえば、幾何学的形状の面積と周長を計算するプログラムを書きたい場合、Shape計算を行う抽象メソッドを定義する単純なクラスを作成します。Circle次に、このクラスを拡張して、Square、 、 などのさまざまな種類の形状を作成しますTriangle。クラスの単純なアプリケーションから始めて、プログラミングの経験を積むことで、クラスを使用する他の場所を徐々に見ることができるようになりました。

于 2012-08-21T23:43:13.643 に答える
0

これは、C#の学習/理解に役立つ非常にシンプルで理解しやすいチュートリアルです。特に、クラスは構造体も参照します

C# クラスのチュートリアル

于 2012-08-21T23:35:26.183 に答える
0

1. プログラムでクラスを作成できるかどうかはいつわかりますか?

この質問に答えたほぼすべての人が少し異なる反応を示すと思いますが、通常はクラスを使用してプログラムの機能をモジュール化する必要があります。あなたの例では、プログラムはユーザーから入力を受け取り、入力を使用して計算を実行し、ユーザーデータと計算結果をどこかに保持する可能性があると述べました。次の 3 つのクラスを使用できます。

UserInput- キーボード入力を処理し、処理しやすい形式に変換します

Calculator- 変換後にすべての入力を処理します

DataPersistence- ディスク、データベース、または必要なものからの読み取り/書き込みを処理します。

このようにして、すべてのコードが大規模な Java/C# main() 呼び出し内に積み上げられるだけでなく、互いに独立して小さな部分に集中できます。これらのコンポーネント間の相互作用が、プログラムの動作を決定します。

2.基本的なことですが、プログラムをよりスムーズ/高速にする、またはより保守しやすくするためにクラスを使用する必要がありますか?

クラスは、Java や C# などの言語でオブジェクトがどのように参照されるかにより、実際にはプログラムにオーバーヘッドを追加することになりますが、プログラムが 1 つの巨大な関数内に記述されている場合よりも、コードの読み取りと変更がはるかに簡単になります。これは、数学の教科書を章に分割することに似ています。代数、微積分、および微分方程式がすべてテキスト ブックの 1 つの章に凝縮されている場合、このテキスト ブックは、微積分の部分にスキップしたい人にはあまり役に立ちません。章見出しを追加するオーバーヘッドは、著者/読者が本の特定の部分に集中できるため、無視できます。

同様に、クラスは作業を分割するのに役立ち、後で保守しやすくなります。速度/パフォーマンスは、通常、プログラムをクラスに分割する方法によって影響を受けません。これは、オブジェクト指向設計の真の芸術性が明らかになる場所です:)

于 2012-08-21T23:44:32.103 に答える
0

あなたの例のような単純なプログラムでは、ユーザーからの入力 (名前、番号、コメント) を収集するために、新しいクラスを作成せずに簡単にこれを行うことができます。内部の主な機能。C のような非オブジェクト指向言語を使用した場合は、クラスなしで簡単に実行できます。

実際、あなたが説明するような単純なクラスの場合、クラスを作成する必要があるのは少し余分な作業のように思えるかもしれません (おそらく無視できます)。ただし、それは小さなデータ セットを参照しているからにすぎません。

クラスの作成が役立つのは、多くのデータがある場合です。このクラスは、そのデータをグループ化し、場合によっては 1 つとしてローカルに保存する方法として機能します。クラスメンバーに直接関連する他の関連メソッドを各クラスに追加することもできます。

アプリがより複雑になると、たとえば、顧客、製品、請求情報 (クレジット カード、PayPal など)、住所 (発送先、および請求) を追跡する必要がある場合、クラスは各ビットを保持する上で非常に重要になります。情報をまとめて、それらのより大きな情報の「束」(クラス)のそれぞれを互いに関連付けます。

請求先と配送先住所を持つ注文を持っている顧客がいる可能性があります。これらの各クラスには、それ自体に多くのフィールドがあります。ただし、クラスを使用すると、顧客のより大きな概念をターゲットの配送先住所に簡単に関連付けることができます。

「プログラムでクラスを作成することが実行可能かどうかはいつわかりますか?」に関しては、答えは必ずしも簡単ではありませんが、データフィールドが自然に収まる場合はいつでも (住所や製品のように)説明または請求情報)。もっと具体的な答えがあればいいのですが、実際には、何を構築しているか、どのようなタイプのデータを扱っているかによって異なります。

いいえ、それは誰もが尋ねることができる最もばかげた質問ではありません! これがあなたの理解に役立つことを願っています。

于 2012-08-21T23:46:14.277 に答える