佐々木屋

技術的なことから趣味まで色々書きます

1.C#、VB.NET-5.オブジェクト指向

Facadeパターン

Facadeパターンは現在でもしばしば使われるくらい、結構メジャーなパターンです。Facadeは「玄関」や「窓口」と言われ、その名の通りプログラムの各所から利用される一つのクラスを仲介するパターンです。利用されるクラスが将来変更される可能性がある場合…

静的クラスとシングルトン

インスタンスを複数作成しないで、どのクラスからも同じインスタンスを見に行くといった場合は静的クラスを利用します。VB.NETの場合はモジュールがほぼ同じような役割(全く一緒ではない)です。 public static class StaticClass { public static string U…

デザインパターン

以下に一つでも当てはまる方は、プログラミング設計を少し勉強した方が良いかもしれません。・最初は問題ないが、だんだん読みづらいコードにある ・スパゲティコードになってしまう ・オブジェクト指向の恩恵を生かしきれていない ・コメントが無いとさっぱ…

ポリモーフィズム(インターフェース)

インターフェースでポリモーフィズムを実現します。 インターフェースはクラスの規程のみを定めたものとなる為、抽象クラスと同様にポリモーフィズムを比較的容易に実現することが可能です。継承の時と同じように、何かメッセージを表示する共通メソッドをイ…

抽象クラスと抽象メソッド

クラスを継承した時に仮想メソッドであれば派生先でオーバーライドできることは説明しました。この時、派生先で最初からオーバーライドありきで設計されたメソッドを抽象メソッドと呼びます。抽象メソッドは定義のみを記述し、詳細内容は派生クラスで記述し…

コンストラクタの継承(引数あり)

継承された派生クラスは基底クラスのメソッドを(protected以上であれば)自由に利用することができますが、コンストラクタは通常のメソッドと異なり、サブクラスで暗黙的に利用できるようにはなりません。基底クラスでコンストラクタを定義した場合は、派生…

コンストラクタの継承(引数なし)

クラスの継承をすると基底クラスのフィールドやメソッドは(protected以上であれば)派生クラスからでも自由に利用することができますが、コンストラクタは少し挙動が異なります。引数が無い場合のコンストラクタは派生クラスが呼ばれた時点で自動的に基底ク…

インターフェース

クラスの特定機能を保証(強制)する仕組みをインターフェースと言います。恐らく一番有名なインターフェースといえばIDisposableインターフェースですね。IDisposableはDisposeの実装が約束されますので、クラスを呼ぶ場合にusingステートメントが利用でき…

ポリモーフィズム(継承)

継承を利用したポリモーフィズムの実現です。デリゲートの場合はクラス内でも別クラスでも使えますが、継承は別クラスの場合に有効です。しかもデリゲートに比べると普段のクラス宣言と同じように使用出来ることや特別な記法は不要なので、特にVB.NETな方は…

デリゲートの使いどころ ③(マルチキャストデリゲート)

一つのデリゲートで複数のメソッドを連続で実行することをマルチキャストデリゲートと呼びます。これによってメソッドを任意のタイミングで追加して最後に実行するような処理も簡潔に書くことができます。例えば以下のようなメソッドをデリゲートで呼ぶとし…

シャドウとオーバーライドの違い

VB.NETにはオーバーライドに似たような機能でシャドウがあります。但し、オーバーライドとシャドウは機能としては似ているかもしれませんが、使用される意味としては全くの別物です。初学者は混同しがちなので注意して下さい。読んで字のごとくですが、シャ…

オーバーライドされた基底クラスメソッドを呼び出す

派生クラスで基底クラスメソッドをオーバーライドされた場合、処理は派生クラス側で上書きされてしまいますが、別に基底クラスメソッドが消えるわけではなくちゃんと呼び出すことが可能です。基底クラスのメソッドを呼ぶ場合はbaseキーワード(VB.NETはMyBas…

オーバーライド

よく間違えるNo1のオーバーライドです。「オーバーロード」とよく間違えて使う人がいますが、この二つ全く意味が違いますので混同しないように注意しましょう。オーバーライドはオブジェクト指向の「継承」分野で必要な機能となります。オーバーライドを…

ポリモーフィズム(デリゲート)

デリゲート使用の説明①共通処理の場面で以下のコードを最後に紹介しましたが、実はこのコードには続きがあります。前回紹介したコードは以下の通り。 private delegate void testDlgt(); private void button1_Click(object sender, EventArgs e) { testDlgt…

デリゲートの使いどころ ②(保留)

デリゲートの使いどころとして、前回は共通処理をまとめる話をしました。 今回は2つ目「保留」です。プログラミングを構築していると、長いコードの中でどうしても「クラスの宣言」と「メソッドの実行」を分けて行いたい(タイミングが異なる)場面が結構あ…

継承(フォームの継承)

前回はクラスの継承について説明しましたが、フォームもクラスなわけなので継承可能です。ただ、コードを継承する場合と違い、コントロールを継承する場合は少しひと手間必要です。 継承するフォームの宣言 継承するフォームをコード上に宣言しますが、C#とV…

デリゲートの使いどころ ①(共通処理)

デリゲートは作成するアプリケーションの性質によっては全くお目にかからない(使う必要にならない)機能ですので、イマイチ使いどころが分からないかもしれません。そこで、デリゲートの恩恵が受けられる場面を3回に渡って説明しようと思います。 共通処理…

デリゲート(匿名メソッドとラムダ式の利用)

前回、デリゲートの基本的な使い方であるメソッドを型のような形で保持させ使う話をしました。 デリゲートは他にも匿名メソッドやラムダ式でそのまま使う事が可能です。 匿名メソッドを利用 //デリゲートの宣言 delegate void ShowWriter(string value); //…

デリゲート(基本)

デリゲートを本やサイトを調べると、「委譲」であったり、「代表者」、はたまた「C言語の関数ポインタ」という難しい表現が出てきます。ちょっと分かりにくいですよね。そして大抵、読み進めると何が書いてあるか分からなくなるのがデリゲートです。実はデリ…

継承(クラスの継承)

継承にはクラス、Windowsフォーム、WEBフォームと大きく分けて3種類あります。今回はクラスの継承のお話しです。継承の中でも一番基礎的な部分となります。VB6出身の方だと聞きなれない言葉「継承」ですが、簡単に言えば「コピーを使いまわす」といったとこ…