Obj-C: Kenapa kita perlu Header file?

Obj-C: Kenapa kita perlu Header file?

December 7, 2011 Objective-C 0

Kenapa kita perlu mendeklarasikan Class ke dalam Header file dan Implementation file yang terpisah dari main.m? Tutorial kali ini akan mencoba menjawab pertanyaan tersebut dengan sebuah contoh program sederhana.

1) Buatlah sebuah Project baru (contoh: Test07) menggunakan template “Command line tool”.

2) Buka menu: File > New File. Pada dialog: “Choose a template for your new file”, pilihlah “Objective-C class” dan klik Next.

3) Pada dialog: “Choose options for your new file”, pilihlah “Subclass of NSObject” dan klik Next.

4) Pada dialog “Save As”, masukkan nama dari file Class anda (Contoh: MyClass) dan klik Save.

5) XCode akan menciptakan dua buah file yang baru berakhirdan *.h dan *.m. Dalam contoh kita, nama filenya: MyClass.h dan MyClass.m:

[sourcecode language=”objc”] //
// MyClass.h
//

#import <Foundation/Foundation.h>

@interface MyClass : NSObject

@end
[/sourcecode] [sourcecode language=”objc”] //
// MyClass.m
//

#import "MyClass.h"

@implementation MyClass

– (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}

return self;
}

@end

[/sourcecode]

6) Tambahkan prototype method anda pada bagian @interface file MyClass.h:

[sourcecode language=”objc”] //
// MyClass.h
//

#import <Foundation/Foundation.h>

@interface Kalkulator : NSObject
-(int)tambah:(int)x:(int)y;
+(int)kurang:(int)x:(int)y;
@end

int Kali(int,int);
[/sourcecode]

Pada contoh ini kita akan melibatkan tiga jenis method:

  • Instance method (tambah)
  • Class method (kurang)
  • C-Style method (Kali)

7) Buatlah implementasi ketiga Method di atas pada MyClass.m:

[sourcecode language=”objc”] //
// MyClass.m
//

#import "MyClass.h"

@implementation Kalkulator

– (int) tambah:(int)bil1:(int)bil2{
int x = bil1+bil2;
return x;
}

+ (int) kurang:(int)bil1:(int)bil2{
int x = bil1-bil2;
return x;
}

@end

int Kali(int bil1, int bil2){
int x = bil1*bil2;
return x;
}
[/sourcecode]

8) Editlah file main.m untuk menambahkan kode program yg nantinya akan menggunakan memanfaatkan ketiga Method di atas. Jangan lupa pula mencantumkan #import “MyClass.h”. Dan inilah isi lengkap file main.m:

[sourcecode language=”objc”] //
// main.m
//

#import <Foundation/Foundation.h>
#import "MyClass.h"

int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

// my code starts here
int a = 1;
int b = 2;
int c;
int d;

// contoh: menggunakan instance method
Kalkulator *KalkulatorKu = [[Kalkulator alloc] init];
c = [KalkulatorKu tambah:a:b];
NSLog(@"Hasil penjumlahan: %d + %d = %d n",a,b,c);

// contoh: menggunakan class method
c = [Kalkulator kurang:a:b];
NSLog(@"Hasil pengurangan: %d – %d = %d n",a,b,c);

// contoh: menggunakan C-style method
d = Kali(a,b);
NSLog(@"Hasil perkalian: %d x %d = %d n",a,b,d);
// my code ends here

[pool drain];
return 0;
}
[/sourcecode]

9) Klik tombol Run untuk mengeksekusi program. Inilah hasilnya:

10) Buka aplikasi Terminal dan masuklah ke dalam direktori sourcecode anda, dalam contoh saya: /Users/alwin/Programming/Test07. Ketikkan perintah berikut:

gcc -c MyClass.m

11) Perintah di atas akan membuat Object file dari source code MyClass.m. Buktikan dengan melihat isi dari direktori tersebut melalui perintah: “ls”

File MyClass.o adalah file object, yakni representasi biner dari kode program anda (MyClass.m). Isinya adalah kode-kode biner yg tidak bisa terbaca:

12) Sekarang anda dapat mendistribusikan program anda dalam bentuk File object (*.o) bersama file Headernya (*.h) tanpa perlu menyertakan file source-code (*.m atau *.c). Dengan demikian, kerahasiaan program anda terjaga karena orang lain hanya bisa menggunakan method anda tanpa bisa tahu isinya. Inilah salah satu kegunaan file Header!

Leave a Reply

Your email address will not be published. Required fields are marked *