1 / 17

CHAPTER2 오브젝트 C 프로그램

CHAPTER2 오브젝트 C 프로그램. 오정민 5 월 6 일. 매뉴. 0. Object C - 왜 오브젝트 C 일까 ? 1. 객체와 메시지 - NSObject - ID - 메시지 표현식 - 메시지 셀렉터 - 인스턴스 의 생성과 초기화 2. 클래스정의 - 클래스인터페이스 - 클래스의 구현 & 정의 3. 컴파일 - 간단한 컴파일방법 - 분할 컴파일 4. 프로그램 개발 방법 - C 언어 함수의 이용 방법 - 헤더 파일의 임포트.

elvina
Download Presentation

CHAPTER2 오브젝트 C 프로그램

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHAPTER2오브젝트C 프로그램 오정민 5월 6일

  2. 매뉴 • 0. Object C • - 왜 오브젝트C일까? • 1. 객체와 메시지 • - NSObject • - ID • - 메시지 표현식 • - 메시지 셀렉터 • - 인스턴스 의 생성과 초기화 • 2. 클래스정의 • - 클래스인터페이스 • - 클래스의 구현 & 정의 • 3. 컴파일 • - 간단한 컴파일방법 • - 분할 컴파일 • 4. 프로그램 개발 방법 • - C언어 함수의 이용 방법 • - 헤더 파일의 임포트

  3. - 오브젝트 C-왜 오브젝트C일까? • 맥에서 사용하는 기본 라이브러리들이 오브젝트C 로 이루어져있다. • 오브젝트 C 는 자바와 같은 매니지드 언어가 아니고 네이티브 언어기 때문에 가볍고 빠르다. • C++보다 객체지향 개념이 직관적이고 유연성도 좋다. • 코드의 가독성이 상당히 우수하다. • 이러한 이유들로 요즘은 C를 배운뒤C++이 아닌 오브젝트C를 배우는 사람들이 늘고 있다.

  4. -객체와 메시지-1. NS오브젝트 Alloc(인스턴스생성) 이외에도 여러 가지 있음. NSObjec -> • 오브젝트 C는 이것을 상속받거나 #import 한다. • 이것은 객체를 인스턴스화해주거나 소멸해주고 객체관리를 위한 자료형 이나 메서드를 지원해준다. • 이것은 오브젝트 C의 문법을 활용할 수 있는 기본적인 클래스이며 상속이나 임포트를 하지 않을 경우엔 C나 C++의 문법을 써야 한다. id

  5. -객체와 메시지- 2. ID CMap (class) • NSObject(클래스)가 지원 하는 특수한 type이다. • 인스턴스화 되어진 객체를 가리킬 수 있으며가리켜진 객체는 RunTime시에 암묵적으로 존재하는 isa란 메서드를통해 접근을 한다. • C++의 void*와 유사하다.(다른점도 있다) instance Object C id c_pPoint; C++ Void* c_pPoint; CEnemy (class) instance

  6. -객체와 메시지- 3. 메시지 표현식 오브젝트 C의 예 C++ 의 예 • 메시지 명을 통해 메서드를 호출하라는 호출하는 메시지를 보낸다. • 메시지 명은 메서드의 호출과 인자의 설명을 위한 일종의 detail한 변수다. • 인자가 두개 이상 이라도 하나의 메서드 에선 하나의 메시지 명으로 구분된다. • 인자의 갯수는: 의 수와 일치하며 : 앞에 메시지키워드는 생략 할 수 있다. • 인자를 사용할 경우 메시지 명 뒤에 : 를 붙여 준다. [map randermap]; = map->randermap(); 메시지명 = 매개변수 = 매개변수의 타입 = 호출할 때 쓰이는 함수 명/메시지 명 //메서드선언부(class CMap) (int) setmapx : (int)asetmapy : (int)b; //메서드호출부 [map setmapx : 10setmapy : 30]; //메서드선언부(class CMap) intSetPos(intsetmapx, intsetmapy); //메서드호출부 Map->SetPos(10, 30); =

  7. -객체와 메시지- 4. 메시지 셀렉터 • 메시지 셀렉터는 메시지 명을 비교하여 구분해주는 일종의 관리자 이다. • 메시지 셀렉터는 메시지명의 철자가 하나라도 틀리면 서로 구분을 해준다. • : 도 비교대상의 일부로 간주한다. 메시지 셀렉터(비교작업) 메시지명 Setmapsize: setmapsize: setmapposx: setmapposy:

  8. -객체와 메시지- 5. 클래스의 생성과 초기화 • alloc라는 메시지를 보내서 인스턴스를 만든다. • 만들어진 인스턴스를id형 타입의 변수가 가리킨다. • init이라는 메서드는 C++의 초기화 함수다. • 이것은 이니셜라이져 나 초기화 메서드 라고 부른다. • 초기화 메서드 이름은 init이나 init뒤에 추가적으로 더 붙일 수 있다. C++ 클래스명인스턴스; 인스턴스= new 클래스명; 인스턴스->init(); 오브젝트C [[id형변수alloc]init] =

  9. -클래스의 정의-1. 클래스 인터페이스 • @interface 클래스명: 상속받는 부모 클래스명{ • //인스턴스 변수 선언; • intval; • } • //메서드 선언; • - (int) value : (int)a; • @end • //구현부 • @implementation 클래스명 • - (int) value : (int)a { • return val+a; • } • @end • @interface 는 정의 하는 헤더 파일의 시작을 의미하며 인스턴스 변수의 선언과 메서드의 선언을 정의하는 부문이다. • @implementation 는 구현하는 .m파일 (C++에선 .cpp) 의 시작을 의미하며 메서드의 기능을 구현하는 부문이다. • @end는 컴파일러 지시자로 끝을 의미한다.

  10. -클래스의 정의-2. 클래스의 구현 & 정의(1) Map • - (void) init; • 메서드 앞에는 -나 +란 기호를 기입하게된다. • id map = [[Map alloc] init]; • 메서드alloc은 클래스 Map가 상속받은 NSObject의 메서드이며 동적 할당을 받지 않은 상태에서 바로 호출을 하고 있다. NSObject - ? + ? - ? + ? alloc init

  11. -클래스의 정의-2. 클래스의 구현 & 정의(2) • + 메서드는 객체를 생성(인스턴스화)하지 않아도 사용이 가능한 메서드 이고 - 메서드는인스턴스화한 후에 사용 가능한 메서드가 된다. • 이것을 보통 클래스 메서드(+) 인스턴스메서드(-)라 부른다. • NSObject도 객체들과마찬가지로 초기화 메서드가 있다. • self = [super init]; 이것을 풀이하자면 이렇다. • 지금 나의 위치에서 상속받은 부모객체의 init을 호출한다. Map NSObject - + alloc init

  12. -컴파일-1. 간단한 컴파일방법 • 오브젝트C에서는 #include 가아닌 #import를 쓰게 된다. 기본적으로 같은 역할을 한다. • 오브젝트 C의 소스파일 확장자는 .m이다여기서 .m은 모듈을 뜻하며 C언어로 비교하면 .c나 .cpp를 뜻한다. • 프로젝트를 저장 할때는All Files를 선택하여 저장하면 된다. #import == #include !=

  13. Class -컴파일-2. 분리 컴파일 클래스명 . c C 문법 • 분리컴파일은 C++과 거의 비슷하다. • C언어의 문법이 포함될경우.C, C++언어의 문법이 포함될경우.mm, 오브젝트C의 문법이 포함될경우 .m로 #import하면 된다. Class Class 클래스명 . m 클래스명 . mm NSObject C++ 문법

  14. -프로그램 개발 방법-1. C언어 함수의 이용 방법(1) • 오브젝트C는 메서드정의 안에서도 C언어의 함수를 호출할 수 있다. • C언어의 함수를 쓰는 이유는 오브젝트의 메서드 보다 호출이 빠르기 때문이다. 이것은 절차지향과 객체지향적인 부분을 잘 조합해서 구현한다는 것에 의미가 있다. • 오브젝트C의 메서드와 C언어의 함수를 적절히 조합하여 쓰는 것이 최선이라 생각된다.

  15. -프로그램 개발 방법-1. C언어 함수의 이용 방법(2) #import “map.h” • static id size(int p) • { • val += a; • Return self; • } • @implementation 클래스명 • static int value(int a) • { • return val + a; • } • - (int) value : (int) a { • return val + a; • } • @end • @implementation 와 @end 사이에 함수나 메서드가 있는 경우에는 현재(this)클래스 안에 종속 되어있는 것이지만. 그 범주 밖에 위치한다면(void size(int p)) 전역으로 처리해버린다. 즉 저 클래스의 인스턴스가 만들어지는 시점으로 프로그램이 종료되거나 인스턴스의 소거되기 전까지는 어디서든 접근이 가능하다는 것이다. 이것의 위험성은 알 것이다.

  16. -프로그램 개발 방법- 2. 헤더 파일의 임포트 • 오브젝트C에서는 #import를 사용한다. • 같은 헤더 파일이 여러 번 읽히더라도 한번만 포함되도록 하기 위해 #import를 사용한다.

  17. 감사합니다

More Related