Object Oriented - OOP 개요
이제 Structure에서 Object Oriented로 넘어갑니다. 이전 글에서 Structure는 함수를 참조만 했지 변경하거나 정의할수가 없었습니다. 하지만 OOP로 넘어가면서 함수를 내부에서 정의하고 변경까지도 가능하게 됩니다.
일단 Object Oriented를 이해하기 위해서는 2가지 정의를 이해해야 합니다.
1. 클래스(Class)는 객체(Object)를 위한 템플릿
2. 객체(Object)는 클래스(Class)의 인스턴스(instances)
그러면 기존에 체스판을 예로 들겠습니다.
나이트를 Class로 예로 들면 여러가지(위치,색,사망여부,움직임 함수)가 들어있음을 알수 있습니다. 이때 사망여부와 움직임 함수는 모든 나이트의 공통 사항이기 때문에 초기화 합니다. 하지만 위치와 색은 초기화 해서는 안됩니다.
위 그림에서 각각의 나이트들은 시작하는 지점이 서로 다릅니다. 따라서 각각의 나이트의 시작위치는 모두 달라야 합니다.
하지만 모든 나이트의 위치를 초기화해 같은위치에서 시작된다면 체스판에 있는 나이트는 시작할때 이상한 모습을 띄게 될 것입니다.
또한 색을 한가지로 초기화 한다면 누가 누구의 말을 쓸수있는지 모를겁니다.
대신 백과 검정말의 공통점은 움직임 입니다. 그리고 처음 시작할때 살아 있어야 합니다. 이경우는 백과검의 공통된 부분이기 때문에 초기화 할수 있습니다.
<나이트 예시>
Class(클래스) : 나이트가 갖는 공통된 속성
Object(객체) : 그 나이트가 갖고있는 속성
따라서 클래스는 프로그램 내에서 뒤죽박죽 섞여있는 데이터(Data)와 함수(Function)들을 일목요연하게 정리하고 사용하기 쉽게 해줍니다.
다음 글에서는 여기서 더 나아가 OOP가 갖는 주된 속성 4가지에 대해서 설명해 드리겠습니다.
댓글
댓글 쓰기