소프트웨어의 핵심을 객체를 도출하고 각각의 역할을 정의하는 것에 초점을 맞춘다.
크고 복잡한 시스템을 효과적으로 분해하고 구성할 수 있고,
손쉽게 이해하고 효율적으로 다룰 수 있게 도와주는 방법
개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
정보은닉을 목적으로 한다.
Private라는 접근 제한자(Access modifier)를 사용하는데 인스턴스 내부에서만 해당 변수에 접근이 가능하도록 제한하는 문법
여기서 User 클래스의 name, age 멤버 변수는 클래스 외부에서는 어떠한 방법으로도 직접 접근을 할 수 없다.
오로지 setter만 변수를 변경할 수 있고, getter만 변수를 조회할 수 있음.
상속이란 이미 정의된 상위 클래스의 특징을 하위 클래스에서 물려받아 코드의 중복을 제거하고 코드 재사용성을 증대.
즉 하나의 클래스가 가진 특징(함수, 변수 및 데이터)을 다른 클래스가 그대로 물려 받는 것
객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언하는 것을 추상화라고 한다.
즉, 불필요한 부분을 생략하고 객체 속성 중 공통적이고 중요한것만 모델화 하는 것.
다형성이란 객체(클래스)가 연산을 수행하게 될 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성으로 다른 여러 형태로 재구성 되는 것을 말한다.
즉, 동일한 메소드의 이름을 사용하지만 메소드에 대해 클래스마다 다르게 구현되는 개념
의존성이란 객체(모듈 및 클래스)들이 협력하는 과정 속에서 해당 객체들이
다른 객체를 의존하게 되는 정도
의존성이라는 말속에는 어떤 객체가 변경될 때 그 객체에 의존하는 다른 객체도
함께 변경될 수 있다는 사실이 내포
결합도는 의존성의 정도를 나타내며 다른 모듈에 대해 얼마나 많은 의존성을 가지고 있는지를 나타낸다.
응집도는 모듈에 포함된 내부 요소들이 각각 연관되어 있는 관계의 정도를 나타낸다.