객체지향 프로그래밍이란

 

OOP는 우리가 객체지향 프로그래밍이라 부르는 프로그래밍 언어의 약자로서 하나의 컴퓨터 프로그래밍 틀(패러다임)이라고 할 수 있습니다.

이러한 Object-Oriented Programming 즉 OOP는 오브젝트 기반의 프로그래밍을 의미합니다.

즉, 독립 단위나 개체 그룹을 식별하기 위해 컴퓨터 프로그램의 시점에서 식별되어야 할 명령으로 이뤄진 프로그래밍 언어를 말하며, 각 오브젝트는 정보를 서로 교환하여 데이터를 처리하게 됩니다.

오브젝트 지향 프로그래밍은 프로그램을 유연하고 용이하게 변경하도록 설계할 수 있어서 대형 sw 개발 방법론으로 널리 알려지고 있습니다.

또한 구분이 되어 있어 배우기 쉽고, 자연히 소프트웨어 개발과 유지보수가 간편해져서 개발 리소스를 줄이는데 도움을 줍니다.

하지만, 과도한 OOP가 항상 만능은 될 수 없기 때문에 적절한 구조 구축과 타협이 필요할 수 있습니다.

 

객체지향 언어의 기원

 

객체지향 언어는 1960년 Johnson과 Christine이 노르웨이 컴퓨팅 센터에서 발표한 Simula67이었습니다. Simula 67에서 채택한 가장 중요한 개념은 Smalltalk와 C++에 사용된 클래스의 도입이었다. 그러나 Simula67의 발표 이후, 지난 10년간 객체지향적 언어는 관심을 받지 못했다. Simula67은 1970년대 컴퓨터산업을 주도했던 IBM AT&T 펜타곤이 주목받지 못하면서 실용적 언어로 발전하지 못했다. 그러나 우리는 학계의 가치를 인정받고 있습니다.

 

OOP는 1990년대 초 많은 지원과 개발에 의해 프로그래밍 언어가 시작되면서 상당한 진전을 보였습니다. 기본적으로 객체지향의 선조격인 Smalltalk와 Ada의 큰 틀을 가지고 있었지만, 이들이 가지고 있는 문제를 해결하기 위한 과정으로 발전했습니다. C++, Delphi, Foxpro와 같은 프로그램은 객체 지향 언어에 가장 큰 영향을 미친 GUI의 개발에 의해 강화되었습니다.

 

그 중 AT&T Bell Lab에서 발렌스트 그룹에 의해 개발된 C++가 가장 객체 지향적인 언어로서 현재까지도 사랑을 받고 있습니다. C++의 가장 큰 특징은 진화입이다. 처음에 C++는 C에 등급 개념만을 도입했으나, 중복성, 상속, 가상기능, 추상적 등급 및 예외와 같은 다양한 기능을 추가함으로써 점차 개선된 모습을 갖추게 되었습니다. 하지만 C++는 C에 기반을 두고 있어 많은 프로그래머들에게 인기가 있지만 개체의 방향이 제대로 반영되지 못하고 있다는 비난을 받고 있어 새로운 언어들의 니즈를 가지게 만들었습니다.

 

1990년대 중반부터 인기를 끌고 있는 개체 지향 언어로는 Java 로서, Sun Micro 시스템즈의 James Gosling에 의해 전자기기 내부에 사용되는 소프트웨어 개발을 위해 개발되었습니다. 1993년에 Gosling은 Java를 World Wide Web에 적용하기로 결정하고, Netscape에서 지원하는 Hot Java라는 웹 브라우저를 1995년부터 개발하였다. 자바의 장점은 단순성과 플랫폼 독립성이며, 특히 자바 언어는 언어 단순성의 관점에서 객체 지향적 패러다임을 충실히 해석하기 때문에 남용률은 C++보다 개선이 되어서 현재는 가장 많이 사용되는 언어중에 하나가 되었습니다.

 

이후에도 객체지향 언어는 계속 나오게 되었으며, 자바스크립트, 파이썬, 스위프트, 오브젝티브 C, C#, 펄, 루비 등등 다양한 언어들로 우리에게 선보여졌습니다.

알아둘 것은 객체지향 언어는 객체 지향으로 된 프로그래밍만 할 수 있는 것이 아닙니다.

서두에도 언급되었지만 프로젝트에 따라서 오로지 객체지향으로만 구성된 개발은 상당히 어렵고 가끔은 불가능할 수 있다는 점을 미리 알아두는 것이 좋습니다.

 

객체지향 언어의 구성 요소와 특징은 다음 편에 알아보겠습니다.

+ Recent posts