Objective-C 데이터 캡슐화
모든 Objective-C 프로그램은 다음 두 가지 기본 요소로 구성됩니다.
Program statements (code) − 이것은 동작을 수행하는 프로그램의 일부이며 메서드라고합니다.
Program data − 데이터는 프로그램 기능의 영향을받는 프로그램의 정보입니다.
캡슐화는 데이터를 조작하는 데이터와 함수를 결합하고 외부 간섭 및 오용으로부터 안전하게 보호하는 객체 지향 프로그래밍 개념입니다. 데이터 캡슐화는 중요한 OOP 개념으로 이어졌습니다.data hiding.
Data encapsulation 데이터와이를 사용하는 기능을 번들링하는 메커니즘입니다. data abstraction 인터페이스 만 노출하고 구현 세부 정보를 사용자에게 숨기는 메커니즘입니다.
Objective-C는 다음과 같은 사용자 정의 유형 생성을 통해 캡슐화 및 데이터 숨김 속성을 지원합니다. classes. 예를 들면-
@interface Adder : NSObject {
NSInteger total;
}
- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;
@end
변수 total은 비공개이며 클래스 외부에서 액세스 할 수 없습니다. 즉, 프로그램의 다른 부분이 아닌 Adder 클래스의 다른 멤버 만 액세스 할 수 있습니다. 이것은 캡슐화가 달성되는 한 가지 방법입니다.
인터페이스 파일 내의 메서드에 액세스 할 수 있으며 범위 내에서 공용입니다.
의 도움으로 작성된 개인 방법이 있습니다. extensions, 우리는 다음 장에서 배울 것입니다.
데이터 캡슐화 예
공용 및 개인 멤버 변수로 클래스를 구현하는 Objective-C 프로그램은 데이터 캡슐화 및 데이터 추상화의 예입니다. 다음 예를 고려하십시오-
#import <Foundation/Foundation.h>
@interface Adder : NSObject {
NSInteger total;
}
- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;
@end
@implementation Adder
-(id)initWithInitialNumber:(NSInteger)initialNumber {
total = initialNumber;
return self;
}
- (void)addNumber:(NSInteger)newNumber {
total = total + newNumber;
}
- (NSInteger)getTotal {
return total;
}
@end
int main(int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Adder *adder = [[Adder alloc]initWithInitialNumber:10];
[adder addNumber:5];
[adder addNumber:4];
NSLog(@"The total is %ld",[adder getTotal]);
[pool drain];
return 0;
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
2013-09-22 21:17:30.485 DataEncapsulation[317:303] The total is 19
위 클래스는 숫자를 더하고 합계를 반환합니다. 공개 회원addNum 과 getTotal 외부 세계에 대한 인터페이스이며 사용자는 클래스를 사용하기 위해이를 알아야합니다. 개인 회원total 외부 세계에는 숨겨져 있지만 수업이 제대로 작동하려면 필요합니다.
전략 설계
우리 대부분은 실제로 공개 할 필요가없는 한 클래스 멤버를 기본적으로 비공개로 만드는 비열한 경험을 통해 배웠습니다. 그냥 좋다encapsulation.
Objective-C를 포함한 모든 OOP (Object-Oriented Programming) 언어의 핵심 기능 중 하나이기 때문에 데이터 캡슐화를 이해하는 것이 중요합니다.