R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8

http://blogs.wankuma.com/rti/archive/2007/08/08/89397.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門7

http://blogs.wankuma.com/rti/archive/2007/08/07/89226.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門6

http://blogs.wankuma.com/rti/archive/2007/08/02/88399.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門5

http://blogs.wankuma.com/rti/archive/2007/07/31/87955.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門4

http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3

http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2

http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1

の続きです。

どこからフォローすれば良いのかわからないので、先頭から順に行ってます。

今回は

オブジェクトって何?

というテーマです。

継承やオーバーライドまで語っておきながら、いきなり原点の話に戻ります。

オブジェクトというのは物体とか、集合体とか、そういう意味があるそうです。
つまり、皆さんが座っているイスもオブジェクト、机もオブジェクト、ノートPCもオブジェクト、Rさんもオブジェクト、わんくま同盟もオブジェクト、もちろん皆さん自身もオブジェクトです。

そんなオブジェクトを自由に生成したり、破壊できるというのは、どれだけ凄いことなのでしょうか?
簡単にいうと、皆さんが Visual Studio の開発環境を手にした瞬間から、皆さんは神様と同じ力を手にしたことになります。

神様は、世の中にいろいろなものを作ることができます。海や陸、山や川、草木や動物など、何でも作ったり、壊したりできます。
Visual Studio を使っても、これが可能です。
但し、作る場所はコンピューターの中の広大なメモリ空間です。

このメモリ空間においては Visual Studio ユーザーは、神様として君臨でき、大量のオブジェクトを作ったり壊したりと自由にできます。
早速、神様になって、天地創造をするプログラムを C# で書いてみましょう。


class 海 {}
class 陸 {}
class 山 {}
class 川 {}
void 創造するよーん() {
  海 u = new 海();
  陸 r = new 陸();
  山 y = new 山();
  川 k = new 川();
}


こんな感じです。
まあ、「創造するよーん」というメソッドの終了と同時に、世界が消滅しているところが笑えますね。
せめてフィールド変数にしてやれよ、などと思ってみたりします。

さて、神様などと大層なことを言った割には、たったこれだけのことじゃないかと思われたかたも多いでしょう。
しかし、以前僕は言いました。

オブジェクト指向が難しいのではなく、設計と実装が難しいのです。

神様は海や陸を作るだけでなく、海がどういうものなのか、陸がどういうものなのか、これを事細かく定義してあげなければ造ることはできません。
そう考えると、神様も大変ですよね。

同様に、海というクラスを、どう設計するのか、どういうメンバを実装して、そのメンバに何をさせるのかを決めるのも自分自身です。
海がどういうものなのか、山がどういうものなのか、海の絵が表示されれば良いのか、海図が表示されれば良いのか、海の音が聞こえれば良いのか、それはソフトウェアの目的に応じて変わってきますよね。

さて、コードの解説です。
上記のコードを見ていただくとわかる通り、 new というキーワードによって、型名と同じ名前のメソッドが実行されています。
つまり、オブジェクトとは、クラスのコンストラクタ、つまり生成子を実行することによって生成されたものがオブジェクトです。

例えば、R・田中一郎オブジェクトは、C# で書くと以下のようになります。


R・田中一郎 r = new R・田中一郎();


これによって、R・田中一郎オブジェクトが生成されます。
そして、そのオブジェクトへは r を通してアクセスできます。


r.自己紹介();


これで、コンソール画面にRさんの自己紹介が表示される訳ですね。

投稿日時 : 2007年8月10日 15:05

Feedback

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8 2007/08/10 16:20 かずくん

> オブジェクトというのは物体とか、集合体とか、そういう意味があるそうです。
ぢゃあ、
空気ってオブジェクト?
物質としての水はオブジェクト?
原子ってオブジェクト?
クオークってオブジェクト?
記憶ってオブジェクト?
夢ってオブジェクト?
妄想ってオブジェクト?

オブジェクト。難しくてよくわかんない。

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8 2007/08/10 17:31 凪瀬

もしも神がプログラマーだったら
http://labs.cybozu.co.jp/blog/akky/archives/2007/08/if-god-was-programmer.html

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8 2007/08/11 1:11 かずき

そろそろシリーズ全部読むと一瞬どころじゃ無くなってる件について…!!

# re: R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8 2007/08/13 14:27 R・田中一郎

かずくん

>オブジェクト。難しくてよくわかんない。

オブジェクトとともにあらんことを。

------------------------------------------------------
凪瀬 さん

>もしも神がプログラマーだったら

勉強会にいくとあえたりしますよねw

------------------------------------------------------
かずき さん

>そろそろシリーズ全部読むと一瞬どころじゃ無くなってる件について…!!

誇大広告ということジャロ。

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門9 2007/08/14 17:20 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門9

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:28 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12 2007/08/28 13:56 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12 2007/08/28 14:40 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13 2007/08/31 14:03 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13 2007/08/31 14:30 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13

タイトル
名前
Url
コメント