본문 바로가기
아이폰 개발/Objective C

1장 객체지향으로의 항해

by 인생여희 2020. 8. 23.

 

프로시저(함수) 기반에서 객체지향으로 이동

 

프로시저 언어의 기본단위는 함수 (function)이며 각 함수에 전달받은 인수와 전역변수를 통해 정해진 작업을 수행한다. 이렇게 구성된 각 모듈은 확장자가 h인 변수/함수 선언 파일과 확장자가 c인 변수/함수 정의 파일로 구성된다. 변수와 함수의 공유가 필요한 경우 필요한 선언 파일을 #include 구문으로 합쳐 사용하도록 한다.

 

동작의 주체는 각 함수이며 동작의 객체는 변수가 된다. 함수가 모여 하나의 모듈을 구성하며 모듈 내부에서는 임의의 변수를 서로 공유하여 함수가 협업하게 된다. 모듈 간 자료를 공유하려면 확장자가 h인 헤더파일이 서로 공유한다. 이러한 구성을 위해 변수와 함수는 선언과 정의로 나뉘게 된다.

 

 

객체지향 언어는 과거 프로시저 언어의 함수를 메소드로 정의하고 모듈 단위를 클래 스라는 개념으로 묶어준다. 즉, 클래스는 변수와 함수가 묶인 모듈과 같다. 이 클래스는 인스턴스라는 객체를 만들어 다른 클래스/ 인스턴스와 메소드를 호출(메시지)하면서 서로 원하는 동작을 수행한다. 객체지향 설계에서 프로그램이 동작하는 것은 인스턴스 간에 메시지를 보내 각 메소드를 동작시키는 것이다.

 

 

Objective C의 상속

NSObject 클래스

 

 

기본 입출력을 위한 구문

 

예제

위의 예제에서는 변수 p와 c값을 서로 다른 %p와 %@ 구분자로 표시하였이다. %p 구분자는 그 변수가 가진 포인터(주소값)을 16진수로 표시한다. 반면 %@ 구분자는 그 변수가 가리키고 있는 포인터(인스턴스 주소) 값과 함께 클래스 이름을 표시한다. %@ 구분자로 표시되는 내용은 NSObject 내부에 정의된 description이라는 메소드에 의해 구현된다. 만일 위와 같은 표시법 대신 다른 내용을 표시하고 싶으면 description 메소드를 다시 정의[Override, 오버라이드]하면 된다.

 

결과

더보기

100 331.790009 1.44e+11 14.4 w

2020-08-22 23:52:19.749790+0900 0101-NSLog printf[3446:560959] 0x103908360 <Parent: 0x103908360>

2020-08-22 23:52:19.750134+0900 0101-NSLog printf[3446:560959] 0x103908400 <Child: 0x103908400>

              char : 1

             short : 2

               int : 4

              long : 8

         long long : 8

unsigned      char : 1

unsigned     short : 2

unsigned       int : 4

unsigned      long : 8

unsigned long long : 8

             float : 4

            double : 8

CHAR_MIN   : -128

CHAR_MAX   : 127

SHRT_MIN   : -32768

SHRT_MAX   : 32767

INT_MIN    : -2147483648

INT_MAX    : 2147483647

LONG_MIN   : -9223372036854775808

LONG_MAX   : 9223372036854775807

LLONG_MIN  : -9223372036854775808

LLONG_MAX  : 9223372036854775807

UCHAR_MAX  : 255

USHRT_MAX  : 65535

UINT_MAX   : 4294967295

ULONG_MAX  : 18446744073709551615

ULLONG_MAX : 18446744073709551615

Program ended with exit code: 0

 

기본 자료형의 크기와 최소/최대 값

 

Objective C 언어는 프리컴파일 과정을 통해 C 언어로 변환 후 컴파일 된다.

 

 

0101-NSLog printf.zip
1.19MB

 

 

 

 

 

출처 : objective C&Swift 프로그래밍 (글:조영석, 그림:조선근 출판사 예문사)

'아이폰 개발 > Objective C' 카테고리의 다른 글

objective c 동적결합  (0) 2020.12.26
objective c 상속과 클래스  (0) 2020.12.25
objective c 프로그램  (0) 2020.12.25
objective c 객체 개념  (0) 2020.12.25
2장 클래스  (0) 2020.08.23