객체를 알아보자(객체,클래스,스트럭트)

2022. 7. 24. 20:38swift

객체란?(object)란?

-객체라는 것은 메시지를 전달받을 수 있는 대상을 말합니다.

햄 쥐 달려!라고 한다면 햄 쥐는 객체라고 할 수 있다.

(class의 인스턴스를 생성하는것이랑 같다고 생각하면 된다. 클래스의 인스턴을 말하는 것이다.!!)

 

-swift에서는 객체가 될 수 있는 class, struct 가 있습니다.

 

객체에 메시지를 전달하는 방법

-객체에 메시지를 전달하는 방식은 "객체. 메시지"입니다. 객체에. 을 찍고 메시지를 입력하면 됩니다.

햄 쥐에게 달려!라고 메시지를 전달 때는 hemg.run()와 같이 표현이 됩니다.

 

변수와 객체의 관계

-variable-은 객체의 이름입니다. 그 자체가 객체인 것이 아닙니다. 객체를 담는 상자라고 생각하면 되겠습니다.

기술적으로는 객체를 참조한다고 표현할 수 있습니다.

정리하면 변수는 객체가 아니라 객체를 담는 그릇이다.

 

객체와 인스턴스 차이점을 조금 알아보자

인스턴스??(class나 struck등과 같은 템플릿이 실제로 구현되는것을말합니다.)

객체??(일반적으로 Class의 인스턴스이다??)

결론: Class의 인스턴스는 객체다!! 따당!

 

- class, struct

클래스와 스트럭트에 대해 알아봅시다.!

스트럭트는 복사본을 만든다고 생각하면됩니다.

A를 만들고 이 A를 복사하여 B를 만듭니다

A=B는 같습니다.(별표#값만 복사한것입니다!!)

B에 관하여 어떠한 훼손이나 변경.. 색을바꾸던 모양을 바꾸던 A의 값에는 영향을 주지 않습니다.

사진을 참조하겠습니다.

 

hemgClone의 값을 변경 했을경우  값이 변경되는 것을 알수 있습니다.(hemg과 Clone값은 같지만 Clone값만 변경됩니다.)

앞서 말했듯이 스트럭트에서는  A와 B는 같지만 서로 값을 변경한다고 하더라도 서로에게 영향을 주지 않습니다.

 

이제 클래스에 대해 알아보겠습니다.

Class는 Struct와 같습니다. 데이터들을 모아놓은 상자라고 생각하시면 될 것 같습니다.

클래스는 Struct와 다르게 생성자를 만들어줘야합니다.(init함수를 사용합니다.)

init - 메모리를 올린다는 개념이며 외부에서 메모리를 넘겨받아 만들어 씁니다.

Struct와는 다르게 Class는 중간에 값을 변경하더라도 바뀌지 않았습니다.

그렇습니다. 클래스는 서로가 연결되어있기때문에 바뀌지 않습니다.

 

스트럭트는 복사본을 만든다?

클래스는 바로가기만들기?(하나만 바꿔도 서로가 다바뀌기때문에?) 이런 개념들을 가지고 있는거 같습니다.

 

 

- call by reference