指向性メモ::2006-01-01

ページ情報
制作日
2006-01-01T23:22:42+09:00
最終更新日
2006-02-21T12:44:19+09:00

OOP in Ada

Created:
2006-01-01T23:22:42+09:00

やっぱりAdaでもOOPな感じに書きたい、ということで、ちょっと調べてみた。……これは単に「型互換性のある構造体」という認識で良いのだろうか。

with Ada.Strings.Unbounded;

package Actions is
   package SU renames Ada.Strings.Unbounded;

   type Action is tagged
      record
         Name    : SU.Unbounded_String;
      end record;

   procedure New_Action (This : in out Action);
   procedure Get_Name   (This : in     Action; Name :    out String);
   procedure Do_Action  (This : in     Action);
end Actions;

Java上がりのプログラマがまず面食らうのは、AdaのOOPにはドット記法が存在しないことだろう。上記のコードを見ると分かるが、Adaでは操作対象のインスタンスをプロシージャに引数として渡す――ただのプロシージャ呼び出しと全く分からない方法でコードを書いていくことになる

// in Java
Action act = new Action();
act.do_action();

-- in Ada
Act : Action;

New_Action (Act);
Do_Action (Act);

考え方としては、多態が可能なCの構造体(Adaでいうrecord)なのだろう。Ada全体で見れば比較的統一的だし、なかなか良い方法なのかもしれない。

ちなみに、命名規則はクラス名が単数形、パッケージ名が複数形、がよく使われるらしい。

Comments
4
Trackbacks
0
PermaLink
http://yudai.arielworks.com/memo/2006/01/01/232242
連絡先、リンク、転載や複製などについては『サイト案内』をご覧ください。Powered by HIMMEL

I ♥ Validator