컴퓨터 공학과에 들어와 공부를 하다보면 자주 듣는 말이 있다.
"객체지향 프로그래밍을 해야한다."
그럼 도대체 객체 지향이 무엇인가?
객체 지향 프로그래밍이란, 큰 문제를 작게 쪼개는게 아니라, 먼저 작은 문제들을 해결할 수 있는 객체를 만든 뒤, 이 객체들을 조합해 큰 문제를 풀어가는 방법
이라고 한다... 솔직히 뭔 소린지 한번에 감이 안온다.
객체 지향 프로그래밍이 나오기 전엔 코딩을 할 때 절차적 프로그래밍 언어를 사용하여 개발했다고 한다.
학교 대사전의 고등학생 알고리즘 ( https://web.archive.org/web/20160306122421/dic.idoo.net/s/dic/pics/student.gif )처럼 입력을 받아 순서대로 처리하는 탑 다운 (top-down) 방식이라고 보면 된다.
즉, 이러한 방법을 쓰면 나중에 어떠한 기능을 수정할 때, 쉽게 스파게티 코드로 변하기 쉽다는 특징이 있다.
이를 보완하기 위해 객체 지향 프로그래밍이 탄생했다.
객체 지향 프로그래밍은 절차적 프로그래밍과 반대로 바텀 업 (bottom-up) 방식이다.
즉, 위에서 말한 작은 문제를 해결할 수 있는 객체를 만들어 큰 문제를 해결하는 방법이다.
그럼 먼저 객체를 어떻게 구현하는지 알아보자.
//사람을 구현한다고 가정하자.
public class Human{
public string name;
public int age;
public string job;
void Hello(){
print("hello! my name is " + name);
}
}
유니티에서는 객체를 만들기 위해 클래스를 사용한다. (물론 다른언어에서도 객체를 만들기 위해 클래스를 사용하기도 한다.)
위의 Human 클래스는 인스턴스로, name, age, job 이 있고, 메소드로 Hello() 메소드를 가지고 있다.
이런식으로 객체를 만들 틀을 먼저 만든다. 이후 객체를 사용을 해야한다.
//Human Class 사용
//위에 클래스가 선언되어있다고 가정하자.
public Test : Monobehavior{
Start(){
Human h1;
h1.name = "홍길동";
h1.age = 20;
h1.job = "개발자";
h1.hello();
}
Update(){
//
}
}
//출력결과
hello! my name is 홍길동
객체를 생성할 땐, 미리 만들어 놨던 틀을 자료형으로 사용해 생성하면 된다.
이렇게 Human 클래스의 h1 객체를 생성한 후, 객체의 인스턴스에 접근해서 값을 바꿔보았다.
이런식으로 프로그래밍하는게 객체 지향 프로그래밍인것 같다.
장점은 코드가 간결해지고, 수정에 용이하다는 장점이 있다.
예를 들어서 위에서 hello 함수의 수정이 필요할 때, (hello 함수가 엄청 길다고 가정하자) 객체 지향 프로그래밍이 되어있기 때문에 많은 줄의 코드라도 그 위치를 쉽게 찾을 수 있다. 또한 기능의 확장에도 용이하다.
객체 지향 프로그래밍에 대해서 다음 글에서 더 설명하겠다.
'Develop > Unity' 카테고리의 다른 글
[Unity] 파이 그래프(원 그래프)를 만들어보자! (0) | 2024.06.13 |
---|---|
[Unity] 마이크로 음성인식을 진행해보자! (0) | 2024.06.11 |
[Unity] 리스트의 정렬 검색 - 하이 우동 호텔! (2) | 2024.03.20 |
[Unity] 멀티 플레이를 위해 포톤을 연동하자!(Photon) - 1. 서버 연결 (1) | 2023.12.11 |
[Unity] 멀티 플레이를 위해 포톤을 연동하자!(Photon) - 0. 기본설정과 가입방법 (0) | 2023.12.09 |