u 클래스 정의

n         Interface : 한 클래스의 메소드와 인스턴스 변수를 선언하고, 어느 수퍼클래스로부터 상속을 받는지를 기입

헤더 파일인 *.h 파일에 정의

 

n         Implementation : 실지로 클래스를 정의하는 부분

구현 파일인 *.m에 구현

 

n         해더 파일과 구현부를 나누는 이유

외부에서 볼때 구현부를 독립해 접근 불가능

 

n         작성 요령

가능하면 1:1로 작성 이름을 통일

 

n         인터페이스 작성 예

@interface ClassName : ItsSuperClass

{

instance variables declaration..

}

method declarations

@end

 

n         메소드 선언시 옵션

-

Instance method

+

Class method

              메소드 선언시 인스턴스와 클래스메소드 같은 이름으로 생성 가능

              메소드 이름과 인스턴스 변수도 같은 이름으로 생성 가능

 

n         메소드 선언 예

-선언

- (void) setWidth: (float) width height: (float) height;

-사용

id *myRect = [[Rectangle alloc] init];

[myRect setWidth:12.2 height:18.0];

-가변적 변수수를 가진 메소드 선언

- makeGroup:group, …;

 

n         interface import

interface import C #include와 동일하나, import가 똑 같은 것을 한번만 가져오는 것만 inclue와 다름.

 

n         implementation 작성예

@implementation ClassName : ItsSuperclass -> superclass 생략 가능

{

    instance variable declarations -> 생략 가능

}

method definitions

@end

              간단히 쓰면,

#import "ClassName.h"

 @implementation ClassName

method definitions

@end

 

n         다른 클래스 참조

인터페이스에 선언되지 않은 클래스를 사용할 때

상호참조의 문제를 해결하기 위해 @class 지시자를 사용.

@class Rectangle, Circle;

이것은 단지 컴파일러에 이것이 클래스 이름이라는 것만 알려주는 역할

 

n         인터페이스 특징

인터페이스파일은 클래스의 참조현황을 파악하기 쉽게함

인스턴스 개체를 따로 관리함으로서 보다 직관적인 OOP를 가능하게 함

 

n         instance변수들의 사용범위를 설명한 지시자

@private

instance변수의 범위를 그것이 선언된 class 한정한다.(상속불가)

@protected

instance변수의 범위를 선언되고, 상속된 class 한정한다. (상속가능)

@public

instance변수의 범위에 대한 제한을 없앤다. (상속가능)

 

n         instance변수 범위 지정의 이유

슈퍼클래스 변수와의 독립성을 유지함으로서 보다 완벽한 오브젝트화 가능

 

n         다른 객체에 속한 인스턴스 변수사용 예

선언구현부

@interface Sibling : NSObject

{

Sibling *twin;

int gender;

struct features *appearance;

}

참조구현부

- makeIdentification

{

if( !twin)

{

twin = [[Sibling alloc] init];

twin->gender = gender;

twin->appearance = appearance;

}

return twin;

}

 

 

영문 레퍼런스트를 정리하다가 갑자기 생겨난 쓸데없는 오기..ㅡ.ㅡ
도움 되려나~ 


Posted by 김반장78
,