오브젝티브 C의 첫번째 블로깅..
한 한달 약간 안되는 기간동안..(사실 연구실에서는 다른 과제를 하느라 오브젝티브C공부한건 일주일도 안되는것 같다)
처음에는 전혀 감을 못 잡았는데, 이제 슬슬 뭔가 감이 오는것 같기도 해서
감을 까먹지 않기 위해! 블로깅을 해서 감을 유지하려고 한다..
사실 아이폰 어플 개발하려고 시작한 언어이고, C언어 조차 기본이 잘 안되어있고.. 객체지향은 당연히 안드로메다의 이야기..ㅠ
그렇기 때문에 내 실력은 형편이 없다..
하지만..시작이 반이라고.. 일단 시작을 해보자..
일단 오브젝티브 c를 시작하려면 Xcode라는 프로그램이 있어야 한다. 무료프로그램이고
애플 개발자 사이트에서
다운 받을수 있다. 위의 그림은 Quick Silver라는 프로그램으로 xcode를 런칭한 그림이다.
새 프로젝트를 만들면 위와 같은 화면이 나온다. 왼쪽에 보면 아이폰과 맥OS용 프로그램 이렇게 2가지로 만들수
있는데, 지금 당장은 아이폰 어플리케이션을 만들게 아니기 때문에 Mac OS X에서 Application탭을 누르고
Cocoa Application을 선택한다. 그리고 자신이 원하는 적절한 프로젝트 이름을 붙이면 프로젝트는 만들어진다.
프로젝트가 만들어지면 그림처럼 왼쪽에 Class, Other Sources등과 같은 부분이 나온다.
Class에는 헤더 파일이 들어가고 main함수는 그림에서와 같이 Other source폴더에 있다. objective c에서 파일 확장자는 .m이다.
main.m파일을 클릭하면 바로 밑에 창에서 내용을 확인 할 수가 있고, 더블클릭을 하게 되면 새 창에서 내용이 나온다.
C에서는 헤더 파일을 읽어들일때 #include라는 명령어를 쓰는데 objective c에서는 #import라는 명령어를 사용한다.
printf 함수를 사용하기 위해서 stdio.h를 import 시켰다.
그 다음은 클래스를 선언하고 구현하는 부분인데, 사실 이 부분은 따로 헤더파일로 만들어 주면 좋다.
나중에 소스가 길어지면 이런 클래스들이 메인 파일에 있는것보다 헤더 파일에 있는게 더 깔끔하고 알아보기 쉬울것이다.
지금은 복잡한 코딩이 아니니까 그냥 이렇게 썼다.
클래스를 선언하려면
@interface 클래스명: 슈퍼 클래스명
{
인스턴스 변수 선언;
}
메소드 선언
@end
이렇게 적는다. 인스턴스 변수는 다른 객체를 참조하는 포인터라고 보면 되는데 지금 소스에서는 따로 참조 할게 없기 때문에
비워두고 메소드만 선언을 하였다.
이렇게 선언된 클래스는 슈퍼 클래스의 모든 기능을 상속 받는다. 거기다가 자신만의 메소드가 추가 되었기 때문에
자식 클래스는 슈퍼 클래스 보다 더 넓은 개념이다.
자, 이렇게 Test라는 클래스를 선언하고 클래스 안에는 sayHello라는 메소드를 선언했다.
그렇다면 이 sayHello라는 메소드는 뭐하는 놈인지 '구현'을 시켜줘야 할것이다.
그 부분이 implementation부분이다.
@implementation 클래스 이름
메소드 정의
@end
이렇게 적는다. 위의 소스에서는 sayHello라는 메소드는 printf 함수를 실행시킨다는것을 알수 있다.
즉, interface에서는 내가 어떤 클래스를 만들것이고, 그 클래스에는 어떠어떠한 메소드를 할것이다 정해놓으면
implementation에서 실제 그 메소드의 기능을 구현 시켜주면 된다. 꽤 직관적인 방법인것 같다.
이제 클래스가 만들어졌으면 본격적으로 메인함수로 와서 코딩을 한다.
id 타입으로 sample이라는 놈을 만들고
sample = [[Test alloc] init];
이 명령은 sample이라는 녀석은 Test라는 클래스를 allocation 시켜서 initialize 했다는 말이다.
뭔 말인고 하니.. 변수 = [Class alloc]을 해줘야지 변수를 해당 클래스로 메모리에 공간을 확보할수 있다.
그리고 그 확보한 공간에서 객체를 사용하려면 초기화를 시켜줘야 하는데 이 초기화하는 메소드가 init이다.
코코아 환경에서 초기화 메소드이름은 대부분 init으로 시작한다(ex. initWith..)
따라서
sample = [[Test alloc] init];
를 하게 되면 sample이라는 Test클래스의 객체가 초기화 되어서 사용을 할수 있게 된다.
객체에서 메소드를 실행하려면 [객체 메소드]이렇게 적으면 된다.
[sample sayHello] 이렇게 하면
sample이라는 객체가 sayHello 메소드를 수행하라라는 말이다.
실제로 sayHello라는 메소드는 Hello world를 출력하는 메소드기 때문에 화면에 글자를 출력시켜준다.
사실 이렇게 간단하게 Hello world라는 글자를 출력시키는데는 굳이 클래스를 만들 필요도 없고
그냥 메인함수에서 printf만 써도 되기는 한다. 하지만 objective c에서 클래스 구현과 사용 방법을 알아보기 위해
위와 같이 약간 번거로운 작업을 하게 되었다.
빌드를 하고 실행을 하려면 command - R을하면 되고
실행된 콘솔 창을 확인하려면 shift - command - R을 하면 된다.
실행 된 콘솔 창이다. Hello world가 보인다! 성공!
Trackback Address >> 이 글에는 트랙백을 보낼 수 없습니다