-
객체지향프로그래밍 (Object-Oriented Programming, OOP)프로그래밍 2022. 2. 7. 19:12
객체지향 프로그래밍?
컴퓨터 프로그램을 객체(object)들의 모임으로 파악하고자 하는 프로그래밍의 패러다임 중 하나이다.
사람은 사과를 보고 인식할 때, 머릿속에 추상적이고 개략적인 사과를 가지고, 현실의 사과를 보고 비교하여 인식할 수 있다.
일반적으로 우리는 사과를 인식할 때 "저건 R이 255 이고 지름이 몇이니까 저건 사과다" 라고 인식하지 않는다.
하지만 컴퓨터의 경우, 사과를 구분하기 위해서 구체적인 수치가 필요하다.
하지만 이럴 경우에 사과가 R이 240 이라면? 사과로 인식하지 않게 된다!
이러한 한계는 클래스(Class)와 객체(Object)를 통해 극복할 수 있다.
즉, 클래스라는 이상적인 세계에서 오브젝트라는 실존하는 세계로 가져와 구체화함으로써 컴퓨터가 사람처럼 인식하도록 하는 것이다.
예를 들자면,
Class는 자동차를 찍어내는 틀, 혹은 설계도 라고 할 수 있다.
클래스는 실제로 존재하지 않으며, 가장 중요한 특성만을 개략적으로 알려주고 구체적인 수치가 없다.
Object는 설계도로 부터 찍어낸 실제 자동차들을 의미한다.
아반떼, 그렌져, 코나, K7, G80, GV70 등등... 이 차들은 색, 모양, 크기 등이 다르다.
각각의 오브젝트들은 독립된 특성을 가져, 하나의 클래스에서 파생되어도 서로 구분이 가능하다.
아반떼가 단종된다고 코나도 단종되지 않는다.
여기서, 클래스에서 오브젝트들을 찍어내는 과정을 "인스턴스화" 라고 한다.
또 다른 예로,
Class는 몬스터라는 설계도라고 할 때
Object는 드래곤, 좀비, 드라큘라 등등이 될 수 있다.
이 몬스터들도 각자 다른 모습과 스킬, 특성 등을 가진다.
정리하자면,
클래스는 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이다.
객체는 상위 클래스의 속성을 가지고 있으면서 개별적인 특성과 메서드(method)를 가지고 있다.
메서드는 객체의 속성을 조작하는데 사용된다.
몬스터 예시에서, 각각의 몬스터들이 레벨업을 하는 행위가 메서드라고 할 수 있다.
반응형