데이터를 추상화 시켜 객체로 만들고 객체들 간의 상호작용을 통해 로직 구성
캡슐화(Encapsulation)
데이터와 메서드를 하나의 캡슐로 만들어 외부로부터 보호하는 것
낮은 결합도를 유지할 수 있도록 설계(한 곳에서 변화가 일어나도 다른 곳에 미치는 영향을 최소화)
정보 은닉을 활용
상속(Inheritance)
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
기능 확장을 위해 사용(재사용성)
추상화(Abstraction)
세부적인 사물들의 공통적인 특징을 파악한 후 하나의 집합으로 만들어내는 것
불필요한 세부 사항들은 제거하고, 본질적인 부분만을 추출하여 표현
다형성(Polymorphism)
같은 이름의 메서드나 연산자가 다른 클래스에 대해 다른 동작을 하도록 하는 것
메서드 오버라이딩(Method Overriding), 메서드 오버로딩(Method Overloading)
코드 재사용성이 용이 → 상속을 통해
유지보수가 쉽다 → 캡슐화를 통해