프로그램의 설계방법론 중 하나이다

프로그램을 단순히 데이터와 처리 방법으로 나누는 절차적 방법이 아니라, 수많은 객체 (Object)라는 기본 단위로 나누고, 이들의 상호 작용으로 서술하는 방법 객체란 메소드, 변수등을 가지며 특정 역할을 수행하도록 인간이 정의한 추상적인 개념이다.

객체 지향 프로그래밍 방법에서는 4가지 요소가 존재한다.

캡슐화 (Encapsulation)

변수와 함수를 하나의 단위로 묶는 것을 말한다. 캡슐처럼 묶어진다고 해서 캡슐화이다. 클래스를 통해 구현되고 이 클래스를 실체화 한것이 객체이다.

상속 (Inheritance)

상속은 자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것을 말한다. 기능의 일부분을 변경해야 할 경우 자식 클래스에서 상속받은 그 기능만을 수정해서 다시 정의하게 되는데, 이러한 작업을 오버라이딩(Overriding)이라고 하고, 상속은 캡슐화를 유지하면서 클래스의 재사용을 용이하게 한다.

정보 은닉 (Information Hiding)

프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈 내부로 감추는 것 (내부에서의 구현은 감추고 모듈내에 응집도를 높이며 다른 모듈간의 결합도(커플링)을 떨어뜨려 유연함과 유지보수성을 높이는 개념.

일반적으로 세 종류의 접근 제한이 사용된다 (언어마다 차이는 있을수 있다, ex) C++ friend같은..)

여기서 public과 protected로 선언된 것은 자식들에게 상속 된다.

다형성 (Polymorphism)

하나의 변수, 또는 함수가 상황에 따른 다른 의미로 해석 될 수 있는 것을 말한다.