一番初めのObjective-CプログラムCocoaの素、Objective-Cを知ろう(2)(1/3 ページ)

iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう(編集部)

» 2008年10月08日 00時00分 公開
[竹下肯己株式会社 qnote]

 第1回「Objective-Cは特殊な言語?」では、Objective-Cのコードの「見た目」の第一印象に基づいて、この言語の特徴的な部分と、その成り立ちについて解説しました。

 今回は、ごく簡単なプログラムを実際に作って動かしてみることで、より具体的な領域に踏み込んでみたいと思います。

少しだけ複雑なHello World

 こういった場面で最初に作られるのは、たいてい「Hello World」という文字列を表示するプログラムです。ここでも、最終的には文字列を表示することを目的とするシンプルなプログラムを作成しますが、そこに至る過程をほんの少しだけ複雑にして、Objective-Cの基本的なプログラム構築手順を体験できるように工夫してみましょう。

 なお、この連載ではソースファイルの作成に特別なツールを使わず、すべて通常のテキストエディタを使用しています。また、ファイル形式は必ずプレーンテキストとし、文字エンコーディングにはUTF-8を指定してください。

クラスの宣言と実装でファイルを2つ作る

 この時点で実用的なプログラムの作成は望むべくもありません。むしろ、クラス構造の作成をシンプルに体験できるように、現実世界の事象をプログラムでシミュレートするというオブジェクト指向学習の常とう手段を採用してみましょう。

 作成するプログラムは、「歌い手さんに歌を歌わせるだけ」という、音楽プロデューサの仕事を極端に単純化したものです。このプログラムは、歌を表すクラス「Song」、歌い手を表すクラス「Singer」、そして歌い手に歌を渡して歌わせるための実行プログラムの3つの要素から成り立っています。

 ソースファイルレベルでの構造は、次の図のようになります(作成するファイルは5つです)。

 前回に少し触れたとおり、Objective-Cのクラス定義は宣言と実装の2つのブロックから成り立つのですが、通常これらはそれぞれ独立したファイルとして作成します。つまり、クラスを1つ定義するたびにファイルを2つ作成することになるわけです。

 クラスの宣言部分はヘッダファイルと呼ばれ、拡張子「.h」で作成します。一方、クラスの実装部分は拡張子「.m」で作成します。なお実行プログラムの部分は通常はクラス定義を含まずmain関数が中心となるため、単一のファイル(これも拡張子は「.m」)で作成します(上記の図ではmain.mがこれに該当します)。

 クラスの実装部分を記述するファイルでは、対応するクラスの宣言部分(ヘッダファイル)を読み込む必要があります。また、あるクラスの中で別のクラスを利用する場合にも、必要なだけクラスのヘッダファイルを読み込まなければなりません。Foundationなどフレームワーク内のクラスを利用する場合も同様です。

 ヘッダファイルの読み込みを指示するには、各ファイルの先頭に「#import」で始まる文を記述します。これにより、そのファイルのコンパイルが実行される前に、必要なファイルの読み込みが行われます。このような、「#」で始まるコンパイルの前処理の指示を「プリプロセッサ命令」と呼びます。

 なお、上記の図では、Singer.hでSong.hの読み込みが指示され、さらにmain.mではSong.hとSinger.hの両方の読み込みが指示されているので、main.mにおいてSong.hが2度読み込まれているように見えますが、#importでは同一のヘッダファイルが2重に読み込まれることはありません。

 では、上記の構造を意識しながら、実際のプログラムを作成していきましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。