본문 바로가기
프로그래밍/c#

c#_30 클래스 Class 1

by 지나팩 2021. 7. 8.

클래스(Class)에 대해서 알아보도록 하겠습니다. 객체 지향 프로그래밍에 대해서 전혀 모른다면 지난 포스팅인 절차지향과 객체지향 포스팅을 한번 보고 오시는 게 좋습니다. 

https://ks-factory.tistory.com/35

 

절차 지향과 객체 지향

클래스에 대해 알아보기 전에 먼저 절차지향과 객체지향 프로그래밍에 대해서 간단히 알아보고 넘어가도록 하겠습니다. 절차 지향(Procedural Programming) 절차 지향은 컴퓨터의 연산 방식과 유사한

ks-factory.tistory.com

클래스는 객체. 사람을 포함한 모든 사물들의 상태와 기능을 한데 모아놓은 데이터의 집합체 입니다. 우선 이미지를 통해 알아보도록 하겠습니다.

위 이미지에서 보듯 모든 사람은 이름, 나이, 키의 상태와 걷기, 뛰기, 먹기 등의 기능을 포함하고 있습니다. 이를 클래스로서 표현하게 되면 상태는 멤버 변수 또는 필드라고 하며 이는 객체의 상태를 나타내는 데이터입니다. 기능은 메소드 또는 함수라고 하며 이는 객체의 기능 또는 행동을 나타냅니다. 현실 세계의 객체를 코드로 옮겨놓은 것입니다. 물론 객체간의 상호작용 역시 현실 세계를 반영해 코드로 표현합니다.

 

또한 클래스는 붕어빵틀에 비유되곤 하는데 그 이유인 즉슨 틀만 있다면 객체를 얼마든지 찍어낼 수 있다는 것을 비유해서 쓰입니다. 예를들어 사람 클래스를 만들었다면 그 클래스를 사용해 사람을 얼마든 만들어낼 수 있다는 것이죠.

 

이제 본격적으로 클래스에 대해서 알아보도록 하겠습니다.

위 그림처럼 클래스를 선언할 수 있습니다. 함수나 클래스 내에서 선언을 하면 안됩니다. 물론 클래스 내에 중첩해서 클래스를 만들 수 있긴 하나 특수한 경우 외엔 외부에 선언을 해야합니다. 접근 제한자(접근 한정자)는 클래스의 접근 범위를 설정하는 것입니다. 이는 차후에 포스팅을 통해 알아보도록 하겠습니다. 

 

그럼 처음 이미지의 사람을 예로 들어 클래스를 구현해보도록 하겠습니다.

휴먼 클래스를 선언하고 다른 클래스의 Main함수 내에서 휴먼 객체를 생성합니다. 특히 주목해야할 곳은 클래스의 생성과 변수에 담는 부분인데(Human human = new Human();), new 키워드를 통해서 객체를 생성하게 되면 Heap 메모리 영역에 실제 데이터들이 생성이 됩니다. 이 생성한 객체를 지역 변수로 만든 human에 대입하게 되면 Stack 메모리 영역에 human 변수가 생성되며 여기에 생성한 객체의 메모리 주소가 담기게 됩니다. 포인터의 개념과 비슷한데 이에 대해선 따로 포스팅을 하도록 하겠습니다. 다만 주소를 가지고 있다고만 알면 될 것 같습니다. 주소를 알므로 인해서 원본 데이터에 접근해서 수정하거나 데이터를 가져올 수 있는 것이죠.

 

이렇게 생성한 객체에 직접 접근하여 상태인 이름과 나이 등 필드의 값을 가져오거나 변경할 수 있고, 기능인 메소드를 호출할 수 있습니다. 메소드를 호출한다는 건 그 기능을 사용한다고 할 수 있겠습니다. 먹는 행위를 하거나 걷는 행위를 하는 것이죠.

 

클래스를 대략적으로 알아보았는데 한 번에 클래스에 대해서 모든 걸 알 순 없겠죠. 다음 포스팅을 통해서 클래스를 더욱 깊이 알아보도록 하겠습니다.

댓글