Changes between Version 19 and Version 20 of Eiffel FAQ


Ignore:
Timestamp:
Aug 3, 2007, 1:11:12 PM (12 years ago)
Author:
KOBAYASHI, Shinji
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Eiffel FAQ

    v19 v20  
    1111Many people have noticed that openEHR uses the Eiffel language, and wonder whether openEHR needs to be written in Eiffel, or whether Eiffel is in some way special in openEHR. By way of background, Eiffel is an openly defined language, has its own Non-profit International Consortium for Eiffel (an international user group) and ECMA formal standardisation process. It has a number of commercial implementations (ISE, Object Tools), an official open source compiler ("!SmartEiffel") and large numbers of libraries.
    1212
    13 EiffelはopenEHRでは主にCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。実際には,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされており、完全なオブジェクト指向言語です。それはUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できるという意味で生産性の高い言語であり、C++を除いてこうしたことが可能な唯一の言語です。しかしながら,C++とは異なり、メモリ構造のような実装の詳細には拘束されません。さらに,他に普及している生産的な言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが誕生する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「アサーション(明)」とよばれるもので,事前条件,事後条件とクラスアサーションを含みます。これらの命令文によりクラスモデルの状態を正確に定義することができます。
     13EiffelはopenEHRでは主にCASEツールとして使われています。どうしてプログラミング言語をCASEツールとして使うのか,どのように使っているのか,少し奇妙に感じるかもしれません。実際には,Eiffelは他のプログラミング言語とは少し違うところがあります。まず,型付けが完全になされており、完全なオブジェクト指向言語です。それはUMLのすべてのセマンティクス(特に「総称」(genericity)クラスや多重継承,ポリモルフィズム,selective export)を実装できるという意味で生産性の高い言語であり、C++を除いてこうしたことが可能な唯一の言語です。しかしながら,C++とは異なり、メモリ構造のような実装の詳細には拘束されません。さらに,他に普及している生産的な言語とは異なり,OCL(OMG Object Constraint Language)と同等の実装がなされています。「同等」というのは,OCLが誕生する15年も前からEiffelが実現していたことですから。openEHRに関係のあるOCLの重要な特徴は「アサーション(明)」とよばれるもので,事前条件,事後条件とクラスアサーションを含みます。これらの命令文によりクラスモデルの状態を正確に定義することができます。
    1414
    1515Eiffel is used in openEHR as its primary CASE tool. This may sound a little strange - why use a programming language as a CASE tool; how? In truth, Eiffel is a little bit different from other programming languages. Firstly, it is a fully formal, fully object-oriented language, the only production language apart from C++ which implements all the semantics of UML (in particular, genericity (i.e. 'template' classes), multiple inheritance, polymorphism, selective export). However, unlike C++, it has no connection with implementation details, such as memory structures. In addition, unlike any other production language available, it implements the equivalent of OCL, the OMG Object Constraint Language. "Equivalent" because Eiffel did this 15 years ago, long before OCL came into existence. The key features of OCL which are relevant to openEHR are called "assertions", which include function pre-conditions, post-conditions, and class assertions. These statements allow us to define the correctness conditions of a class model.