위키득계정 ↗
기술

객체 지향 프로그래밍

객체 지향 프로그래밍기술
영문명
Object-oriented programming
약칭
OOP
주요 개념
객체, 캡슐화, 다형성
구현 방식
클래스 기반 또는 프로토타입 기반 등
객체 지향 프로그래밍은 데이터와 그 데이터를 다루는 동작을 객체 중심으로 조직하는 프로그래밍 방식이다. 객체 사이의 역할과 상호작용을 통해 프로그램을 구성한다.

데이터와 동작의 경계

재생 목록 객체가 곡의 순서를 보관하고 추가와 삭제 기능을 제공한다고 하자. 외부 코드는 내부 배열을 직접 바꾸는 대신 정해진 동작을 요청할 수 있다. 이렇게 상태를 바꾸는 경계를 설계하면 유지해야 할 규칙을 한곳에서 관리하는 데 도움이 된다.

객체와 클래스

클래스 기반 언어에서 클래스는 객체의 공통 구조와 동작을 정의하고 인스턴스는 그 정의를 바탕으로 만들어진 개별 객체다. 같은 클래스에서 만든 두 객체도 서로 다른 상태를 가질 수 있다.

모든 객체 지향 언어가 클래스를 같은 방식으로 사용하는 것은 아니다. 기존 객체를 바탕으로 새 객체의 동작을 정하는 프로토타입 기반 방식도 있다.

상속과 다형성

상속은 기존 타입의 구조나 동작을 바탕으로 관계를 정의하는 방법이다. 다형성은 공통된 인터페이스를 통해 서로 다른 구현을 사용할 수 있게 하는 개념이다. 하나의 호출 형태가 객체에 따라 다른 동작으로 이어질 수 있다.

상속을 사용하면 언제나 재사용과 확장이 쉬워지는 것은 아니다. 깊은 상속 관계는 변경의 영향을 넓힐 수 있어, 다른 객체에 역할을 맡기는 합성과 함께 설계의 장단점을 살펴야 한다.

현실의 사물을 복사하는 것인가

객체는 실제 물체에만 대응하지 않는다. 거래 처리와 화면 상태, 파일 접근처럼 추상적인 역할도 객체로 표현할 수 있다. 중요한 것은 이름을 붙여 모든 코드를 클래스로 나누는 일 자체보다 책임과 의존 관계를 명확하게 정하는 일이다.

관련 문서

프로그래밍 언어 / 함수형 프로그래밍 / 소프트웨어