컴퓨터 프로그래밍의 패러다임중 하나로 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 단위 즉 "객체"들의 모임으로 파악하고자 하는 것.
각각의 객체는 메세지를 주고받고 데이터를 처리할 수 있다.
프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하여 보다 직관적인 분석을 가능하게 하는 장점을 가지고 있다.
클래스(Class)
객체(Object)
속성(Attribute)
메세지(Message)
캡슐화(Encapsulation)
추상화(Abstraction)
다형성(Polymorphism)
정보은닉(Information Hiding)
상속성(Inheritance)