Objective-C |
辞書:電算用語の基礎知識 プログラミング言語編 (PTPROGN) |
読み:オブジェクティヴスィー |
外語:Objective-C |
品詞:固有名詞 |
Cを拡張したオブジェクト指向プログラミング言語。C++とは別物である。
|
言語概要 |
概要 |
C++はCに対しSimula 67型のオブジェクト指向を導入したのに対し、Objective-CはSmalltalk型のオブジェクト指向を導入したものである。
NEXTSTEPで採用された。当時は既にC++もObjective-Cもあったが、どちらも普及はしていなかった。この何れかを選択するにあたり、NeXTはObjective-Cを選択した。
しかし時代はObjective-C側には傾かず、結果として普及したのはC++だった。このため、Objective-Cはマイナーな言語となっている。
NEXTSTEPの後継であるMac OS XのCocoaも、同様にObjective-Cが選択された。
特徴 |
オブジェクト |
Objective-CはCに対してオブジェクト指向を取り入れた言語である。同様の言語にC++があるが、そのアプローチの方法が全く違っている。
C++は構造体を拡張する形でクラスを導入した。Objective-Cは、オブジェクトの拡張に、Smalltalk風のCとは全く違う文法を取り込んでいる。
つまり、一つのプログラミング言語に、由来の全く異なる二つの言語が同居していることになる。このためObjective-Cは分かりにくい、として普及しなかった。
書式概要 |
オブジェクト指向プログラミングの機能等は、C++と大差ない。但し書式は全く違う。
クラス関係の定義について、Objective-Cは新しい予約語や構文を定義するのではなく、コンパイラーディレクティブが使われる。
クラスの定義は、@interface から始まり @end で終わる。ここで、クラス名と親クラス名、インスタンス変数、メソッドの宣言を行なう。
メソッド定義はクラス定義と分離されている。メソッド定義は、@implementation から始まり @end で終わる。
クラスのインスタンス化は、一般的なオブジェクト指向プログラミング言語と全く違い、次のように記述する。
[クラス名 メソッド名:引数リスト…]
このメッセージ式はid型を返すため、「id obj = [ClassName method];」のように記述することができる。例えば、富士山(MtFUJI)が噴火(eruption)する処理は、次のように書かれる。
id obj = [MtFUJI alloc];
[obj eruption];
allocメソッドでオブジェクトを生成し、生成したオブジェクトが返される。次に、そのオブジェクトのeruptionメソッドを実行している。
objを使い捨てにするのであれば、次のように書くことも出来る。
[[MtFUJI alloc] eruption];
[MtFUJI alloc]によって返されたid型オブジェクトに対し、eruptionメソッドを呼び出す。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |