« あけましておめでとうございます | トップページ | C++ (2) GNU Go をダウンロードしてみよう »

2015/01/04

C++ (1) オブジェクト指向

囲碁プログラムの開発を JavaScript で行ってきました。今後本格的なプログラムにするにあたり、サーバーとの接続などを考えると C/C++ のほうが便利そうなので、移行することにしました。どのようなデバイスでも動くという点は犠牲になりますが、まずは他の囲碁プログラムとの接続を優先しようと思います。

囲碁プログラムの開発は C/C++ が主流で、一部 Java なども使われています。オープンソフトウェアのコードを利用することを考えると、C/C++ が無難そうです。Visual Studio Community 2013 がリリースされたこともあり、Visual C++ の開発環境を使おうと考えています。

ところで、C++ と言えば C言語にオブジェクト指向の考え方を導入した言語です。実際の囲碁プログラムではオブジェクト指向はあまり意識されていないようなのですが、Java や JavaScript のプログラミングを経験した今、改めてオブジェクト指向とは何なのか、おさらいしてみようと思います。

教科書は B.R.ラオ著 『C++とOOPパラダイム』(マグロウヒル出版)です。この本はその昔オブジェクト指向プログラミングとは何かを知るために購入したものですが、当時は全く理解できませんでした。

この本では単に C++ の説明するのではなく、オブジェクト指向の設計~プログラミング~テストの考え方がどのように C++ に反映されているか(あるいはされていないか)を説明しています。したがって C++ にはない永続性、委託、総称といった考え方についても説明されています。

オブジェクト指向にクラスという考え方があります。これはデータ型をデータだけではなくコードにも拡張した考え方です。データの型に縛られない JavaScript にはクラスという考え方がありません。この本を読んでいると、それぞれの言語の設計思想がなんとなく分かってきます。

C++ は型づけられていて、クラスに基づいたオブジェクトしか作れません。

囲碁のプログラムでは、碁盤、碁石、局面、棋譜、局面を表すグラフなど、オブジェクトとして扱いやすいものが結構あります。特にグラフをベクトルで表した場合、ベクトルや行列の演算に演算子のオーバーロードの機能を使うとコードがすっきりしそうな予感します。

このような感じで、C++ の機能をうまく活かした囲碁プログラムを作っていこうと思います。この新シリーズの目次をこちらに用意しました。ご利用ください。

|

« あけましておめでとうございます | トップページ | C++ (2) GNU Go をダウンロードしてみよう »

囲碁」カテゴリの記事

私の本棚」カテゴリの記事

C++」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: C++ (1) オブジェクト指向:

« あけましておめでとうございます | トップページ | C++ (2) GNU Go をダウンロードしてみよう »