:Object-Oriented Programming (OPP)
컴퓨터 프로그래밍의 패러다임 중 하나이다.
프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
여기서 객체 지향 프로그래밍의 특징을 4가지로 나눌 수 있는데
추상화, 상속, 캡슐화, 다형성이리고 할 수 있다.
데이터들을 '추상화' 시켜 집단에 속하는 속석과 행위를 변수와 메서드로 정의한 것을 클래스(공통의 속성이나 기능을 묶어 이름을 붙이는 것)라고 하고, 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것이 실제 프로그램으로 사용되는 데이터가 객체이다.
기능과 특성의 모음을 클래스라는 캡슐에 넣는 것이 캡슐화이다.
캡슐화의 목적은 크게 2가지가 있는데,
1. 코드를 재수정없이 재활용하는 것.
2. 접근 제어자를 통한 정보 보호, 은닉
이다.
기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미한다.
클래스들 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한 번만 정의해두고 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근
어떤 객채의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미.
대표적으로 매서드 오버라이딩과 매서드 오버로딩이 있다.
smalltalk(최초의 OPP지원 프로그램), Ruby, Python, C언어, C++, Java 등이 있다.