
객체 중심의 프로그래밍 기법으로, 객체 간의 상호작용을 통해 요구사항에 적합한 기능을 프로그래밍하는 것을 의미한다.
단일 책임 원칙(SRP) : 하나의 클래스에는 하나의 책임만 가져야 하며, 이를 변경하는 이유가 단 하나의 이유여야 하는 것을 의마한다. 일례로 회원가입에 관련된 기능을 수정하기 위해서는 회원 관련 기능을 정의한 회원 서비스 클래스에서 수정해야 한다.
개방 폐쇠 원칙(OCP) : 확장에는 열려있고, 수정에는 닫혀있어야 함을 의미한다. 일례로, 필요에 의해 의존 주입 시 구체적인 구현체 보다는 추상화 계층을 정의해야, 확장된 기능의 클래스를 도입하더라도 의존을 주입한 곳에서 수정이 이뤄지지 않는다.
리스코프의치환원칙(LSP) : 상위 계층의 클래스는 하위 계층의 클래스로 대체가 가능해야 한다. 즉, 하위 계층에서는 상위 계층을 포함하도록 기능이 구현되어 있어야 한다. 일례로, 동물이라는 계층에 동작하다라는 기능은 하위 사람이라는 계층에서는 모두 동작하다라는 기능이 가능하며, 이는 LSP 원칙을 잘 지킨 사례이다.
인터페이스분리원칙(ISP) : 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해줘야 한다. 일례로, 수영을 하지 못하는 사람은 "수영할 수 있는" 이라는 기능을 구현해서는 안되며, 이는 ISP를 잘 지킨 사례이다.
의존역전원칙(DIP) : OCP와 깊은 연관이 있으며, 클라이언트는 추상화에 의존해야 하고, 구체화에 의존해서는 안된다.
절차지향 프로그래밍
객체지향 프로그래밍
REST API에서 REST는 REpresentational State Transfer의 약자로, 이를 해석하면 네트워크 상태가 전이되는 것에 대한 표현을 의미한다. REST API에서는 이를 표현하기 위한 수단으로 Resource, Method, Representation을 사용한다.
URL vs. URI _ 참고
- URL : Uniform Resource Locator, 자원이 실존하는 위치.
- URI : Uniform Resource Identifier, 자원의 위치뿐만 아니라 자원에 대한 고유 식별자를 포함한 의미.
코드 영역 : 실행할 프로그램의 코드가 저장되는 영역.
데이터 영역 : 프로그램의 전역 변수와 정적 변수가 저장되는 영역, 데이터는 프로그램의 시작과 함께 할당되며, 프로그램이 종료 시 소멸된다.
힙 영역 : 프로그래머가 직접 관리가 가능한 메모리 영역으로 이 공간에 메모리를 할당하는 것을 동적 할당이라고 부른다. Java에서는 가비지 컬렉터가 이를 자동으로 관리해준다. 힙 영역은 스택 영역과 달리 낮은 주소에서 높은 주소로 메모리가 할당된다.
스택 영역 : 함수의 호출과 함께 할당되며 지역 변수와 매개 변수가 저장되는 영역을 의미한다. 스택 영역 내 저장되는 함수의 호출 정보를 스택 프레임이라고 한다. 스택 영역은 함수 호출이 완료 시 소멸된다. 스택 영역은 높은 주소에서 낮은 주소로 메모리가 할당 된다.
Call By Value
Call By Reference
라이브러리 : 사용자가 흐름에 대한 제어가 가능하며, 필요한 상황에 맞게 해당 기능을 가져다가 사용할 수 있다.
프레임워크 : 전체적인 흐름을 자체적으로 제어한다.
결론적으로, 둘의 큰 차이점은 실행 흐름에 대한 제어권이 어디 있는지에 따라 다르다. 프레임워크를 사용하면 사용자가 관리할 내용을 프레임워크에게 넘겨주게 된다. 이 과정에서 IoC가 발생하게 된다.
동기
비동기