프로그램 설계 방법론이자 개념의 일종으로, 명령형 프로그래밍에 속함.
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
어떤 역할을 수행하는 메소드와 변수(데이터)의 묶음으로 구성되어 있으며 객체 지향은 특정 언어에 대한 것이 아니라 개념에 대한 것이다.
다형성 (polymorphism)
하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석 될 수 있는 것을 말한다.
장점
- 프로그래밍을 하면서 데이터나 기능에 변화가 생기더라도 관련된 객체만 신경을 쓰면 되어 프로그래밍하기가 좀 더 편하다.
- 프로그램을 조금 더 의미 있는 단위로 나누기 때문에 코드를 이해하거나 다른 프로그램에서 재사용하기에도 더욱 수월하다.
- 꼭 전체 코드가 완성되지 않더라도 기능 별로 테스트를 진행 할 수 있기 때문에 테스트에도 유리하다.
단점
- 코드를 제대로 나누고 설계하는 것이 어렵기 때문에 설계 단계에서부터 많은 노력이 필요하다.
- 사람이 이해하고 작성하기 방식으로 코드를 나누다보니 컴퓨터가 이해하는데 시간이 걸려 속도가 느려지거나, 공간을 많이 차지하기도 한다.
--> 많은 데이터를 다루는 프로그램이나 규모가 큰 프로젝트 같은 경우에는 객체 지향 프로그래밍을 사용하는 것이 좋고, 극도로 빠른 실행 속도가 필요하거나 저장 장치 또는 성능이 제한적인 기기들(스마트 워치 등)에서 돌아가는 프로그램을 만들 때는 사용하지 않는 것이 좋다.