C# Iterator

C# Beep(Win32API)

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# VBA 積算・原価管理

Form1.cs

Form2.cs

Form3.cs

取り出しはVBAにて

即席登録

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

ポリモーフィズム

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

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

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

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

メソッドのシグネチャ

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

C# アクセシビティなど実験色々

┗ グローバル名前空間
┗ 名前空間(namespace)
┗ 型(クラス)空間

5つのアクセシビティ

PUBLIC: 制限されない
PROTECTED: クラス内部から + 派生クラス内部から
INTERNAL: 同一ログラムから可
PROTECTED INTERNAL: 
PRIVATE: クラス内部から

デフォルトのアクセシビティ

型(クラス): INTERNAL
型のメンバ: PRIVATE

付けることのできるアクセシビティ

型(クラス): public、internal

┣ 型のメンバ: public、protected、internal、protected internal、private
┃ ┃
┃ ┣ インターフェースのメソッド: 定義側は表記不要。実装側はpublicのみ
┃ ┃
┃ ┗ 抽象メソッド: private以外は大丈夫 (継承元、継承先で同じアクセシビティにする必要がある)
┃   ┗ 実装側でoverrideする必要あり。

┗ 構造体の子メンバ: public、internal、private

アクセシビティについて実験

private・protectedはクラス内部からしかアクセスできない。インスタンス生成して class.method()などの様に直接使えない。protectedは派生クラスの内部からもアクセスできる。

継承はあくまでもクラス(ひな形の)コピーであってインスンタス生成後にお互いに影響を与えない。

通常、クラスを入れ子にはしないが、クラスのスコープは越えられない。アクセシビティは誰に見せるかを定義するもので、メンバは、アクセシビティで許可した範囲からメッセージを受け付ける。

クラス定義領域では、メンバ変数同士での演算はできない。staticなクラスなら可能。クラス定義領域はインスタンス生成に評価されるため。

コンストラクタをprivateにするとインスタンス生成できないクラスになる。
基底クラスのコンストラクが実行され、次にサブクラスのコンストラクタが実行される。
上の例では、”20″のあと”This is BaseClass”と表示される。

Ubuntu USBメモリ操作

通常はUSBメモリを指すと自動でマウントされる。
/media/okamura/xxx
情報は、
df -hT
あるいは
lsblk
lsblk -i
で確認できる。

/dev/sdb1 が/media/okamura/xxx
にマウントされているのがわかる。

USBメモリはだいたい、
/dev/sda,
/dev/sdb,
/dev/sdc
などで認識される。

現在マウントしている情報は
df -hT
以外にも以下のような確認方法がある。
mount | less -S
cat /proc/mounts | less -S
cat /etc/mtab | less -S
sudo fdisk -l

手動でアンマウントする場合、
sudo umount /media/okamura/xxx

自動マウントしない場合、
sudo mount /dev/sdb1 /home/okamura/mnt
-tオプションはファイルシステム指定
などで直接マウントする。

フォーマット。マウントしているとできない。
sudo mkfs -t ntfs -Q -L backup /dev/sdb1
-tのデフォルトはex2