OOP :
현실세계의 사물을 객체로 인식해 그 객체로부터 원하는 특징, 기능을 추출해서 현실세계를 프로그래밍으로 옮기는 프로그래밍 방식.
OOP 장점 :
- 코드의 재사용성이 높아진다.
- 유지보수가 쉽다.
- 코드가 간결해진다.
OOP 단점 :
- 처리시간이 오래걸린다.
- 많은 고민과 시간을 투자해서 설계해야한다.
OOP 5원칙 S.O.L.I.D :
SRP :
클래스는 단 하나의 목적을 가져야 하며, 단 한가지의 이유로만 바뀌어야 한다.
OCP :
확장에는 열려있으나, 변경에는 닫혀있어야한다.
(확장 : 새로운 동작을 추가해서 기능 확장, 변경 : 기존의 코드를 변경하면 안됨, 동작을 추가해야함)
LSP :
상위 타입의 객체를 하위 타입으로 바꾸어도 정상적으로 작동해야한다.
(정상적으로 컴파일 되어야 한다는게 아니라, 프로그래밍의 설계 논리대로 작동해야 한다는 뜻)
ISP :
범용 인터페이스보다 다양한 목적을 위한 여러개의 인터페이스가 낫다.
DIP :
저수준 모듈이 고수준 모듈에 의존해야한다.
(저수준 모듈: IO로부터 먼, 비스니스와 관련된 추상화된 모듈)
(고수준 모듈: IO로부터 가까운, HTTP DB 캐시 등과 관련된 구체화된 모듈)
절차지향 프로그래밍 vs 객체지향 프로그래밍 :
절차지향 프로그래밍 :
- 물이 아래로 흐르듯이, 순차적인 처리를 중요시하는 프로그래밍
- 컴퓨터의 처리구조와 유사해 처리속도가 빠르다.
- 코드의 순서가 바뀌면 결과도 바뀌기 쉽다.
- C언어가 대표적이다.
객체지향 프로그래밍 :
- 실제 사물을 객체로 인식하고 실제세계를 옮기는 프로그래밍
- 절차지향보다 처리속도가 느리다.
- 다형성, 캡슐화, 상속과같은 기법을 사용할 수 있다.
- JAVA가 대표적이다.