オブジェクト指向の用語定義
用語定義から入るのは堅苦しいのですが
オブジェクト指向に関する用語は言語によってまちまちなので
F#でのオブジェクト指向に関する用語の定義をまず引用してみます。
とりあえず飛ばしてしまって、
気になった語だけリファレンス的に見るのも良いと思います。
以下、F# 4.1 specにあればそこから、
無ければMicrosoftのドキュメントから引用しています。
- クラス(class)
- クラスは、オブジェクトを表す型であり、プロパティ、メソッド、イベントを持つことができます。
Microsoftのドキュメントのclass
- プロパティ(property)
- Propertiesは、オブジェクトに関連付けられる値を表すメンバーです。
プロパティは、オブジェクト指向プログラミングにおける "has a" リレーションシップを表し、
オブジェクト インスタンスまたは型 (静的プロパティの場合) に関連付けられるデータを表します。
Microsoftのドキュメントのプロパティ
- イベント(events)
- イベントはCLIの概念でlistening pointのことです。
つまり、しばしばマウスクリックやタイマーなどの外部のアクションによって
起動される、コールバックの集合を保持した設定可能なオブジェクトのことです。
Events are the CLI notion of a ―listening point,. that is, a configurable object holding a set of callbacks, which can be triggered, often by some external action such as a mouse click or timer tick.
F# 4.1 spec 8.13.10
- メソッド(method)
- メソッドは、型に関連付けられている関数です。
Microsoftのドキュメントのメソッド
- メンバ(member)
- 型定義とセットになった関数か、特定の型のこと
メンバ定義は型定義の中で使うことが可能
F#はプロパティメンバとメソッドメンバをサポートする
A function that is associated with a type definition or
with a value of a particular type.
Member definitions can be used in type definitions.
F# supports property members and method members.
F# 4.1 spec Glossary M
- プロパティメンバ(property member)
- その型の値を取得または設定する関数のこと
A function in a type that gets or sets data about the type.
F# 4.1 spec Glossary P
- メソッドメンバ(method member)
- 型、またはオブジェクトに関連づけられた操作のこと
An operation that is associated with a type or an object.
F# 4.1 spec Glossary M
プロパティはデータも含むものを表し、
プロパティメンバはいわゆるsetter/getter関数のことのようです。
また、フィールド(field)という用語もでてきます。
これもどちらにも定義が見つけられませんでしたが
少なくともクラス/構造体に使われる際に
valキーワードで宣言したデータのことはフィールドと呼ぶようです。
ややこしいのですが
仕様書ではレコードのデータのこともフィールドと呼んでいます。
- コアーション(coercion)
-
データの型を、ある型から別の型へ変換すること
The changing of data from one type to another.
F# 4.1 spec Glossary C
いわゆるキャストのことです。
キャストという単語も仕様書には出てきます。
F# 4.1 spec 6にはstatic upcast coercion(:>)と
dynamic downcast coercion(:?>)という形で出てきます。
以下、本サイトで使っているが、定義が見つからない用語。
記載がある箇所がわかれば、アップデートします。
現時点では、大体次のような意味で使うことにします。
オブジェクト(object)
newなどの構文で生成したもの
Object Expressionで生成したもの
子クラス(subclass)
Aの子クラスとは、Aを継承したクラスのこと。
たまに、孫クラス的なものも指して使うかもしれません
再帰的に定義すれば
Aの子クラスとは、Aを継承したクラスか、Aの子クラスを継承したクラスのこと
親クラス
子クラスとは逆の関係