2012-01-30 11 views
1

私はクラスやものに慣れていないので、私はここでいくつかの簡単な助けを求めています。私はたくさん使うデータベース関数をたくさん持っていますので、これはデータベースからデータを必要とする他のクラスから呼び出すことができるクラスになります。例えば使用するクラスのタイプ

私は編集者のウィンドウで同じコードを持っていると私はそれらの両方のために同じコードを繰り返しています、人のリストを出力ウィンドウを持っています。

私はどんなクラスを使用しますか?私は非常に混乱しています。静的クラスとして実装しましたが、正しく動作しているかどうかはわかりませんでした。

誰かが私が大変感謝しているクラスについての簡単な入門書を与えることができれば。

おかげ

+5

「どのようにOOプログラミングを行うか」は、SOの質問には適切な範囲です。 (それは、Cliff's Notesの要約で十分に説明されているものです) – millimoose

+4

確かに何年ありますか? – Oded

答えて

1

静的なクラスは、基本的にはドレスアップされたグローバル変数です。静的クラスのインスタンスは作成しません。すべてのメソッドは静的でなければならず、どのデータにも保持されている場合、データフィールドは静的でなければなりません。これは、このクラスを使用するすべてのコードが同じデータを使用することを意味します。

ログインとセッションのようなdbアクセスの痛みポイントを集中することを目的としているのであれば、静的なクラスが適切かもしれません。異なるクライアントからの呼び出しには、静的クラスと同じ詳細が表示されます。

非静的なクラスまたはインスタンスは、各インスタンスに異なるデータを格納するものです。何かをする前に、クラスのオブジェクトインスタンスを作成する必要があります。オブジェクトを作成する利点は、独自のインスタンスを構築する各コンシューマが、そのクラスの他のコンシューマから分離されることです。ウィンドウAがdbクラスのインスタンスを構築してabc操作を実行し、ウィンドウBがdbクラスのインスタンスを構築して操作を実行した場合、xyz、abc、xyzはパスを渡りません - それらの間でデータを共有しません。一般に

静的クラスの共有の性質は、消費者が認識しないかもしれないことはデータ依存性および副作用を作成するため、オブジェクトのインスタンスは、通常、グローバル/静的クラスよりも好ましいです。

0

あなたはメソッドに繰り返しコードを配置し、複数のメソッドからメソッドを呼び出すことができthis-

 public class DBOperator 
    { 
     //Only static methods, so no public constructor 
     private DBOperator() 
     { 
     } 

     // static constructor   
     static DBOperator() 
     { 
      // do initialization stuff 
     } 

     // have static functions to operate on your database 
     public static int ExecuteNonQuery(string storedProc, params object[]   parameters) 
     {} 
    } 
0

のようなクラスを作成することができます。 DBクラスに関しては

は、クラス内のすべてのあなたのDBのコードを入れることができます - それのインスタンスを作成し、他のクラスの中からそれを呼び出します。

しかし、DBクラスは、そこに関連するすべてのDBを "突きつけ"始めるだけで、面倒な結果に終わる可能性があります。

OOを読み、プログラムを効率的に設計する方法を調べてください。

関連する問題