클래스는 State와 Behavior를 선언한다.
State (Data)는 인스턴스 변수들을 통해서 관리된다.
Behavior는 함수를 통해 구현된다.
인스턴스 변수들은 일반적으로 숨겨져 있다.(getter/setter methods를 통해서만 접근할 수 있다.)
State는 flag, count와 같이 해당 객체의 상태를 나타내는 값으로, 변수들에 의해 관리되며,
Behavior는 이러한 State를 변경, 또는 조회하기 위한 통로를 제공한다.
[객체 메세지 전달]
객체에 명령을 주려면 그 객체에 명령 메시지를 보냄으로써 가능하다. Objective-C에서 메시지는 대괄호를 사용하여 표현한다.
[receiver message]
[receiver message:argument]
[receiver message:arg1 andArg:arg2]
여기서 수신자(Receiver)는 객체이고, 메시지(Message)는 어떤 명령을 할 것인지를 말해준다.
예를 들면 아래의 메시지는 myRect라는 객체에 display라는 메서드를 실행하라는 메시지 전달 표현이다.
[myRect display];
[myRect setWidth:20.2];
이 경우 메서드 이름에 콜론(:)을 붙이고 바로 인자를 넣으면 됨. 하지만 여러개의 인자를 받도록 정의된 함수의 경우에는 그 인자를 대표하는
키워드도 함께 써줘야함.
(함수 선언)
-(void)setOriginX:(NSFloat)originx y:(NSFloat)originy;
(함수 사용)
[myRect setOriginX:20.0 y:50.0];
[예제]
//Person이라는 클래스가 있다고 가정
Person *person;
//Person의 이름을 표시하는 함수를 호출하는 메시징
[person displayName];
//Person의 나이를 가져오는 메시징
int theAge = [person age];
//Person의 나이를 바꾸는 setAge 함수 호출
[person setAge:21];
//Person의 정보를 바꾸는 setInformation 함수 호출
[person setInformation:@"김철수" age:35];
//중첩된 표현(Nested Expression)
[myRect setPrimaryColor:[otherRect primaryColor]];
점(.)을 이용하는 방법
아래는 모두 같은 의미임
float height = [person height];
float height = person.height;
[person setHeight:newHeight];
person.height = newHeight;
[[person child]setHeight:newHeight];
person.child.height = newHeight;
* 정적 유형 객체는 클래스 포인터로 선언된다.
NSArray *myarray;
* 동적 유형 객체는 id로 선언된다.
id anObject;
동적 유형 객체의 클래스는 런타임 때 결정되므로, 개발자는 클래스에 관한 지식이 없어도 코드에서 객체를 참조할 수 있다는 장점이 있다.
[클래스 정의] Objective-C에서는 클래스를 크게 두 부분으로 나누어 정의한다.
* 정의부분(.h) - interface
* 구현부분(.m) - implementation
#import 와 @class의 차이점은
import는 상위 클래스 상속을 위해
class는 import할 수 있지 않은 상속 구조상에 있을 때 참조하고자 할 때
인스턴스 변수의 범위
@interface Worker : NSObject {
char *name;
@private
int age;
char *evaluation;
@protected
id job;
float wage;
@public
id boss;
}
'Mobile > Object-C' 카테고리의 다른 글
ObjectiveC 11강 - Self와 Super (0) | 2010.10.01 |
---|---|
ObjectiveC 10강 - property와 setter/getter (0) | 2010.10.01 |
ObjectiveC 9강 - 본격적인 객체지향 프로그래밍 (0) | 2010.10.01 |
ObjectiveC 8강 - 조건, 반복문 (0) | 2010.10.01 |
ObjectiveC 7강 - 데이터형과 표현식 (0) | 2010.10.01 |