프로그래밍 공통

OOP란

OOP는 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법입니다. OOP로 코드를 작성하면 재사용성과 변형가능성을 높일 수 있습니다.

OOP의 5가지 설계 원칙

SRP(Single Responsibility Principle, 단일 책임 원칙): 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.

OCP(Open-Closed Principle, 개방 폐쇠 원칙): 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.

LSP(Liskov Substitution Principle, 리스코프 치환 원칙): 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.

ISP(Interface Segregation Principle, 인터페이스 분리 원칙): 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.

DIP(Dependency Inversion Principle, 의존 역전 법칙): 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.

절차지향 프로그래밍 VS 객체지향 프로그래밍

절차지향 프로그래밍

물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법이다.
가장 대표적인 언어로 C언어가 있다.
컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

객체지향 프로그래밍

실제 세계의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법
가장 대표적인 언어로 Java가 있다.
캡슐화, 상속, 다형성 등과 같은 기법을 이용할 수 있다. 다형성은 동일한 키보드의 키가 다른 역할을 하는 것처럼 하나의 메소드나 클래스가 다양한 방법으로 동작하는 것을 의미한다.
절치지향 언어보다 실행속도가 느리다.

RESTful API

REST API에서 REST는 REpresentational State Transfer의 약자로, 
이를 해석하면 네트워크 상태가 전이되는 것에 대한 표현입니다. 
REST API는 이를 표현하기 위해 Resource, Method, Reperesntation 3가지를 사용합니다. 
이 3가지를 통해 상태가 전이되는 것을 표현한다면 우리는 RESTful한 API를 작성할 수 있습니다.

Resource(자원, URI)
Method(요청 방식, GET or POST 등)
Representation of Resource(자원의 형태, JSON or XML 등)

함수형 프로그래밍

함수평 프로그래밍의 가장 큰 특징은 immutable data와 first class citizen으로서의 함수입니다. 함수형 프로그래밍은 부수효과가 없는 순수 함수를 이용하여 프로그램을 만드는 것이다. 부수 효과가 없는 순수 함수란 데이터의 값을 변경시키지 않으며 객체의 필드를 설정하는 등의 작업을 하지 않는 함수를 의미합니다.

동기와 비동기의 차이

동기(Synchronous) 방식

요청을 보내고 실행이 끝나면 다음 동작을 처리하는 방식

순서에 맞추어 진행되기 때문에 제어하기 쉽다.

여러가지 요청을 동시에 처리할 수 없어 효율이 떨어진다.

동기 방식의 예시로는 콜센터 종업원이 일을 처리하는 방식이 될 수 있다. 콜센터의 직원은 한 손님의 전화 응대가 끝난 후에 다음 손님의 응대를 진행할 수 있다.

비동기(Asynchronous) 방식

요청을 보내고 해당 동작의 처리 여부와 상관없이 다음 요청이 동작하는 방식

작업이 완료되는 시간을 기다릴 필요가 없기 때문에 자원을 효율적으로 사용할 수 있다.

작업이 완료된 결과를 제어하기 어렵다.

비동기 방식의 예제로는 이메일이 있다. 우리는 한 사람에게 이메일을 보냈을 때 답변을 받지 않고도 이메일을 다시 보낼 수 있다. 

출처: https://mangkyu.tistory.com/88

Last updated