C++/CLIをつつく11-クラス。サブルーチンの進化
楽しいな♪楽しいな♪オブジェクト指向にゃースパゲティも何にも無い。
※一部表現を誇張しております。
さてオブジェクト指向シリーズ第一弾はクラスだピヨ。 論よりプログラミング!まずは不味いコードを見ておくんなまし。
namespace Sample
{
public ref class Bird
{
public:
//フィールド
String^ Name;
Int32 Age;
//メソッド
void Talk( ) {
Console::WriteLine( "ワタシハ{0}。年は{1}だよ。",
this->Name, this->Age);
}
};
}
このコードどこかで見たこと無いかな?そう、前回の構造体の記事のサンプルコードの
value structキーワードを
ref classに変えただけなんだ。 読者は「なーんだ」とがっかりするだろうけど、この一つのキーワードが大きな違いを生むピヨ。 構造体は構造化プログラミングの概念で誕生したもので、 クラスはオブジェクト指向プログラミングの概念から誕生したものだから、 構造体にはオブジェクト指向の機能の一部がないけども、 クラスの方は全て兼ねそろえているんだよ。だからといって常にクラスの方がいいわけでは無いから注意してね。
察しがいい人は予想がついていると思うけど、またまた
ref structでもいいんだ。 この2つの違いはやはりデフォルトアクセス修飾子ピヨ。それにしてもそんな事する必要があったのかなぁ? ボクは凄く疑問だな。 こちらもstructはpublic、classはprivateだよ。 お勧めはやっぱりclassの方だよ。クラスを作るのにstructは気持ち悪いピヨね。まぁこれは好みの問題だけど、 valueの方でstructを選んだらrefの方はclassと対照的に統一すると良いよ。その方が見分けがつきやすいからね。
具体的なオブジェクト指向プログラムの機能は個別につつくから今回はこれで終わり。