留年戦記

留年と工学と人間関係と毎日戦っている人のブログです. 今年は留年回避済み.プロマネのお勉強中.留学試みたりTOEICの得点向上を試みたり.普通に学校の勉強を頑張ったり工学(プログラミングも回路も)について学んでみたり.時々レーザーカッターのパラメータを記事にしてます.

【オブジェクト指向】学び始めで簡単解説<その3:クラスからオブジェクトを生成,そしてコンストラクタ>

前回の記事が難しいという意見がありましたのでこの後「補足編」として解説の補足をしようと思っているあこさんです.

 

あとで補足記事出しますね.

というわけで今回はクラスからオブジェクトを作る方法です.

 

1,オブジェクトの生成

前回クラスは設計図,オブジェクトは実体を持ったものと言いました.

その話の通りオブジェクトを作るにはクラスから作る必要があります.

 

しかし,単純に「オブジェクトを作るよ!」というだけでは作れません.

さて,どうするのか,と思いますよね.

(実はこれが私の中でも時々「説明できないぃぃ」ってなるところなんです)

 

まず,その1で説明した通り構造体に似ているということを思い出してください.

構造体って構造体の名前で宣言した後に構造体を生成しましたよね.

オブジェクトも同じです.

 

①クラス名変数を宣言

②変数名 = new クラス名

 

とします.これでオブジェクトが生成できます.

イメージ的説明をしてみると,粘土があります.

これを練り練りと形作ります.(上でいう①)

f:id:aconote:20161126231745j:plain次にその形に合うようにパーツをそれぞれ組み込んでいきます.(上の②)

f:id:aconote:20161126231824j:plain

(思ったより画像の編集がうまくいってなくてほわほわした図になってしまった(;'∀'))

これがオブジェクトを生成する手順です.

パーツといったものが前回説明した「メンバ」というものです.

ここで一つ目の画像の粘土を練る作業がないと…

パーツが埋め込めません.

 

2,メンバを読み込む

VBC#もそうですが,作成したオブジェクトの中身を取り出すことが出来ます.

上で言うパーツが引き出しとなっており,引き出しから中身を取り出すという作業が可能です.(まぁ,この引き出し一度荷物を入れると決められた作業して次開くので違う荷物出てくることありますが,まぁ今回は処理されたもののあとを取り出すということで引き出しという表現で問題ないでしょう.あ,難しい話だと思った方は独り言だと思ってください)

引き出すを開く方法は「クラス名.メンバ名」です.

これで,指定したメンバという名の引き出しから中身を取り出すことが可能です.

 

3,コンストラクタ

今回のメインディッシュ?コンストラクタです.

粘土にパーツを入れる時に実はパーツが中で練り練りと動くことがあるんです.

(動くってなんだ…?ていう声が聞こえていきそう)

パーツを入れる時に他のパーツからデータを奪い取って,パーツ同士を組み合わせたり,パーツの形を勝手に変形させたりすることがあるのです.

これがコンストラクタ(コンちゃんと呼ぼう)と呼ばれるものです.

 

で,実は…このコンちゃん…オブジェクトを生成する時に「パーツをよこせ!」と言ってくることがあるのです.

中にないパーツをよこせ!という事があるのです.

(これが「引数」と呼ばれるものです.「引数」のあるオブジェクトはこのコンストラクタに引数を渡します.)

このパーツをよこせっ!という言葉によってコンちゃんの中に入っている中身が変わります.

 

とここまでがコンストラクタの解説でした.

ここからはちょっとC言語をやったことある人に対する言葉です.構造体みたいなものといったのですがこの「引数」というものが違うものです.

関数が中にあるので「引数」を入れることが出来るのです.

最初は「何言ってんだ?こいつ」という感じになりますが,実際に使っていると,「あああ,このオブジェクト,この使い方でできるぅぅ!!」ってなるときがあります.

 

前回の説明とちょっと変更して「粘土」という言い方をしたのでちょっと混乱されている方がいると思います.

これについては補足で説明しますので「分からない~~!」という方はちょっと待ってくださいね!

すぐ書きますから!