THIS IS ELLIE

오브젝티브씨 클래스 본문

개발/Objective-C

오브젝티브씨 클래스

Ellie Kim 2020. 1. 14. 00:14

먼저 클래스란 무엇일까요?

클래스는 데이터와 데이터를 다루는 행위를 정의하는 것입니다.

또한 객체 상태를 나타내는 필드와 객체 행동을 나타내는 메소드로 구성됩니다.

 

엥 갑자기 객체? 그럼 클래스는 뭐고 객체는 뭘까요?

클래스와 객체의 차이에 대해서 학교 다닐때 부터 많이 많이... 들었을 겁니다.

붕어빵 틀... 그리고 붕어빵

 

네 붕어빵 틀에서 붕어빵이 만들어지죠. 

클래스에서 객체를 생성해냅니다.

(객체를 만들어 내기 위한 설계도, 틀과 같은 개념을 클래스라고 합니다.)

 

간단하게 클래스와 객체에 대해서 파악했습니다.

그럼 옵젝씨에서 클래스는 어떻게 선언할까요?

새로운 파일을 먼저 만들어 줍시다.

클래스명은 Car으로 작성했습니다.

NSObject의 서브클래스입니다.

언어는 당연히 옵젝씨.

 

그리고 다음 버튼을 눌러주면 아래와 같이 새로운 파일들이 생성됩니다.

 

Car.h과 Car.m파일이 생성된 걸 확인할 수 있습니다.

어! 스위프트랑 다르게 생성되는 파일이 두개네요.

네 옵젝씨에서는 인터페이스와 구현하는 것으로 분리해서 작성해줍니다.

 

먼저 Car.h파일을 살펴봅시다. (인터페이스)

@interface 옆에는 클래스명과 : 콜론 뒤에는 슈퍼클래스가 붙습니다.

내부에는 프로퍼티들과 메소드들을 정의합니다.

저는 carName 프로퍼티를 정의하고 setCarName메소드와 carName메소드를 정의했습니다.

즉 이 파일에서는 구현해야 할 클래스명을 정의하고 프로퍼티들과 메소드들을 정의하는 곳입니다.

 

@interface로 시작해 @end로 마무리를 합니다.

이는 컴파일러의 지시자로 시작과 끝을 의미합니다.

 

다음으로 Car.m파일을 살펴봅시다. (구현)

아까는 인터페이스 부분이었으니 이 파일은 구현하는 파일이겠죠.

 

네 메소드들이 구현되기 위한 파일입니다.

@implementation옆에는 클래스명이 붙습니다.

carName을 받는 setter와 출력하기 위한 getter 메소드가 정의되어 있습니다.

(앞에 인터페이스 부분에서 정의한 내용은 다 구현해주어야 합니다.)

 

마지막으로 main.m파일을 살펴봅시다.

네 두 번째 줄을 보시면 Car.h이 추가되었습니다.

 

main.m파일에서는 정의한 Car클래스를 사용하기 위해 Car클래스의 객체를 생성해주었습니다.

(객체를 생성한다는 의미는 메모리 공간을 할당한다는 의미입니다.

옵젝씨에서도 C와 같이 복잡한 메모리 주소를 직접 읽고 쓰지 않고 포인터를 사용합니다.)

 

car의 setCarName메소드를 통해 carName은 Hyeri로 세팅했습니다.

그리고 car의 carName메소드를 호출해 carName을 출력합니다.

반응형

'개발 > Objective-C' 카테고리의 다른 글

조건문와 반복문  (0) 2020.02.12
오브젝티브씨 문자열 포맷팅  (0) 2020.01.22
오브젝티브씨 메소드  (0) 2020.01.15
Objective-C란?  (0) 2020.01.11
옵젝씨 프로젝트 생성  (0) 2020.01.06