2015年11月30日月曜日

P007-自作ライブラリを使ってみる

今日の目標→

プログラムコードを使い回せたら楽じゃね? そんなプログラマの永遠の夢を実現するのがライブラリだ。今回はライブラリ自作の基礎を説明する。

●プロジェクトの準備

まずは「TextWork4」という名前で、新規プロジェクトを作る。

●前回作ったクラスを現プロジェクトに組み込んでみる

  1. メニューバーから「プロジェクト」→「既存の項目の追加」で、ファイルダイアログを開く
  2. 前回の"TextWork3"プロジェクトのフォルダを探す
  3. ファイル"RichReporter.cs"を選択する
  4. 「追加」ボタンの右にある「▼」記号をクリックし、「リンクとして追加」を選択する

これで前回のRichReporterのソースコードにリンクが張られ、このプロジェクトから利用できるようになった。なお、「リンクとして追加」じゃなく、ただの「追加」でも良いのだが、その場合はファイルがまるっとコピーされる。

●RichReporerクラスを利用するコードを書く

  1. Form1.csを開く
  2. 次のコードを入力する

こうやって前回書いたコードを読み込んで使えると、コピペとか駆使するよりずっと楽ですね。

さてここで、Print()やColorPrint()などメソッドの呼び出し方は前と同じだが、RichRepoterクラスのクラス名を、

TextWork3.RichRepoter

と長い名前で指定しているのに注目してほしい。

なぜならば、今回のプログラムは「namespace TextWork4」の中で作られているのに対し、前回のプログラムは「namespace TextWork3」で作られていたからだ。このように所属が異なるクラスを指定するには、相手のnamespaceを含む長い名前、すなわち「完全修飾名」を使わなくてはならない。

もし、いちいち完全修飾名を書くのが面倒なら、ファイル先頭で次のように宣言してもよい。

using TextWork3;

このusing宣言があれば、以後クラス名の頭の「TextWork3.」は省略できる。

●なんでnamespaceなんかがあるの

namespaceがあるのは、名前の衝突をできるだけ回避するためだ。コンパイラ内部では常に完全修飾名でクラスが区別されるので、短いクラス名が同じでもnamespaceが違えば異なるクラス名となり、名前がぶつからない。

だから実はnamespaceには、「世界の誰とも一致しない独自の単語」を採用するのが理想だったりする。デフォルトはプロジェクト名と同じnamespaceがついているが、自作ライブラリを作る場合などは、独自のかっこいいnamespaceに書き換えたうえでコードを記述していくとよい。

あ、せっかくだからこれは次回のネタに回します。

●次回の予告

ライブラリの作り方後編。自作クラスをDLL化して、それを呼び出します。

0 件のコメント:

コメントを投稿