C# Adapter

 

C# Iterator

UML クラス図基礎

public : +
protected : #
private : -

abstract : 斜体
static : アンダーバー

●汎化(継承) is-a関係
―▷

●実現(implements)
– – -▷

●関連(単純)

お互い相手の方のインスタンス変数を持つ。

●関連(誘導可能性)
A ―> B (Aの中にBを持つ)

●依存
A – – -> B
依存の場合メンバ変数に持つのではなく一時的なスコープの中で持つ。

●集約
A -◇ B
Bの中に複数のAを持つ。

●コンポジション
A -◆ B

C# Singleton

C# FactoryMethod

C# TemplateMethod

C# オブジェクト指向 基礎知識

ポリモーフィズム

アップキャストは問題ない。ダウンキャストは明示キャストが必要。

ダウンキャストの変換はキャスト元の変数が保持しているインスタンスがキャスト先のクラスと同じの必要がある。通常、アップキャストして戻すときにダウンキャストが発生する。

virtual-overrideがなくても基底クラスでの定義されたメソッドは派生クラスで上書(隠蔽)きできる。ただコンパイラが警告は出す。その状態だと変数の型で呼び出されるメソッドが決まる。virtualだけ付けてoverrideを付けないと同じく変数の型で呼び出す。virtual-overrideがついてインスタンスの型で呼び出す。派生クラスでoverrideだけ付けてvirtualがないとコンパイルエラーになる。

virtual-overrideされるとインスタンスの型で呼ばれるメソッドが決まる。

メソッドのシグネチャ

メソッド名、パラメータの数、順序、型
CLRでは戻り値の型をシグネチャに含めているのでC#/VBとは違う。