Interactive Software Engineering: Advanced development tools for enterprise applicationsISE TECHNOLOGY

AN INVITATION TO EIFFEL

4 型

 Eiffel は、可読性と信頼性のために、強く型付けされています。あらゆる実体は、特定の型で宣言され、参照型または拡張型のいずれかになります。

 どんな型 T も、 T の実例へ適用する操作を定義しているクラスに基きます。型についての二つのカテゴリー間の違いは、型 T で宣言された実体 x の意味論に影響を与えます。すなわち、大部分に共通な場合である参照型について、 x のための可能な値は、オブジェクトへの参照です。そして、拡張型について、その値はオブジェクトです。両方の場合に、型規則は、そのオブジェクトが T の実例になることを保証します。

 ACCOUNT のような拡張されていないクラスは、参照型をもたらします。結果として、先のクライアントの例における acc のような、型 ACCOUNT の実体(前に説明した acc の宣言がある図を見てください)は、型 ACCOUNT のオブジェクトへの、可能な実行時の参照を明示しています。

 対照的に、ACCOUNT 拡張型で宣言された実体 acc の値は、下図で示したようなオブジェクトであり、参照を伴いません。前図との違いは、単に、 acc の値がいまや ACCOUNT オブジェクトであり、そのようなオブジェクトへの参照ではない、ということです。この場合に必要とされる生成命令はありません(図は、 ACCOUNT オブジェクトの owner 項目への PERSON オブジェクト -- それ自体、参照 -- がアタッチされている、ということを示していません)。

拡張型の実体

 ライブラリのクラスに基づく、拡張型の重要なグループは、基本的な型である、INTEGER REAL DOUBLE CHARACTER 、そして BOOLEAN を含んでいます。明らかに、型 INTEGER で定義された実体の値は、整数であり、整数の値を包含するオブジェクトへの参照ではありません。これらの型に関する操作は、"+" や "<" といった、前置演算子と中置演算子によって定義されます。

 これらの利便性の結果として、型システムは、統一され、整合性を保ちます。すなわち、基本型を含むすべての型は、参照型または拡張型のいずれかのクラスから定義されます。

 基本型の場合には、効率性の明白な理由のために、ISE Eiffel のコンパイル機構は、標準的な算術演算と論理演算を、ルーチン呼出しを通じてではなく、対応する機械語の演算を通じて直接実装します。しかし、このことは、コンパイラの最適化だけの問題であり、それは、型組織<type edifice>の概念的な一様性<homogeneity>を妨げるものではありません。

前節 目次 次節

Frequently requested pages

Questions? Comments? Let us know!

URL for this page: http://www.eiffel.com/doc/manuals/language/intro/types.maker.html.
Copyright 1994-1998 Interactive Software Engineering Inc. All rights reserved.