본문 바로가기

C#/Knowledge

클래스에 대하여 더 알아보기

클래스에 대하여 알아보려 했더니 뜬금 없는 그림이 나왔다

여기에 등장한 사람들은 누구일까?

 

왼쪽에 하늘을 가리키는 사람은 플라톤, 그리고 정면을 가리키는 사람은 아리스토텔레스

학문의 원천이라고 할 수 있는 사람들이다

 

컴퓨터의 영역을 탄생시킨 사람들은 서양인이다

그리고 컴퓨터 뿐만이 아닌, 대다수 학문의 시초는 서양이라고 볼 수 있다

그러므로 우리가 배우는 학문에 대하여 이해하고 나아가려면

서양인들의 철학 및 생각기반을 이해하고 중요하게 여길 필요가 있다

 

결국, 우리가 사용하고 있는 클래스도 시작점은 이 곳이다.

 

플라톤이 가리키는 하늘, 

굉장히 추상적인 세계이며 우리가 흔히 말하는 이데야라고 하는 세계이다

우리가 사용하는 클래스는 플라톤의 철학을 받아들였으며

아리스토텔레스의 철학을 받아들인 것이 프로토타입이다

 

사과

사과의 종류는 다양하다

홍옥에서도 셀수 없는 종류로 또 나뉠 것이다

 

" 아무튼 얘내 다 사과잖아? "

 

그렇다

 

플라톤에 비유하자면 그냥 사과라는 이데야라고 정의할수 있겠으며

프로그래밍에 비유하자면 사과는 결국 최상위의 클래스라고 할 수 있다

클래스   ㅡ>  무언가 여러가지 실체들을 하나로 묶을 수 있는 개념 

 

 

Apple apple ㅡ> 클래스가 사과라는 틀을 만들어 놓은 것 이라면

new Apple() ㅡ> 실제로 사과를 만들기 위해서는 new Apple이 필요

 

Instance는 유니티를 학습할 때 싱글톤 로직에서 자주 봤었다

결국에는 우리가, 싱글톤이라는 것은 실제 세계로 객체화 시킨 것을 한 개만 사용한 다는 의미

 

아무튼 우리가 사용하는 이 클래스라는 개념을

"객체화 시킨다"

"Instance화 시킨다"

라고 표현하며 개발자로서의 삶을 살아간다면 영원히 기억되어야 할 것이다

 

1. 코드 영역

말 그대로 코드이다

 

2. 데이터 영역

      일반적으로 생각해 보자면 정적 변수 스태틱을 사용함으로써 데이터로 간다

 

3. 힙 영역 / 스택 영역

코드가 돌아갈 때, 힙 영역을 사용하느냐 스택 영역을 사용하느냐

스택은 아래서 위로 향하며, 힙은 그 반대이다

 

익숙한 문구가 보인다

여기서 선언은 어디까지일까?

int num 까지 선언이며 = 1 은 할당이다

 

스택 영역에 선언해줬을 때 차지한 공간에 데이터가 들어간다

이 것을 값 형식이라 하며 스택영역에서 사용한다

값 형식에 들어가는 데이터의 타입들로 어떠한 것들이 있는가에 대하여 인지하는 것은 중요하다

 

다시 클래스로 돌아와서,

이 클래스 형식은 어디까지가 선언일까 ?

Apple apple 까지가 선언의 영역이며 = new Apple() 이 할당이다

그리고 데이터의 위치도 오른쪽에 있다

 

 

int num = 1; 인 경우에는 선언과 할당된 값이 스택에 있었지만

클래스의 경우는 다르다

선언한 부분은 스택으로, 할당된 부분은 힙으로 간다

그렇다면 객체화 시킨 데이터에 접근을 어떻게 하는 것일까?

 

바로, 주소 값이 들어간다

클래스는 apple 이라는 변수에 접근 했을 때, 주소값에 접근을 하는 것이다

그리고 그 주소값에 해당하는 힙 영역으로 읽어주는 내부적인 로직이 있다

 

 

그러므로 Apple apple은 주소값(0) 에 접근하여 힙의 주소(0) 에 위치한 new Apple() 으로 이동한다

스택영역의 주소값이 있고 실제 영역이 힙에 있는 것을 참조 타입이라고 한다

다시,

데이터는 두가지 형식이 있다

값형식                     |                   참조타입

값형식은 스택 메모리만 사용하고 참조 타입은 스택과 힙 메모리 둘다 사용한다

'C# > Knowledge' 카테고리의 다른 글

파라미터 <-> 메서드 <-> 리턴 관계도  (0) 2024.05.21
배열 / 리스트 선언하는 다양한 방법들 및 콤보  (0) 2024.05.21
예외 처리  (0) 2024.04.29
인터페이스 , 열거형 enums  (0) 2024.04.29
제너릭  (0) 2024.04.29