甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション12.1 アクセスタイプの宣言

Adaチュートリアル セクション12.1 アクセスタイプの宣言

E-mail Print PDF

セクション 12.1 - アクセス型の宣言

値を格納する代わりに、何かのオブジェクトへの参照を格納する変数を持っておくのは、時にとても役に立ちます。このような変数は、Adaではアクセス変数と呼ばれており、他の言語におけるポインターや参照と本質的には同じものです。アクセス変数の共通した利用方法の一つは、可変サイズのものを実装することです。

このような変数を作成するには、まず、そのための型を作成します。これらの型は、アクセス型と呼ばれています。ここでは、アクセス型の宣言の例を掲載します。Node_Access型として宣言した変数は、Node型のオブジェクトにアクセス(参照)することが出来ます。

  type Node_Access is access Node;

ここではオブジェクトへのアクセス型を作成するためのBNF記法を掲載します。

  access_object_type_declaration ::= "type" new_type_name "is"
                                    "access" ["all"] type_name ";"

アクセス型の変数は、オブジェクトへの参照をすることも出来、nullであることもあります。 プログラマーはキーワード「null」の値を代入することによって、アクセス変数nullを作ることが出来ます。そして、プログラマーはもしそれがnullであるかどうかを「null」と比較(「=」もしくは「/=」を使って)することによってチェックすることが可能です。基本的に、プログラマーは「null」をすべてのアクセス型が格納することできる特殊な値として取り扱うことが出来ます。

他の値を「ポイント」する機能は、有益かつ効果的です。しかし、それは危険な面も持っています。ポインターを使って、間違ったことをするのは容易ですし、その結果に驚かされることがあります。Adaは、プログラマーが効果的に保守が可能になるように、ダメージを制限しようとしています。Adaは次のルールによってそれを実現しています。

  • すべてのアクセス型の変数は、nullとして初期化されます。(プログラマーが何かの特定の値で初期化しない限りにおいて).
  • アクセス値が参照するものを使用するすべての操作は、そのアクセス値がnullでないかどうかを調べるために、最初にチェックします。もし、アクセス値がnullならば、Constraint_Error例外が上がります。
  • 通常、オブジェクトへのアクセス型は、「動的に作成された」オブジェクトへの参照に制限されます。これについては、次に議論します。与えられた方のすべてのオブジェクトへのアクセス型を許可するようにアクセス型を定義する場合には、プログラマーはキーワード「all」を付け加えなければなりません。このようなアクセス値は、ジェネラルアクセスオブジェクトと呼ばれ、Ada 95で新しく導入されました。ジェネラルアクセスオブジェクトの一つの目的は、CやC++プログラムへのインターフェースです。というのも、CやC++のポインターは、本質的にAdaのジェネラルアクセスオブジェクトと等価だからです。ジェネラルアクセスオブジェクトのそのほかの重要な使用目的は、 オブジェクト指向プログラミングのためのものです。これについても後で議論いたします。
  • アクセス変数に「数値」は許されていません。JavaやPascalのように数値ポインターは許可されていません。CやC++では数値ポインターがサポートされていますが、これらとは異なります。プログラマーがどうしても数値ポインターを必要としているなら、Adaには数値ポインターを実現する方法はあります。「package System in RM 13.7を参照ください」。しかし、これはほとんどの状況では、強く回避すべき使用法です。

Adaコンパイラーは、もし不必要であると決められた場合には、これらのチェックと初期化をしないように最適化することが出来ます。プログラマーが特定のサブプログラムが全体として正しいということを知っているならば、これらのチェックを与えられたサブプログラムに対して解除することが可能です。

さて、私たちはアクセス型を宣言する方法について理解しました。次にこれらをどのように使用できるか見ていきましょう。

出典: http://www.adahome.com/Tutorials/Lovelace/s12s1.htm

Last Updated on Wednesday, 04 April 2012 09:33  

ニュース速報

リナックスアカデミーでのLinuxセキュリティの4回目。

内容は、

1、CentOS 4.8のネットワークインストール

2、サーバーの構築。ただし、セキュリティに考慮したものにする。

手順が簡略化されているので、とまどっている様子。

PCによっては、CD-ROMが認識されないものがある。