- 사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론
- 캡슐화Encapsulation
1) 데이터(속성)와 기능(메서드)를 하나의 단위로 객체 안에 넣어서 묶는 것
2) 느슨한 결환(Loose Coupling)에 유리
- 코드 실행 순서에 따른 절차적 코드 작성이 아닌 코드가 상징하는 실제의 모습과 닮게 코드를 모아 결합하는 것
3) 특징 : 은닉화(hiding)
- 내부의 데이터 및 구현이 외부로 노출되지 않도록 만들고, 객체 외부의 메서드(필요 동작)만 노출시킴
4) 장점 : 코드를 복잡하지 않게 만들어 재사용성을 높임
- 상속 Inheritance
1) 부모 클래스의 특징을 자식 클래스가 물려받는 것
2) 코드의 중복을 줄이고 재사용 가능한 조각들을 만듦
3) 각각의 클래스에 중복으로 사용된 코드가 있다면 상위의 클래스를 만들어서 중복을 줄일 수 있음
- 추상화 Abstraction
1) 내부의 복잡한 구현을 실제 노출부분에 단순한게 담음
2) 단순한 인터페이스 → 클래스 정의 시, 메서드와 속성만을 정의함
3) 장점 : 코드를 복잡하지 않게 만들어 단순화된 사용으로 변호에 댜한 영향을 최소화함
- 다형성 Polymorphism
1) 같은 이름을 가진 메서드 일지라고 조금씩 다르게 작동함
객체 지향 프로그래밍 이전에는 흙을 빚어서 집을 지어야했지만, 그 이후로는 클래스 라는 모형틀을 만들고 흙을 그 틀에 넣고 구우면 모양과 용도가 뚜렷한 벽돌이 만들어짐