카테고리 없음

swift 객체에 대해 알아보자

kingarthur 2024. 6. 11. 18:15

코딩을 시작하면서 객체지향 프로그램 

객체를 어떻게 이건 객체가 아니다 말은 하는데

객체가 도대체 머야??? 생각이 들어서 찾아보게 되었다. 

객체(object)란?

  • 객체라는 것은 메세지를 전달 받을 수 있는 대상을 말합니다. 강아지에게 "짖어"라고 한다면 강아지를 객체라고 할 수 있습니다.
  • swift에서는 객체가 될 수 있는 존재가 3가지가 있습니다. 바로, struct, class, enum 입니다. 참고로 objective-c에도 struct와 enum이 있지만 class 또는 class 인스턴스만 객체가 될 수 있고 struct와 enum은 객체가 될 수 없습니다. 이 사실은 Cocoa와 objective-C가 어떻게 서로 연동되어있는지를 파악할 때 상당히 중요합니다.

객체(object)에 메세지를 전달하는 방법

  • 객체에 메세지를 전달하는 방식은 "객체.메세지" 입니다. 객체에 .을 찍고 메세지를 입력하면 됩니다. 예를 들어 강아지에게 짖으라고 메세지를 전달할 때는 dog.bark() 와 같이 표현이 됩니다.

Int 1은 객체(object)일까?

  • swift에서 숫자 1은 인스턴스화 된 struct로 객체 입니다. 따라서, 아래와 같이 메세지 전달도 가능합니다.
extension Int { 
	func hi() { 
		print("hi, I'm \(self)") 
	} 
} 

1.hi() // outputs: "hi, I'm 1"

즉 Int는 객체임으로 1.함수 (내장되어 있는 정보 즉 "hi,  I'm \(self 이니 객체인 Int 1 이 나올 것다 ")

그래서 "hi, I'm 1" 이렇게 프린터가 되는 것이다. 

 

객체는 메세지를 받을 수 있는 애를 객체라고 생각하면 될 것 같다. 

변수와 객체의 관계

  • variable은 객체의 이름입니다. 그 자체가 객체인 것이 아닙니다. 객체를 담는 상자라고 생각하면 되겠습니다. 기술적으로는 객체를 참조한다고 표현할 수 있습니다.
  • 정리하자면, 변수는 객체가 아니라 객체를 담는 그릇이고 객체는 변수의 value입니다.

아직 모르는 것이 많지만 더욱 공부해 보자