カプセル化とアクセサ
iPhoneアプリの開発でObjective-Cを利用している時,インスタンス変数の管理はどうしているだろうか。
例えば,
@interface file : NSObjet{ @public int width; int height; NSString *filename } @end
という風にすると変数に直接参照されて間違った変更などにより矛盾などが起きる可能性があったりする。
これらを起きない様にするためカプセル化する。interface内で,
@interface file : NSObjet{ @private int width; int height; NSString *filename } - (int) width; - (int) height - (NSString *) filename; - (void) setFilename:(NSString *) newFilename @end
とアクセサメソッドの宣言をして,implementation内で,
- (int) width{ return width; } - (int) height{ return height; } - (NSString *) filename{ return filename; } - (void) setFilename:(NSString *) newfilename{ filename = [NSString stringWithString: newFilename]; }
と定義する事で他のクラスからもアクセスできる様にすることができる。