|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 派 : [は] 1. (n,n-suf) clique 2. faction 3. school ・ 派生 : [はせい] 1. (n,vs) derivation ・ 生 : [せい, なま] 1. (adj-na,n,adj-no) (1) draft (beer) 2. draught 3. (2) raw 4. unprocessed ・ 型 : [かた] 【名詞】 1. mold 2. mould 3. model 4. style 5. shape 6. data type
コンピュータサイエンスにおいて、データ型S が他のデータ型T とis-a関係にあるとき、S をT の派生型(はせいがた、)であるという。またT はS の基本型(きほんがた、)であるという。基本型のデータを処理するように作られたプログラムは、その派生型のデータでも正しく処理することができる。つまり、基本型-派生型関係ではリスコフの置換原則(''Liskov Substitution Principle'')が成り立つ。とは言っても、実際のプログラミング言語では独自の型の派生()の概念を採用していることもあり、またそのような概念を持たないこともある。 == 例 == 例をとおして、派生型について考える。「鳥」という基本型と「アヒル」「ガチョウ」「ハクチョウ」という3つの派生型を仮定する。それぞれの派生型は「鳥」という抽象概念を別々の形で具体化しているが、「鳥」としての多くの特徴を継承し共有している。データは4つのうちのどの型のインスタンスとしても宣言できる。 ほとんどのクラスベースオブジェクト指向言語では、サブクラスが派生型の概念を実現している。A がB のサブクラスだったなら、A のインスタンスはB のインスタンスが期待されるあらゆる場面で使用可能となる(インタフェースの継承)。それゆえA はB の派生型であるといえる。ここで重要なことは、B を型として宣言された変数は実行時にA 型の値を持っているかもしれない、ということである。多くのオブジェクト指向プログラマはこの状況を、B をその変数の静的型、A をその変数の動的型である、と表現する。 この規則の例外には、派生型を作らずに実装の継承ができる言語(private inheritanceのあるC++など)や基本型から継承した機能を派生型で取り除くことができる言語(Eiffelなど)がある。 別の例を考える。浮動小数点数と整数で同じコードを共有したい場合に、整数が浮動小数点数の派生型となる場合と、整数と実数を包含する number 型が定義されている場合が考えられる。プログラマは型の派生を利用することで、それを使わない場合よりも抽象化したコードが書けることがある。function max (x as number, y as number) if x < y then return y else return x end この関数には整数と実数のどちらの値でも渡すことができる。このため、型の派生はポリモーフィズムの一形態と考えられることが多い。上記の例はC++のテンプレートとも比較される。 型理論においては、派生型関係は<:と表記される。つまり、A <: Bという表記はA はB の派生型であるという意味である。型理論における型の派生は、A <: Bならば型A を持つ式はどれでも型B をも持つという事実によって特性付けられる。この形式的な推論規則は「包摂」として知られている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「派生型」の詳細全文を読む スポンサード リンク
|