読者です 読者をやめる 読者になる 読者になる

クラス と インスタンス

オブジェクト指向 プログラム

 

クラス:何かしらの責務を持つモノ。性質を表す

インスタンス:クラスの性質を持つ実体実際のモノ )。

class:種類、分類
instance:実例、具体的な事物。特定のもの。

クラス

フィールド:情報を保存する場所 ( 変数のようなもの )
メソッド:情報を処理する方法 ( 関数のようなもの )

を持つ。

クラス名は名詞で命名。
インタフェースは形容詞で命名。クラスの持つ性質を説明的に見ることができる。
インスタンスは特にないらしい。
形容詞:名詞に情報を加えるもの。

 

ex )

A クラス
a インスタンス  があるとする。

a インスタンスは A クラスに属している。
すべてのインスタンスはクラスに属しており、そのクラスの性質を持つ
( A クラスから作成された a インスタンスと aa インスタンスは共通の性質を持つ。)

 ex)
犬クラス:嗅覚が鋭い、穴を掘る、肉球が硬い。

インスタンス:柴犬
インスタンス:秋田犬
インスタンス樺太犬

これらのインスタンス は犬クラス の性質を持っている。
( 犬クラスから作成された柴・秋・樺インスタンスは共通の性質を持つ。)

 具体的なソースコードサンプルはページ下部

 

インスタンスはどこにつくられているのか

 A型 a ;

と宣言されている時、

A クラスのインスタンスを参照する領域が確保され、
そこに a という名前がつけられるということ。
A クラスのインスタンスが作られたわけではない。

 

A型 a = new A();

の様にした時初めて、A のインスタンスが作られ、変数 a に代入される。
A のインスタンスが作成され、変数 a はそのインスタンス指し示している
という状況。

変数 a が確保されている領域をスタック ( stack ) と呼び、
A のインスタンスが確保されている領域をヒープ ( heap ) と呼ぶ。

stack:[ 可算名詞 ] 積み重ね、干し草。( 整然に積み上げるイメージ )
heap:[ 可算名詞 ] 積み重ね、かたまり、山。( 乱雑に山積みイメージ )

 

■ 

A クラスから作成された a インスタンスと aa インスタンスは共通の性質を持つ。
の サンプルコード。

ex ) 作成したインスタンスは以下の共通の性質を持つ。
・文字列の長さを得ることが出来る
・指定した位置にある文字を得ることが出来る
・指定した文字列を別の文字列に置換することが出来る

文字列は全てインスタンス
「" "」で書けば、全て String クラスインスタンス

String sA = "ABCDE";
String sV = "VWXYZ";

//文字列の長さを得ることが出来る
int sAL = sA.Length;
int sVL = sV.Length;

//指定した位置にある文字を得ることが出来る
var sAS = sA.Substring(0,3);    //ABC
var sVS = sV.Substring(3,2);    //YZ

//指定した文字列を別の文字列に置換することが出来る
var sAR = sA.Replace("D", "ディ");    //ABCディE
var sVR = sV.Replace("Z", "ぜと");    //VWXYぜと

 

↓ 【おまけ】 Char 配列から文字列作成。

char[] carArray = new char[5];
carArray[0] = 'あ';
carArray[1] = 'い';
carArray[2] = 'う';
carArray[3] = 'え';
carArray[4] = 'お';

//string型のインスタンスを生成
String carString = new string(carArray);
int cAsL = carString.Length;
Console.WriteLine("{0}と{1}", cAsL, carString);
//↑「5 と あいうえお」と表示される

 

 以上。

↓ 参考
http://qiita.com/KeithYokoma/items/ee21fec6a3ebb5d1e9a8
http://xz4u.com/adjective-and-adverb/
http://www.kumei.ne.jp/c_lang/cs/cs_08.htm