|
New
List
Search
Recent
Help
Back to page
Copy
History
Print
create a new page, using
Articles/D言語入門講座/第15章 - オブジェクト指向
as a template.
wiki
:create a new page, using Articles/D言語入門講座/第15章 - オブジェクト指向 as a template.
Start:
TITLE:オブジェクト指向
#navi
* #01 オブジェクト指向とは
** 今回は…
オブジェクト指向について少しだけ触れていきます。~
まず、オブジェクト指向とはどういうものなのかを簡単に説明...
「構造体をもっと使いやすくしたもの」~
といった感じです。~
C言語でかなり無理矢理にオブジェクト指向的なプログラムを組...
さて、前回までに構造体とポインタを使って関数に渡す云々と...
たとえば、次のようなプログラムを組む時のことを考えてみま...
- 人がいます(学生とします)。(「人」型の構造体の定義)
- 一日の行動をプログラムで表します。(メインの流れ)
- 行動は以下のとおりです
-- 起床(WakeUp)
-- 食事(Eat)
-- 移動(Move)
-- 勉強(Study)
-- 就寝(Sleep)
- 行動のたびに、行動開始時に現在「人」がいる場所を表示し...
- 起床時「人」は自室にいます。
このような場合、主人公となる「人」が一人いて、その人が行...
ところで、その「人」は名前があったりしますね。~
たとえばここでは仮に「前原圭一」としましょう。~
「人」型の変数、「前原圭一」です。
「人」という、種族や集団のような、種類、型を表すものの呼...
また、「前原圭一」のような、「人」の集団に属する個に対す...
そんでもって、「人」や「前原圭一」のようなクラスやインス...
…ということで以降の表現を統一しますね。(この辺は表記にブ...
この辺の詳しい解説はC++やJavaなどの解説ページや、Wikipedi...
さて、プログラムのほうですが…~
「人」型は、「名前」をメンバに持っていて、さらに、現在位...
行動については、~
「起床」は、誰が起きるかを指定するため、「人」を引数にし...
「食事」は、誰が何を食べるかを指定するため、「人」と、食...
「移動」は、誰がどこに行くかを指定するため、「人」と、場...
「勉強」は、誰が勉強するのかを指定するため、「人」を引数...
「就寝」は、誰が寝るのかを指定するため、「人」を引数にし...
さて、この条件でプログラムを書いてみるので、サンプルコー...
(これがC言語でやるようなオブジェクト指向プログラミングの...
** 今回のミソ
- オブジェクトの入り口は構造体をポインタで関数に渡すこと
- 種類や型を示す呼び方をオブジェクト志向では「クラス」と...
- 種類や型に属する個を示す呼び方をオブジェクト志向では「...
** サンプルコード
#code(d,sample1501p.d);
#region(Tango用はこちら){{
#code(d,sample1501t.d);
}}
** 実行結果
#code(console){{{
$ dmd -run sample1501p.d
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** まとめ
さて、コードをみるとわかると思いますが、WakeUpにしろEatに...
関数を定義するときも、関数を使用するときも、面倒ですね。~
………まぁ、面倒と思うかどうかは人それぞれだとは思いますが…~
少なくとも、オブジェクト指向というのは、このような使い方...
次回はそんな話です。
* #02 メンバ関数
** 今回は…
メンバ関数についてお話します。~
メンバ関数とは、構造体などが持つ、メンバの、関数のことで...
など、というのは、構造体だけでなく、のちに解説するクラス(...
さて、前回ではいちいち
#code(d,nomenu,nonumber,nooutline){{{
WakeUp( &keiichi );
}}}
などとして、構造体のポインタを関数に引き渡してやりました。~
メンバ関数では、
#code(d,nomenu,nonumber,nooutline){{{
keiichi.WakeUp();
}}}
のように、"."(ピリオド)を使ってアクセスします。~
引数の構造体の変数へのポインタは必要ありません。~
これによって、 WakeUp という関数が、より Parson 構造体に...
また、メンバ関数の中では、メンバ変数にアクセスする際に pa...
詳しくはサンプルコードのメンバ関数の中で name や location...
このようなことを自動的にやるのが、メンバ関数というものな...
以下のサンプルコードに前回のものと全く同等なプログラムを...
** 今回のミソ
- 構造体のメンバの変数をメンバ変数というのに対してメンバ...
- メンバ関数のスコープには、同じ構造体(やクラス・共有体)...
- メンバ関数を定義する場合は構造体(やクラス・共有体)の中...
- メンバ関数を使用する場合は
#code(d,nomenu,nonumber,nooutline){{{
変数名.メンバ関数名(引数);
}}}
というようにしてアクセスします。
** サンプルコード
#code(d,sample1502p.d);
#region(Tango用はこちら){{
#code(d,sample1502t.d);
}}
** 実行結果
#code(console){{{
$ dmd -run sample1502p.d
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** まとめ
とりあえず、今回の利点はコードが読みやすくなる程度の御利...
しかしながら、本来メンバ関数の実力はこんなものではありま...
メンバ関数の本領は「ポリモーフィズム」とか「カプセル化」...
あ、あとちなみに、メンバ関数ではない、今までやってきた普...
とりあえず、その前段階として次章では「クラス(class)」につ...
* #summary - まとめ
** 第15章のミソ
- オブジェクトの入り口は構造体をポインタで関数に渡すこと
- 種類や型を示す呼び方をオブジェクト志向では「クラス」と...
- 種類や型に属する個を示す呼び方をオブジェクト志向では「...
- 構造体のメンバの変数をメンバ変数というのに対してメンバ...
- メンバ関数のスコープには、同じ構造体(やクラス・共有体)...
- メンバ関数を定義する場合は構造体(やクラス・共有体)の中...
- メンバ関数を使用する場合は
#code(d,nomenu,nonumber,nooutline){{{
変数名.メンバ関数名(引数);
}}}
というようにしてアクセスします。
** 宿題
今回のメンバ関数を用いて、サンプルコードに追加の関数、「P...
学校から帰ったら遊ぶことにします。
#code(console){{{
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在家にいます。
前原圭一は家から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一はゲームをして遊んだ。ちょっと愉快になった。
前原圭一は現在自室にいます。
前原圭一は自室から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** コメント
次回は、classについて取り扱っていきます。~
D言語風にオブジェクト指向をする場合はclassを主に使うこと...
そんなわけで、宿題できたら、あるいは予想ついたら次にいき...
#navi
* 投票とコメント
#vote(#lastvote:206a499f93f4a947869c09788c67c8b7,大変参考...
#pcomment
End:
TITLE:オブジェクト指向
#navi
* #01 オブジェクト指向とは
** 今回は…
オブジェクト指向について少しだけ触れていきます。~
まず、オブジェクト指向とはどういうものなのかを簡単に説明...
「構造体をもっと使いやすくしたもの」~
といった感じです。~
C言語でかなり無理矢理にオブジェクト指向的なプログラムを組...
さて、前回までに構造体とポインタを使って関数に渡す云々と...
たとえば、次のようなプログラムを組む時のことを考えてみま...
- 人がいます(学生とします)。(「人」型の構造体の定義)
- 一日の行動をプログラムで表します。(メインの流れ)
- 行動は以下のとおりです
-- 起床(WakeUp)
-- 食事(Eat)
-- 移動(Move)
-- 勉強(Study)
-- 就寝(Sleep)
- 行動のたびに、行動開始時に現在「人」がいる場所を表示し...
- 起床時「人」は自室にいます。
このような場合、主人公となる「人」が一人いて、その人が行...
ところで、その「人」は名前があったりしますね。~
たとえばここでは仮に「前原圭一」としましょう。~
「人」型の変数、「前原圭一」です。
「人」という、種族や集団のような、種類、型を表すものの呼...
また、「前原圭一」のような、「人」の集団に属する個に対す...
そんでもって、「人」や「前原圭一」のようなクラスやインス...
…ということで以降の表現を統一しますね。(この辺は表記にブ...
この辺の詳しい解説はC++やJavaなどの解説ページや、Wikipedi...
さて、プログラムのほうですが…~
「人」型は、「名前」をメンバに持っていて、さらに、現在位...
行動については、~
「起床」は、誰が起きるかを指定するため、「人」を引数にし...
「食事」は、誰が何を食べるかを指定するため、「人」と、食...
「移動」は、誰がどこに行くかを指定するため、「人」と、場...
「勉強」は、誰が勉強するのかを指定するため、「人」を引数...
「就寝」は、誰が寝るのかを指定するため、「人」を引数にし...
さて、この条件でプログラムを書いてみるので、サンプルコー...
(これがC言語でやるようなオブジェクト指向プログラミングの...
** 今回のミソ
- オブジェクトの入り口は構造体をポインタで関数に渡すこと
- 種類や型を示す呼び方をオブジェクト志向では「クラス」と...
- 種類や型に属する個を示す呼び方をオブジェクト志向では「...
** サンプルコード
#code(d,sample1501p.d);
#region(Tango用はこちら){{
#code(d,sample1501t.d);
}}
** 実行結果
#code(console){{{
$ dmd -run sample1501p.d
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** まとめ
さて、コードをみるとわかると思いますが、WakeUpにしろEatに...
関数を定義するときも、関数を使用するときも、面倒ですね。~
………まぁ、面倒と思うかどうかは人それぞれだとは思いますが…~
少なくとも、オブジェクト指向というのは、このような使い方...
次回はそんな話です。
* #02 メンバ関数
** 今回は…
メンバ関数についてお話します。~
メンバ関数とは、構造体などが持つ、メンバの、関数のことで...
など、というのは、構造体だけでなく、のちに解説するクラス(...
さて、前回ではいちいち
#code(d,nomenu,nonumber,nooutline){{{
WakeUp( &keiichi );
}}}
などとして、構造体のポインタを関数に引き渡してやりました。~
メンバ関数では、
#code(d,nomenu,nonumber,nooutline){{{
keiichi.WakeUp();
}}}
のように、"."(ピリオド)を使ってアクセスします。~
引数の構造体の変数へのポインタは必要ありません。~
これによって、 WakeUp という関数が、より Parson 構造体に...
また、メンバ関数の中では、メンバ変数にアクセスする際に pa...
詳しくはサンプルコードのメンバ関数の中で name や location...
このようなことを自動的にやるのが、メンバ関数というものな...
以下のサンプルコードに前回のものと全く同等なプログラムを...
** 今回のミソ
- 構造体のメンバの変数をメンバ変数というのに対してメンバ...
- メンバ関数のスコープには、同じ構造体(やクラス・共有体)...
- メンバ関数を定義する場合は構造体(やクラス・共有体)の中...
- メンバ関数を使用する場合は
#code(d,nomenu,nonumber,nooutline){{{
変数名.メンバ関数名(引数);
}}}
というようにしてアクセスします。
** サンプルコード
#code(d,sample1502p.d);
#region(Tango用はこちら){{
#code(d,sample1502t.d);
}}
** 実行結果
#code(console){{{
$ dmd -run sample1502p.d
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** まとめ
とりあえず、今回の利点はコードが読みやすくなる程度の御利...
しかしながら、本来メンバ関数の実力はこんなものではありま...
メンバ関数の本領は「ポリモーフィズム」とか「カプセル化」...
あ、あとちなみに、メンバ関数ではない、今までやってきた普...
とりあえず、その前段階として次章では「クラス(class)」につ...
* #summary - まとめ
** 第15章のミソ
- オブジェクトの入り口は構造体をポインタで関数に渡すこと
- 種類や型を示す呼び方をオブジェクト志向では「クラス」と...
- 種類や型に属する個を示す呼び方をオブジェクト志向では「...
- 構造体のメンバの変数をメンバ変数というのに対してメンバ...
- メンバ関数のスコープには、同じ構造体(やクラス・共有体)...
- メンバ関数を定義する場合は構造体(やクラス・共有体)の中...
- メンバ関数を使用する場合は
#code(d,nomenu,nonumber,nooutline){{{
変数名.メンバ関数名(引数);
}}}
というようにしてアクセスします。
** 宿題
今回のメンバ関数を用いて、サンプルコードに追加の関数、「P...
学校から帰ったら遊ぶことにします。
#code(console){{{
前原圭一は現在自室にいます。
前原圭一は自室のベッドで目を覚ました。
前原圭一は現在自室のベッドにいます。
前原圭一は自室のベッドから食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は朝食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から学校へ移動した。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一はお昼の弁当を食べた。少し元気になった。
前原圭一は現在学校にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在学校にいます。
前原圭一は学校から家へ移動した。
前原圭一は現在家にいます。
前原圭一は家から食卓へ移動した。
前原圭一は現在家にいます。
前原圭一は家から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一はゲームをして遊んだ。ちょっと愉快になった。
前原圭一は現在自室にいます。
前原圭一は自室から食卓へ移動した。
前原圭一は現在食卓にいます。
前原圭一は夕食を食べた。少し元気になった。
前原圭一は現在食卓にいます。
前原圭一は食卓から自室へ移動した。
前原圭一は現在自室にいます。
前原圭一は勉強した。少し賢くなった。
前原圭一は現在自室にいます。
前原圭一は自室のベッドで眠りに就いた。
}}}
** コメント
次回は、classについて取り扱っていきます。~
D言語風にオブジェクト指向をする場合はclassを主に使うこと...
そんなわけで、宿題できたら、あるいは予想ついたら次にいき...
#navi
* 投票とコメント
#vote(#lastvote:206a499f93f4a947869c09788c67c8b7,大変参考...
#pcomment
Page:
Page Info
Page Name :
Articles/D言語入門講座/第15章 - オブジェクト指向
Page aliases :
None
Page owner :
SHOO
Can Read
Groups :
All visitors
Users :
All visitors
Can Edit
Groups :
No one
Users :
SHOO
Counter: 0, today: 0, yesterday: 0
Go Page Top
Powered by
XOOPS Cube
2.2 © 2001-2012
XOOPS Cube Project
, theme design by
BCOOL
メインメニュー
ホーム
フォーラム
wiki
新規ページ作成
最新ページ一覧
全ページ一覧
ヘルプ
ログイン
ユーザー名:
パスワード:
パスワード紛失
|
新規登録
Menu
トップ
ツール
ライブラリ
記事
HowTo
サンプルコード集
投票
ウォッチング
簡易版リンク集
その他
ヘルプ
リンク
D言語公式サイト
日本語訳
D更新履歴
日本語訳
Bugzilla
フォーラム
GitHub
公式プロジェクト
dmd
druntime
Phobos
Deimos
DPaste
new
+
最新の20件
recent(20)
2018-11-12
vote/【2010-08-03】 Phobosに入ってほしい機能は?
2017-10-15
Articles/D言語入門講座/第13章 - その他の文法1
2017-07-13
Tools/Visual D
2016-05-20
コメント/Tools/COFFIMPLIB
Tools/COFFIMPLIB
2016-01-12
Articles/D言語入門講座/第08章 - 配列
2015-11-02
Articles/D言語入門講座/第14章 - モジュール
2015-04-04
Articles/D言語入門講座/第02章 - 計算
2014-12-12
vote/【2009-09-02】D3になったら来てほしい機能は?
2014-11-02
Tools/DMD
2014-10-13
コメント/HowTo/NoStartAddress
HowTo/NoStartAddress
2014-09-15
Tools/GDC
2014-05-19
Libraries/DFL
2014-02-18
Articles/D言語入門講座/第03章 - 変数
2013-10-31
Watching/OfficialNewsGroup
2013-10-17
RecentDeleted
2013-10-16
コメント/Watching/OfficialNewsGroup
コメント/Watching/OfficialNewsGroup/過去ログ (1)
2013-03-22
SampleCodes/Phobos/range/要素を先頭に移動する