C# Practicing(클래스)

2023. 10. 23. 16:13Game Develop/C# Programming

앞전에 Hello World!를 출력하면서 잠깐 언급만 하고 지나갔던 적이 있다.

오늘은 드디어 객체지향의 꽃, 클래스에 대해 알아보도록 하자

 

class 란? 

class : 변수와 메서드들을 저장하는 일종의 틀이다. 어원은 classification이다.

 

객체지향에서 클래스는 데이터와, 메서드의 집합이라고 볼 수 있다.

- 데이터 : 어떤 데이터를 저장하는 저장공간 = 변수
- 기능 : 메서드

 

다음은 클래스의 기본 형태이다.

 [접근 제어 지시자] class [클래스 이름]
{
        변수(들)
        메서드(들).
}

 

여기서 접근제어 지시자는 전에 말했던 한정자 중 하나이다.

접근 제어 지시자 : 접근을 제어하는(접근이 가능한지 아닌지) 예약어.

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

 

여기서 가장 흔히 쓰이는 것은 public과 private이다.


public : 공공의, 공적인 : 클래스 내외부 아무나 접근할 수 있음.
private : 사적인, 개인적인 : 클래스 내부에서만 접근할 수 있음.
접근 제어 지시자를 쓰지 않으면 기본값은 private이다.

 

클래스는 왜 만드는 걸까? 쉽게 예를 들면 붕어빵 틀이 클래스에 해당한다고 할 수 있다.

붕어빵의 종류는 팥, 슈크림등 다양한 앙금들이 들어간다. 또 붕어빵은 한 번에 많은 양을 만들어내야한다.

만약 붕어빵 틀이 없이 붕어빵을 만드려면 반죽을 붕어빵 크기 만큼 구운 다음, 그 안에 앙금을 채워 넣고, 붕어 모양까지 다듬어 주어야 하나가 완성이 된다.

하지만, 붕어빵 틀을 사용하면 반죽을 부어 그 위에 앙금을 올리고 다시 반죽을 부으면 다듬는 과정도 없이 많은 양을 생산할 수 있게 된다.

따라서 클래스는 개발자들의 시간을 아껴주는 굉장히 소중한 존재라고 할 수 있겠다.

 

이제 클래스를 직접 활용해보자.

학생클래스를 만드려고 한다.

 

학생이 가질 수 있는 데이터(변수)는 뭐가 있을까?

이름, 학번, 나이, 전공 등이 있을 수 있겠다.

그럼 학생이 할 수 있는 행동(기능)은 뭐가 있을까?

공부하기, 밥먹기, 놀기 등이 있을 수 있겠다.

 

이제 직접 클래스를 작성해보자.

이게 학생 클래스의 기본적인 틀을 만들었다.

이제 이 클래스를 가지고 직접 객체를 만들려고한다.

여기서 객체란 클래스의 정의된 내용이 메모리에 생성된 것이다.

 

객체를 만들기 위해서는 생성자라는 것이 꼭 호출돼야한다.

생성자 : 클래스 객체가 생성될 때 호출되는 특별한 메서드이다.
기본 생성자(아무것도 안하고 new Student()) 대신 직접 생성자를 만들어서 사용할 수 있음.

 [접근 제어 지시자] [클래스 이름]([매개 변수 목록])
{
	실행문
}

생성자의 형태이다.

 

다음은 Student 클래스의 생성자를 직접 만들어 준 코드이다.

name, id, age, major 값을 매개변수로 받아서 대입해 주도록 정의된 생성자이다.

여기서 this란 클래스 내의 변수를 지칭할 때 사용하는 한정자이다.

주로 클래스 내의 변수와, 매개변수의 이름이 같을때 사용한다.

 

이제 생성자도 만들어 줬으니 객체를 생성해보자.

 오류가 나는 구문을 지우고 실행을 해보겠다.

객체가 생성됐다!!!

 

확인을 위해 데이터를 출력해보는 메서드도 하나 만들어주자!

클래스내에 작성된 학생의 정보를 보여주는 메서드이다. Main() 에서 사용할 것이기 때문에 public을 사용해야한다.

클래스 내의 메서드를 사용하고 싶으면 객체명뒤에 '.'을 찍어서 메서드 이름을 써주면 된다.

자 이렇게 객체가 잘 생성된 것을 확인할 수 있다.

 

이제 영희가 할 수 있는 일들도 정의해주자!

잘 출력 된다.

 

위에 써놓고 안 쓴 놀기 기능이 있는데 영희가 외로우니까 철수를 만들어 주고, 같이 노는 것 까지 확인하고 이번 포스팅을 마치겠다.

학생이 2명이 되면서 변수 이름만 살짝 바꿔주었다.

이렇게 영희가 철수와 함께 시험 공부도 하고 햄버거도 먹는 것을 확인했으니 이번 포스팅은 마치겠다