JAVA는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어로 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나이고, 안드로이드를 비롯한 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다.
1. 객체지향 프로그래밍(OPP)
- 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결하여 전체 프로그램을 완성하는 것
객체지향 vs 함수형
객체지향 프로그래밍 함수형 프로그래밍 장점 1. 코드 재사용이 가능(확장, 유지보수에 용이)
2. 분석, 설계의 전환이 쉬움1. 동작부가 간결해 가독성이 높음
2. 테스트가 쉬움단점 1. 동작부가 간결해 가독성이 높음
2. 테스트가 쉬움외부 데이터, 내부데이터 상태를 조작할 수 없음 언어 비교 자바, C++, 스위프트 등 Haskell, OCaml 등
2. SOLID 법칙
(1) 단일 책임 원칙(Single Responsibility Principle)
- 하나의 클래스는 단 하나의 책임을 가져야 한다.
- 하나의 클래스가 여러 기능을 수행한하면 유지보수가 힘들어진다.
(2) 개방 폐쇄 원칙(Open-Closed Principle)
- 확장에는 열려있고 수정에는 닫혀있다는 의미이다.
- 확장에 열려있다는 것은 요구사항이 변경되면 새로운 동작을 추가하여 이를 해결할 수 있다는 의미이다.
- 수정에 닫혀있다는 것은 기존의 코드를 수정하지 않고도 기능을 추가하거나 변경할 수 있다는 의미이다.
(3) 리스코프 치환 원칙(Liskov Substitution Principle)
- 하위 타입은 상위 타입을 대체할 수 있어야 한다.
(4) 인터페이스 분리 원칙(Interface Segregation)
- 클라이언트는 자신이 이용하는 메소드에만 의존해야 한다.
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다.
(5) 의존 역전 원칙(Dependency Inversion)
- 구체화된 클래스보다 추상클래스/인터페이스에 의존해야한다.
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
3. DI(Dependency Injection) - 의존성
- 객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것
- ”DI한다 → constructor를 이용해 interface 구현체를 넘겨서 초기화 시킨다”
- 의존성의 이유
- 객체 상호 간 의존성 관계를 줄여줌
- 코드의 재사용과 조합이 용이함
- 변화에 구조가 민감하지 않음
- 코드들이 분리되어 가독성이 좋아짐
참고 문헌 : 위키백과