객체향 프로그래밍이란?
작은 문제들을 해결할 수 있는 객체들을 만들고, 이 객체들을 조합하여 큰 문제를 해결하는 방식
좋은 객체지향 설계는 코드의 재사용, 유지보수의 용이성 등의 장점이 있고 개발기간/비용을 절역할 수 있다
항상 코드는 유연하고 확장할수 있고 유지보수가 용이해야하고 재사용할 수 있어야 한다
OOP의 4대원칙
1. 추상화 (Abstraction) - [모델링]
- 추상화란 실생활에서의 구체적인 것을 관찰자가 관심있는 부분만 가지고 재조함 하는것
- 실체에서 관심있고 공통적인 특성을 뽑아서 하나의 분류(객체)로 만든것
- 객체지향의 관점에서 실체들의 공통적 특성을 뽑아서 클래스로 정의하는 것 자체가 추상화의 개념
- 예) 도서관리 프로그램 → 제목 / 저자 / 출판사 / 총 페이지 / 가격 등
2. 캡슐화 (Encapsulation) - [모델링 / 정보은닉 / 데이터 캡슐화]
- 연관이 있는 속성과 메서드를 하나의 클래스로 묶어서 활용한다는 개념
- 묶을때 객체는 자신이 맡은 역할을 수행하기 위한 하나의 목적을 가진 실체라는 관점에서 접근해야함
- 은닉화: 캡슐화시 접근제어자를 사용해 객체 외부에서 내부 데이터의 접근통제 가능
3. 상속성 (Inheritance) - [재사용 / 확장]
- 부모 클래스의 속성과 메서드를 자식 클래스에서 그대로 물려받는 개념
- 상속을 통해 코드가 재활용되기 때문에 생산성이 높아짐 (클래스의 재사용과 확장을 위해 상속사용)
- 객체지향의 개념에서 클래스가 다른 타입과 구별되는 결정적인 차이점
다향성 (Polymorphism) - [사용편의 / 동적바인딩]