Object Oriented Programming 1 - Properties of OOP

1. Beginning

초기 프로그래밍 언어는 하나의 main 함수 속에서 goto 문을  사용하여 점프하는 형식의 Unstructured Programming 방식이었다. 또한 함수나 프로시져의 개념이 없었기에 모두 global data를 사용하였다. 이는 반복되는 코드를 copy&paste 해야 한다는 문제점과, goto문의 poor readability 등으로 긴 코드를 짜기에는 매우 비효율적이었다.


2. C

C는 Procedural programming(절차적 프로그래밍)의 형식으로 구성되어 있다. 이는 프로그램을 여러 개의 procedure call로 정의하고, 각 함수와 데이터 간의 interaction을 통해 문제를 해결하려는 접근 방법이다. 

하나의 큰 문제를 여러 개의 smaller problem으로 나누어 해결한다는 점에서 Divide & Conquer, Top-down approach, Functional decomposition의 형식이라고도 부를 수 있다.

그러나 이런 프로그래밍 방식은 작은 규모의 프로그램을 짤 때는 매우 효율적이지만, 프로그램의 크기가 커질 수록 전체를 컨트롤하기 어려워진다. 가장 큰 원인은 data와 operation의 decouple(seperation) 이다. 

데이터와 해당 데이터를 컨트롤 하는 함수가 서로 분리되어 있다는 것은, 데이터와 함수 사이의 연결고리를 모두 알아야 해당 프로그램을 maintenance 할 수 있다는 것이다. 이는 프로그램의 규모가 커질 수록 매우 어려운 일이 된다. 

 

3. Object Oriented

따라서 이런 문제점을 해결하기 위한 방법이 바로 Object Oriented Programming이다. OOP는 프로그램을 함수와 데이터로 구분짓지 않고, 함수와 데이터를 모두 가지고 있는 하나의 Object를 프로그램의 가장 기본 단위로 생각한다. 그래서 이런 Object의 interaction을 통해 문제를 해결하는 것이 프로그램이 된다.

 

 

 


댓글

이 블로그의 인기 게시물

IIKH Class from Timothy Budd's introduction to OOP

Compiler 9 - Efficient Code generation

Software Engineering 10 - V&V, SOLID principle