[면접준비] 프로그래밍 패러다임 (24/04/23)

2024. 4. 23. 10:19공부/면접 준비

객체지향 프로그래밍

 

프로그램 설계방법론의 일종으로, 에 속한다.

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 '메소드, 변수'를 가지며, 특정 역할을 수행하도록 인간이 정의한, 추상적인 개념. 다 프로그램의 상태에 대한 문장들을 작성하는 스타일을 일컫는다.

객체지향형 프로그래밍이란 객체를 먼저 만들고 이렇게 만들어진 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 프로그래밍 방법론이다.

가장 큰 장점은 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다는 점이다.

소프트웨어를 설계할 때 객체 지향적 원리를 잘 적용해 둔 프로그램은 각각의 부품들이 각자의 독립적인 역할을 가지기 때문에 코드의 변경을 최소화하고 유지보수를 하는 데 유리하다. 더 나아가 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있다.

 

추상화

객체 지향 프로그래밍에서 의미하는 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것 또는 핵심적이거나 공통되는 속성 및 기능을 간추리는 것을 의미한다. 기존 클래스의 공통 부분을 뽑아내 부모 클래스를 만드는 것이라고 볼 수 있다.

 

상속

부모 클래스 또는 기본 클래스의 특징을 자식 클래스가 그대로 물려받는 것을 의미한다. 상속은 불필요한 코드를 줄여서 효율성과 재사용성을 높인다. 

 

다형성

객체 지향 프로그래밍에서 다형성(Polymorphism)은 객체 지향의 주요 개념 중 하나로, 같은 이름의 메서드나 연산자가 다른 클래스에 대해 다른 동작을 하도록 하는 것을 말한다.

 

캡슐화

데이터와 메서드를 하나의 단위로 묶어 외부에서 직접 접근하지 못하도록 보호하는 개념

 

///// 절차지향과의 차이 

순서의 차이에 가깝다.

절차지향 프로그래밍은 프로그램의 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수들을 설계하는 방식이다.
객체지향 프로그래밍은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식이다.

 

함수형 프로그래밍

객체지향과의 가장 큰 차이는 

객체를 기반으로 하지 않고 함수를 기반으로 한다는것.

함수형 프로그래밍의 원칙은 다음과 같다.

입출력이 순수함수이다.

하나의 인자를 받고 받은 인자를 처리한 결과를 리턴하며, 인자를 제외한 다른 변수는 사용해선 안된다. 즉, 받은 인자만으로 결과를 도출해야 한다.(this의 존재 때문에 js 에서는 지켜지기 힘들다.)

부작용(부산물)이 없어야 한다.

프로그래머가 바꾸려는 변수 외의 다른 변수가 있어서는 안된다. 또, 원본 데이터는 불변해야 한다.

(프로그래머가 모든 것을 예측하고 통제해야 한다. ex : map, filter, reduce)

함수와 데이터를 중점으로 생각한다.