■ 객체지향 프로그래밍
잠시 눈을 돌려 주위를 살펴보자. 각자가 위치한 장소에 따라 여러 사물들과 물체가 보일 것이다.
이처럼 책상, 의자, 컴퓨터, 등등 우리가 주변에서 볼 수 있는 "모든 실재하는 어떤" 대상을 프로그래밍 언어에서는 객체(Object)라고 부른다.
객체 (Object) 는 앞서 예로든 사물뿐만이 아니라, 사람과 동물 심지어 미생물까지도 객채에 범주 안에 들 수 있다.
한마디로 객체는 우리가 보고 느끼고 인지할 수 있는 모든 것을 뜻 한다.
객체 지향 프로그래밍 (OOP, Object Oriented Programming) 의 개념은 모두 이 객체 (Object)에서 부터 시작한다.
객체지향 이론의 핵심 개념은 실제 세계는 이러한 객체들로 구성되어 있으며, 발생 하는 모든 사건들은 이 객체들 간에 상호작용을 통해 발생한다는 전제로 출발한다.
컴퓨터 프로그래밍의 관점에서 보면 일련의 명령어들의 나열을 통해 컴퓨터에게 말을 건네는 절차적 프로그래밍 방식과는 다르게, 객체 지향적 프로그래밍은 "프로그래밍에서 필요한 데이터를 한데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용"을 통하여 특정 기능을 구성하는 프로그래밍 방법론 이다. 즉, 객체지향적 프로그래밍은 실제 사물의 속성(State)과 기능 (behavior)을 분석한 후에 이것을 프로그래밍의 변수와 함수로 정의함으로 실제 세계를 최대한 컴퓨터 프로그래밍에 반영하고자 하는 시도라 설명할 수 있다.
- 추상화 : 복잡한 모듈, 시스템, 자료 등으로 부터 핵심적인 개념 또는 기능을 간추려 내는 행위.
객체 지향적 프로그래밍은 레고를 조립하는 것으로 비유해보면 이해하기가 더 쉽다. 어릴 적 레고를 조립할 때 블록을 하나하나 씩 맞추어 가며 조립해야 하는데 이 레고 블록 하나를 객체로 생각하고 이 레고들을 조립하여 하나의 결과물을 낼 수 있듯이, 객체 지향적 프로그래밍도 이와 유사하게 특정 사물이 가지는 속성과 상태를 하나의 레고블럭으로 만들어 이것들을 조립하여 하나의 결과물로 만들어 내는 과정이 객체 지향 프로그래밍이 가지는 설계의 핵심이기 때문이다.
조금더 구체적으로 설명하자면, 레고 블록을 조립하는 것은 프로그래밍에 있어 큰 이점이 있다. 레고 블록들은 각각의 기능들을 가진 객체로서 레고 블록 하나를 쪼개고 조립하는 과정에 있어서 그저 소모품이 아닌 각각의 기능들을 가지고 다른 레고에도 조합할 수 있는 등 재활용이 가능하다는 이점이 있다. 이 이점을 통하여 새로운 코드를 상대적으로 쉽게 작성할 수 있으며, 코드 간에 관계 설정을 통해 적은 노력으로도 코드를 변경할 수 있다.
'Programming > Cs' 카테고리의 다른 글
[지식] this vs this() (1) | 2022.05.11 |
---|---|
[지식] 클래스 (Class) 와 객체 (Object) (2) | 2022.05.10 |
[지식] 변수, 상수, 리터럴, 타입변환 (2) | 2022.05.04 |
[지식] String (0) | 2022.05.04 |
[지식] Linux 기초 (0) | 2022.05.02 |