1. 객체 지향형 프로그래밍(OOP)에 대해 설명해주세요.
- 객체 지향형 프로그래밍은 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임입니다.
- 객체 지향형 프로그래밍에서 객체는 상태 데이터인 프로퍼티와 동작인 메서드를 가진 복합적인 자료구조입니다.
- 객체는 다른 객체와 메세지를 주고 받거나 데이터를 처리할 수 있습니다. 또한 다른 객체의 프로퍼티나 메서드를 상속받아 사용할 수도 있습니다.
1.1 OOP의 특징에 대해 설명해주세요.
- 상속
- 어떤 객체의 프로퍼티나 메서드를 다른 객체가 상속 받아 그대로 사용할 수 있는 것을 말합니다.
- 추상화
- 다양한 속성 중에서 필요한 속성만 간추려서 표현하는 것을 말합니다.
- 다형성
- 메서드의 이름은 같지만 다른 클래스에서 다르게 구현하는 것을 말합니다.
- 하위클래스의 메서드가 상위클래스의 구현을 대체할 때, overides했다고 합니다.
- 캡슐화
- 객체의 내부 상태는 은닉되어 있습니다.
- 객체의 내부 상태는 객체 자신의 메서드로만 접근할 수 있기 때문입니다.
1.2 OOP의 장단점에 대해 설명해주세요.
-
장점
- 각 기능을 독립적인 객체로 관리할 수 있기 때문에 유지보수가 쉽습니다.
- 객체의 프로퍼티나 메서드를 상속받을 수 있기 때문에 코드의 재사용률이 높습니다.
- 객체의 캡슐화 특징 덕분에 데이터를 안전하게 보존할 수 있습니다.
-
단점
- 상속을 너무 많이 사용하면 복잡하고 단단히 결합된 계층 구조를 가지게 될 수 있습니다. 이는 코드를 이해, 유지 보수하기 힘들게 합니다.
2. 함수형 프로그래밍에 대해 설명해주세요.
- 함수형 프로그래밍은 순수함수와 보조함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성을 지향하는 프로그래밍 패러다임입니다.
2.1 순수함수에 대해 설명해주세요.
- 순수함수는 부수 효과가 없는 함수를 말합니다. 순수 함수는 동일한 인수를 전달하면 언제나 동일한 값을 반환합니다.
2.2 함수형 프로그래밍의 OOP와의 차이점에 대해 설명해주세요.
- 불변성
- 함수형 프로그래밍에서는 데이터의 불변성을 지향하므로 한 번 할당된 값을 변경하려고 하지 않지만, OOP에서 객체는 메서드에 따라 변하는 상태를 가집니다.
- 코드 구성
- 함수형 프로그래밍은 함수와 데이터 변환을 중심으로 코드를 구성합니다. 함수가 한 가지 동작만 할 수 있도록 작게 나누고, 순수 함수와 비순수 함수를 나누어서 부수 효과를 억제하는데 중점을 둡니다.
- OOP는 클래스와 객체로 코드를 구성합니다. 상속과 다형성 같은 개념을 통해 객체 간의 계층 구조와 관계를 만드는데 중점을 둡니다.
3. MVC 패턴과 Flux 패턴의 차이점에 대해 설명해주세요.
- MVC 패턴은 양방향 데이터 흐름를 가지고 있고, Flux 패턴은 단방향 데이터 흐름을 가지고 있습니다.
- MVC 패턴은 컨트롤러가 사용자의 입력값을 처리하고 모델과 뷰 사이의 상호작용을 조정하는데 중심적인 역할을 합니다. Flux 패턴은 디스패쳐가 액션의 디스패치를 처리하고 데이터 흐름을 제어하는데 중심적인 역할을 합니다.
참고