객체 지향 프로그래밍
개념
- 컴퓨터 프로그램을 어떤 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 명령어들의 목록으로 보는 시각에서 벗어나 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미한다.
- 하나의 자동차를 만들때, 수 많은 부품들의 결합과 연결로 만들어지는 것과 같다고 할 수 있다.
장점
- 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다.
- 코드의 변경을 최소화하고 유지보수를 하는데 유리함
- 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.
캡슐화
개념
- 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것을 말한다.
- 보통 캡슐화를 하는 이유를 데이터 보호, 데이터 은닉 두 가지로 말할 수 있다.
장점
- 코드가 복잡하지 않게 만들고, 재사용성을 높인다.
추상화
개념
- 사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것
- 불필요한 세부 사항들은 제거하고 가장 본질적이고 공통적인 부분만을 추출하여 표현함.(ex. 서울 지하철 노선도)
장점
- 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
캡슐화와 추상화의 차이점
- 캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
상속
개념
- 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미함.
- 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용할 수 있도록 함
장점
다형성
개념
- 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미함.
장점
- 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.