개발 상식

[면접을 위한 CS 전공지식 노트] 1-2 프로그래밍 패러다임

킹우현 2023. 11. 26. 21:36
프로그래밍 패러다임이란 ? 프로그래밍에 대한 관점을 나타내는 개발 방법론. 크게 '선언형'과 '명령형'으로 나뉜다.

1. 선언형 : 함수형 프로그래밍

함수형 프로그래밍은 선언형 프로그래밍의 일종으로, 순수 함수로 이루어져있고 고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임 이다.

- 순수 함수 : 외부의 상태를 변경하거나 영향을 받지 않으면서 동일한 인자에 대해 항상 똑같은 값을 리턴하는 함수
- 고차 함수 : 함수를 매개변수로 사용하거나, 함수를 반환하는 함수(일급 객체 ⭐️)
- 일급 객체의 특징 :  1. 변수에 할당(assignment)할 수 있다 2. 다른 함수를 인자(argument)로 전달 받는다 3. 함수를 결과로 반환할 수 있다.

 

2. 객체지향 프로그래밍

객체지향 프로그래밍은 데이터를 추상화시켜 속성와 메소드를 가진 객체를 만들고, 이러한 객체들간의 상호작용을 기반으로 프로그래밍하는 패러다임이다.

 

객체지향 프로그래밍의 특징 4가지 ⭐️

  1. 추상화 : 어떤 사물에 대한 여러가지 특징 중에 핵심적인 개념이나 공통된 특징들을 추출하여 정의하는 것
  2. 캡슐화 : 객체의 속성과 메소드를 하나로 묶는 것, 일부 정보를 외부로부터 감추어 은닉할 수 있다.
  3. 상속 : 상위 클래스의 속성이나 메소드를 하위 클래스에서 물려받아서 재사용하거나 확장하는 것
  4. 다형성 : 하나의 변수명과 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것(오버라이딩 / 오버로딩)
    1. 오버 라이딩은 하위 클래스가 부모 클래스의 메서드와 같은 이름, 매개변수를 재정의해서 사용하는 것을 말한다. 
    2. 오버 로딩은 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있도록 하는 것을 말한다. 

 

객체지향 프로그래밍의 장단점

장점

  • 코드의 재사용성이 높다.
  • 코드의 유지보수성이 높다.
  • 캡슐화를 통해 보안성이 향상된다.

단점

  • 처리속도가 상대적으로 느리다.
  • 설계 시 많은 시간과 노력이 필요하다.

객체지향 프로그래밍의 설계 원칙

  • 단일 책임 원칙(SRP) : 하나의 클래스는 하나의 책임을 갖는다. 적절한 추상화를 통해서 잘 모아서 하나의 클래스가 두 가지 이상의 책임을 갖지 않도록 함을 의미한다. 
  • 인터페이스 분리 원칙
  • 의존 역전 원칙
  • 리스코프 치환 원칙
  • 개방-폐쇄 원칙