본문 바로가기

Programming Languages

객체지향 프로그래밍 언어(object-oriented programming language)

OOP란 객체(object) 개념(클래스(class) 개념)을 정의하고,

객체에 대한 연산(메서드)과 성질(멤버 변수)을 정의하여 프로그램을 작성

하는 언어이다.

구조적인 프로그래밍 언어와 달리 객체 중심의 사고의 틀을 제공한다.


OOP의 역사

최초로 클래스 개념을 갖춘 시뮬라 67(Simula 67)은 1960년대 말에 등장했지만 C++, 스몰 톡-80(Smalltalk 80) 등 영향력 있는 객체지향 언어들은 1980년대에 등장해서 현재까지 활발하게 사용되고 있다.

1990년대 중반에 등장한 자바(JAVA)도 현재 가장 대표적인 객체지향 프로그래밍 언어이다.

스크립트 언어인 자바스크립트(Javascript) 또한 객체지향 프로그래밍이 가능하다.


OOP를 위한 추상 자료형

프로그래밍 언어에서 추상화라는 개념은 필수적인 속성만을 가지고 주어진 것을 묘사함으로써 나머지 부수적이거나 불필요한 속성들은 숨겨지거나 삭제된다. 즉 , 공동의 유사성을 표현하고 차이점을 삭제함으로써 동일한 부류의 객체들을 하나로 묶어서 표현하는 방법이다.

자료 추상화는 다음의 두 개의 중요한 관점을 갖고 있다.

자료와 그 자료를 처리할 연산을 함께 선언할 수 있어야 한다.

선언은 구현에 의존적이어서는 안 되며, 연상의 선언에는 의미에 대한 명세가 포함되어야 한다. 정보 은닉(innformation hiding) 개념을 도입하여 프로그램을 쉽게 읽을 수 있어야 하고 유지 보수를 용이하게 해야 한다.

이두 가지 관점을 만족하는 방법을 제공하는 자료형을 추상 자료형이라 한다. 이는 추상 자료형 기법의 도입으로 프로그램 코드의 유지 보수가 편리해지고, 프로그램의 코드의 재사용성과 안전성을 향상시키게 된다.

프로그래밍 언어에서의 자료 추상화란 자료형의 표현과 그에 관련되 연산들을 함께 묶어 캡슐화(encapsulation)하는 기법이다.

이런 캡슐화는 부적당한 사용으로부터 자료형을 보호하기 위한 기법이다.

캡슐화는 프로그래머에게 추상 자료형의 정의된 이름을 통해 객체를 호출하여 사용하도록 하는 윈도우(window)를 제공한다.

이러한 윈도우를 통해서 객체의 호출을 외부에 알려주는 부분을 공용부(public part) 또는  가시부(visible part)라 부르고, 캡슐화를 통해 보호되는 구현 부분을 전용부(private part)라 부른다.