SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VB6プログラマのためのCurl入門(AD)

VB6プログラマのためのCurl入門
プロシージャとクラスについての比較

第3回 Curl言語のノリをつかもう(その2)

  • このエントリーをはてなブックマークに追加

クラスの作り方

 Curlは、オブジェクト指向プログラミングを実践できる言語です。変数とプロシージャ(属性と振る舞い)をカプセル化したクラスを作ることができます。VB 6.0でも、クラスモジュールとしてクラスを作ることができます。例えば、リスト4は、円を表すMyCircleクラスをVB 6.0で作成したものです。MyCircleクラスのメンバには、円の座標を表すx、y、および半径を表すrという変数と、円の面積を返すGetAreaというプロシージャがあります。

リスト4 円を表すMyCircleクラス(VB 6.0)
Public x As Double  ' 中心位置のx座標
Public y As Double  ' 中心位置のy座標
Public r As Double  ' 半径

' 面積を返すプロシージャ
Public Function GetArea() As Double
    GetArea = Me.r * Me.r * 3.14
End Function

 これと同様のクラスをCurlで作るとリスト5のようになります。

リスト5 円を表すMyCircleクラス(Curl)
{define-class public MyCircle
  field public x:double    || 中心位置のx座標
  field public y:double    || 中心位置のy座標
  field public r:double    || 半径

  || 面積を返すプロシージャ
  {method public {get-area}:double
    {return self.r * self.r * 3.14}
  }

  || コンストラクタ
  {constructor {default x:double, y:double, r:double}
    set self.x = x
    set self.y = y
    set self.r = r
  }
}

 VB 6.0では、クラスモジュールの中にコードを記述することでクラスを作成しますが、Curlでは任意のソースコードの中でクラスを作成できます。{define-class public MyClircle・・・} の中に変数とプロシージャを記述するのです。クラスのメンバである変数を「フィールド」、プロシージャを「メソッド」と呼びます。publicの意味は、VB 6.0と同様です。selfは、VB 6.0のMeに相当します。コンストラクタという特殊なメソッドの役割は、すぐ後で説明します。

オブジェクトを生成する方法

 クラスはオブジェクトを生成して使います。これはVB 6.0とCurlで同様です。

 リスト6は、MyCircleクラスのオブジェクトcを生成し、フィールドx、y、rに適当な値を代入してから、GetAreaメソッドを呼び出すVB 6.0のコードです。c.x、c.y、c.rでフィールドを参照し、c.GetAreaでメソッドを呼び出します。この「オブジェクト名.メンバ名」という構文は、後で紹介するCurlのコードでも同様です。このドットを「~の」と読むとわかりやすいでしょう。c.xなら「オブジェクトcのフィールドx」、c.GetAreaなら「オブジェクトcのGetAreaメソッド」です。

リスト6 オブジェクトを生成して使う(VB 6.0)
' オブジェクトを生成する
Dim c As MyCircle
Set c = New MyCircle

' フィールドに適当な値を代入する
c.x = 100
c.y = 200
c.r = 10

' メソッドを呼び出す
MsgBox c.GetArea()

 VB 6.0と同様のコードをCurlで記述すると、リスト7のようになります(実行結果を図3に示します)。このコードは、MyCircleクラスと同じソースコードの中に記述できます。

リスト6 オブジェクトを生成して使う(Curl)
|| オブジェクトを作成する
{let c:#MyCircle}
{set c = {MyCircle 100, 200, 10}}

|| メソッドを呼び出す
円の面積は、{value {c.get-area}}です!
図3 リスト6の実行結果
図3 リスト6の実行結果

 注目してほしいのは、{set c = {MyCircle 100, 200, 10}} の部分です。クラス名MyCircleに続けて指定されている3つの数値は、それぞれフィールドx、y、rに代入されます。これを実現しているのが、コンストラクタという特殊なメソッドです。VB 6.0のコードに比べてCurlのコードでは、コンストラクタがあるお陰でオブジェクトのフィールドへの値の代入が容易に実現できます。

 コンストラクタ以外にも、Curlには本格的なオブジェクト指向プログラミングを実現するための便利な構文が数多く用意されています。ただし、オブジェクト指向プログラミングを強要しないところが、Curlのよいところだと言えるでしょう。

おわりに

 前回と今回の2回に渡って、Curlの言語構文の概要を説明してきましたが、いかがだったでしょう。「はじめてソースコードを見たときはとても難解に思えたが、ノリさえつかめれば使いこなせそうだ」と感じていただけたでしょう。

 さて、次回はCurlを使って、ちょっと凝ったユーザーインターフェースを作る方法を紹介します。Curlのセールスポイントは、なんたって「インターネット時代のリッチクライアントアプリケーション開発ツール」なのですから、凝ったユーザーインターフェースを容易に作れる仕掛けがたくさん用意されています。

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
VB6プログラマのためのCurl入門連載記事一覧

もっと読む

この記事の著者

矢沢久雄(ヤザワヒサオ)

パッケージソフトの開発・販売に従事するかたわら、書籍や雑誌記事の著作活動、セミナーやカンファレンスにおける講演活動も精力的にこなす自称ソフトウエア芸人です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3323 2008/12/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング