객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 객체들의 상호작용으로 프로그램 로직을 구성하는 프로그래밍 패러다임이다.
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서는 새로운 방식으로 생각하는 법을 배우게 되고, 이를 바탕으로 코드를 작성하게 된다.
한 객체가 특정한 하나의 목적을 위해 필요한 데이터나 메소드를 하나로 묶는 것을 의미한다.
데이터는 외부에서 직접 접근을 하면 안되고 함수를 통해서만 접근해야 한다.
내부 구조는 private으로 감춰두고 외부에서 조작할 수 있는 정보만 public으로 공개한다. 바깥 간섭으로 인해 발생하는 오류 방지를 방지할 수 있다.
추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.
공통의 속성이나 기능을 묶어 이름을 붙이는 것으로 보통 객체 지향 프로그래밍에서 클래스를 정의하는 걸 추상화라고 생각하면 된다.
하나의 변수명이 상황에 따라 다른 의미로 해석될 수 있다는 것으로 다형성은 형태가 같은데 다른 기능을 하는 것을 의미한다.
일반적으로 오버라이딩 혹은 오버로딩을 의미한다.
상위 클래스에서 정의된 기능을 가져와 재사용하거나, 새로운 기능을 추가해
코드의 중복을 줄이고 재사용성을 늘릴 수 있는 방법을 의미한다.