반응형
상속 : 새 클래스를 생성할 때 이미 존재하는 다른 클래스와 차이점만 새로 정의. 부모의 특성을 상속받음.
컴포지션 : 객체가 다른 객체에 대한 참조를 갖는 것.

상속문법
@interface Shape : NSObject
Shape는 NSObject를 상속받음. 
자식클래스 : 부모클래스 이러한 방식으로 정의
NSObject : COCOA에서 사용하는 클래스. 

@interface Shape : NSObject
{
ShapeColor fillColor; // enum 혹은 struct로 정의
Shape bounds; // enum 혹은 struct로 정의
}
- (void) setFillColor: (ShapeColor) fillColor;
- (void) setBounds: (ShapeRect) bounds;
- (void) draw;
@end
@interface Circle:Shape
@end
@interface Rectangle:Shape
@end

@implement Shape
- (void) setFillColor: (ShapeColor) c
{
fillColor = c;
}
- (void) setBounds: (ShapeRect) b
{
bounds = b;
}
- (void) draw {} 
// 메소드의 몸체가 비어 있거나 의미 없는 값을 사용해도 괜찮다. 자식 클래스에서 재정의 가능하므로.
@end

리팩토링 : 어떤 다른 내용을 추가하고 나서 중복된 내용을 제거하는 것.

용어
superclass(슈퍼클래스) : 상속을 주는 클래스. superclass(슈퍼클래스) = 부모 클래스.
subclass(서브클래스) : 상속을 받는 클래스. subclass(서브클래스) = 자식 클래스.
override(오버라이드) : 상속받은 메소드를 바꾸고 싶을 때 구현에서 변경하는 것.
예시)
@implement Rectangle
- (void) draw // 위의 draw 메소드 오버라이드
{
NSLog(@"drawing rect at (%d %d %d %d) in %@", bounds.x bounds.y, bounds.width, bounds, height, colorName(fillColor));
}
@end

method dispatching(메소드 디스패칭)
method dispatcher(메소드 디스패처)가 현재 클래스에서 메소드를 찾는다. dispatcher(디스패처)가 메세지를 받은 객체의 클래스에서 메소드를 찾기 못하면 그 객체의 슈퍼 클래스를 찾는다. 상속으로 연결된 모든 클래스 사이에서 이 과정이 반복된다. 최상위 슈퍼클래스에도 그 메소드가 없다면 런타임 에러를 발생한다.

서브클래스는 슈퍼클래스이다. (is a 관계, Subclass is a superclass.)
다형성(polymorphism) : 객체에 특화된 종류를 사용하는 기능.
모든 - 메소드는 사용할 인스턴스 변수(필드)를 찾기 위해 self 파라미터를 사용한다. (=this)

추상클래스, 제네릭(Generic) : 아무 기능을 하지 않는 메소드를 가진 클래스.
super : 슈퍼클래스에게 메세지를 보내라는 뜻. 자바의 super와 비슷함.

반응형

'Objective C' 카테고리의 다른 글

3장 객체지향 프로그래밍의 소개  (0) 2010.06.07
2장 C의 확장  (3) 2010.06.07
반응형
인다이렉션 : 코드에 있는 값을 바로 사용하지 말고 그 값을 가리키는 포인터를 사용하라.
메소드 호출 : 메세지를 보낸다 라는 뜻. 다음처럼 객체에게 작업을 수행하라고 지시함.
[객체변수명 메소드명];

클래스 : 객체의 타입을 나타내는 구조체.
객체, 인스턴스 : 값과 클래스를 가리키는 숨어있는 포인터를 가진다.
메세지 : 객체가 수행하는 액션.
메소드 : 메시지에 반응하는 코드. 
메소드 디스패처 : 특정 메세지에 어떤 메소드가 반응하게 되는지 알기 위해 Objective C가 사용하는 방법. 상속과 관련.

인터페이스 : 객체의 클래스에 의해 제공되는 내용의 설명.
구현 : 인터페이스가 동작하도록 하는 코드.

@interface
메소드 선언
 - (리턴형) 메소드명;
 - (리턴형) 메소드명: (타입)인수의 변수, ...;

@implement
인스턴스 변수(instance variables, ivars) : 객체의 로컬 변수
id : 종류에 상관없이 객체를 가리킬 수 있는 포인터
self : this와 같은 뜻. 자기 자신의 객체를 가리키는 포인터.
new : 새 객체를 만든다.
ex) shape[0] = [Circle new]
반응형

'Objective C' 카테고리의 다른 글

4장 상속  (0) 2010.06.19
2장 C의 확장  (3) 2010.06.07
반응형
프레임워크 : 여러부분(헤더파일, 라이브러리, 이미지, 사운드 등) 이 모여서 하나의 단위로 묶여 있는 컬렉션. 코코아, 카본, 퀵타임, OpenGL 등의 기술을 프레임워크로 배포.
import : 빠르게 로드되는 헤더의 형태로 압축하고 미리 컴파일된 헤더를 사용해서 속도를 높임.
NSLog(문자열,...) 
 - 콘솔에 텍스트를 출력하기 위해 코코아가 제공하는 함수.
 - 시간, 날짜, 새라인을 자동으로 넣어주는 기능이 포함됨.
코코아의 접두사 : NS(Next Step)
@ : 오브젝티브 C의 확장을 의미.
@"" : 코코아의 NSString 요소로 처리해야 한다는 뜻
NSString : 
 - 문자열의 길이를 알려줌.
 - 다른 문자열과의 비교
 - 정수 또는 실수로의 값 변환
typedef BOOL char 
YES는 정확히 1의 값, NO는 0의 값.
반응형

'Objective C' 카테고리의 다른 글

4장 상속  (0) 2010.06.19
3장 객체지향 프로그래밍의 소개  (0) 2010.06.07

+ Recent posts