iOS-And-Swift-Study


제대로 잡히지 않은 Instance 개념

코딩을 할 때 가장 내가 이해가 안되는 점이 왜 인스턴스를 만들지??

인스턴스가 정확하게 뭐지?? 하는 그런점이였어요.

코딩을 하면서 일단 만들어서 쓰니까 쓰긴하는데 정확한 인스턴스의 개념을 모르니까,

어디에서 어느 부분에서 그리고 내가 원하는 구현을 할 때 인스턴스를 언제 써야하는지를 모르고

자꾸 막히는 부분이 생겼죠 ㅠㅠ

그래서 정확한 인스턴스의 개념에 대해 짚고 넘어가는 것이 필요하다고 느꼈어요!!

그래서 인스턴스의 개념에 대해 좋은 글이 있는 블로그를 찾아 그 글을 보고 정리하려고 해요 (저의 식대로)

원문 글의 출처는 Bareum 님의 블로그 라는 것을 밝힙니다.


인스턴스에 대해 알지 못하여 나는 가장 먼저 한 일이 바로 구글링을 하는 것이였어요.

모르는게 있을땐 역시 구글!!

(구글이 짱인듯,,, 최소 화개장터, 있는건 있고 없는건 없는 그런 신세계)

각설하고 다시 본론으로 돌아와서

항상 똑같지만 그래도 확실하게 이해되는 예시인 붕어빵!! 에 대해서 예시가 들어져 있었어요.

붕어빵 예시를 보기 전에 조금은 딱딱하지만 확실하게 정의 된 글이 Bareum 님의 게시글에 맨 위에 써져 있었는데

그 글을 먼저 보고 아래의 붕어빵 예시를 보면 조금 더 쉽게 이해가 가더라구요 그래서 먼저 맨 위에 있는 글을

아래에 적어보려 해요.

바로 아래와 같이 써져 있더라구요 ~

인스턴스

일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소.

객체 지향 프로그래밍에서, 어떤 클래스에 속하는 각 객체를 인스턴스라고 한다.

예를 들면 “목록(list)라는 클래스를 정의하고 그 다음에 “나의 목록(my list)” 이라는

객체를 생성(메모리 할당) 하면 그 클래스의 인스턴스가 생성된다.

또한 어떤 논리식(변수가 포함되어 있는)의 변수에 구체적인 값을 대입하여 식을 만들려면 원래 식의

인스턴스가 만들어진다.

이런 의미에서 인스턴스를 실현치라고 한다.

조금은 딱딱하지만 인스턴스에 대해 정의 되어있는 글을 보고 붕어빵을 예시를 보면 정말 너무 이해가 잘되었어요.

이번에는 그 붕어빵 예시 글을 베이스로 나의 식으로 예를들어서 글을 써보려 해요.

저는 상상을 해봤어요 제가 붕어빵 장사를 하는 상상을요.

붕어빵 장사를 하려면 붕어빵이 어떻게 만들어지고 어떤 재료들이 필요한지 알아야 겠죠??

먼저 붕어빵을 만들려면 붕어빵 틀이 있어야 해요!! (너무 중요하지, 이게 없으면 붕어빵을 못만드니까~)

틀이 준비되었다면 틀에 밀가루 반죽과 팥을 집어넣고 구워주면 붕어빵이 완성되지요~

오?! 그런데 이 붕어빵이 클래스, 오브젝트 그리고 인스턴스의 관점에서 살펴볼까요??

  • 붕어빵틀 = Class
  • 붕어빵 = Object
  • 각각의 붕어빵 = Instance
  • 붕어빵을 굽다 = Instance화 하다

오 뭔가 쉽게 다가오네요!! 그럼 다시 하나씩 알아가보죠~

붕어빵 틀은 “밀가루 반죽”과 “팥”이라는 변수를 가지고 있죠, 저는 각각 손님의 취향에 따라 밀가루 반죽의 양과

팥의 양을 조절하면서 붕어빵을 만들어 팔꺼거든요.

그래서 “밀가루 반죽”과 “팥”은 변수에요.

그리고 “굽다”라는 메서드를 가지고 있어요

굽지 않으면 붕어빵이 아니고 그냥 반죽에 팥을 섞은,,,

여튼 위의 이야기를 종합적으로 일반적인 class의 표현법으로 나타내면

img1

위의 그림과 같이 되겠죠

붕어빵 틀에 대해 알았으니 이제는 손님을 받으면 될꺼 같아요.

손님들이 하나씩 와서 붕어빵을 사가는데 개업이라 그런지, 다들 친구들이 와서 팔아주네요~

총 3명의 친구가 왔으니 3개의 붕어빵을 만들어 보도록 하죠~

저는 특별하게 각각의 붕어빵에 이름을 지어주는 마케팅을 해요

그래서 첫 번째 손님인 서진이에게는 서진붕어, 두 번째 손님인 나훔이에게는 나훔붕어, 세 번째 손님인 호현이에게는 호현붕어 를 만들어 줄꺼에요

그럼 아래와 같이 될꺼에요

서진붕어

나훔붕어

호현붕어

처음에 말했듯이 저는 손님 맞춤형 붕어빵을 만드는 사람이라서 붕어빵마다 밀가루 반죽과 팥의 양을 다르게 집어 넣었어요

이제 “굽다” 라는 메서드를 호출해서 붕어빵을 구워볼꺼에요!! ㅋㅋ

가열된 붕어빵 틀에 각 손님이름을 딴 붕어빵들을 각 손님의 취향에 맞는 밀가루 반죽과 팥의 양을 다르게 집어 넣어서

붕어빵을 굽고 있어요!! 이 붕어빵을 굽는 과정이 인스턴스(Instance)화 하는 거에요

몇분의 시간이 지난 후 붕어빵이 다 구워졌어요, Object(객체)들이 만들어 진거에요!!

붕어빵들을 살펴보면 같은 붕어빵 틀에서 구워졌지만 서로 각기 다른 재료의 양과 이름으로 인해 3개의 붕어빵 모두 다르네요!!

그 각각의 다른 개성을 가진 이 3개의 붕어빵!! 이 실제의 붕어빵들을 인스턴스(instace) 라고 하는거에요

어때요 많이 이해가 가셨나요??

저는 이 글을 정리하면서 이해가 갔어요

이제 코딩을 하면서 실제로 언제, 어디에, 어떻게 쓰이는지

알아가보면 될꺼 같아요!!

오늘은 여기까지~