Objective-C

読み:オブジェクティヴスィー
外語: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メソッドを呼び出す。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club