検索

カレンダー

2009年9月
« 8月   10月 »
 123456
78910111213
14151617181920
21222324252627
282930  

広告

東電電力供給情報

カテゴリー

最近のコメント

リンク

Ubuntu9.04にObjective-Cコンパイラをインストールしてみた の続き

投稿者:yasu 更新日時:2009年9月15日 10時27分17秒
カテゴリObjective-C, Ubuntu

前回UbuntuにObjective-Cのコンパイラをインストール、さらには簡単なプログラムをコンパイルして実行までやりました。

が、作ったプログラムが全然Objective-Cっぽくないので、今回はObjective-Cっぽい簡単なプログラムを試してみたいと思います。

まずhello.hファイルを作って以下のように記載します。

C:
  1. #import <objc/Object.h>
  2.  
  3. @interface Personal : Object
  4. {
  5.     int height, weight, age;
  6. }
  7. - (void)setInfo: (int)height: (int)weight: (int)age;
  8. - (void)printInfo;
  9. @end

続いてhello.mファイルを以下のように記載します。

C:
  1. #import <objc/Object.h>
  2. #import "hello.h"
  3.  
  4. @implementation Personal
  5. - (void)setInfo: (int)height: (int)weight: (int)age {
  6.     self->height = height;
  7.     self->weight = weight;
  8.     self->age = age;
  9. }
  10.  
  11. - (void)printInfo {
  12.     printf("あなたは身長%dcm、体重%dkg、年齢%d歳です\n", self->height, self->weight, self->age);
  13. }
  14. @end
  15.  
  16. int main() {
  17.  
  18.     id personal = [Personal alloc];
  19.     [personal setInfo: 175: 75: 33];
  20.  
  21.     [personal printInfo];
  22.  
  23.     return 0;
  24. }

続いてコンパイルをします。

ubuntu@ubuntu-desktop:~/c$ gcc hello.m -lobjc
hello.m: In function ‘-[Personal setInfo:::]’:
hello.m:6: 警告: local declaration of ‘height’ hides instance variable
hello.m:7: 警告: local declaration of ‘weight’ hides instance variable
hello.m:8: 警告: local declaration of ‘age’ hides instance variable
クラス変数とメソッドの引数の名前が重複しているので警告が表示されますが、プログラム上はselfをつけて明示的に使いわけているのでこの警告は無視しても大丈夫です
ubuntu@ubuntu-desktop:~/c$ ./a.out
あなたは身長175cm、体重75kg、年齢33歳です

という感じでObjectiveな感じのプログラムが完成しました。
Objective-Cのソースコードを最初見たときはとっつきにくそうな言語だなぁと思ったのですが、実際にコードを記述してみると意外といけそうな気がしてきました(←単純)