[CS] 2. 프로그래밍 패러다임

임정규·2025년 10월 28일

CS

목록 보기
2/2
post-thumbnail

프로그래밍 패러다임은 프로그래밍의 관점을 갖게 해주는 개발 방법론이다.

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

  1. 무엇을 풀어내는가에 집중하는 패러다임
  2. 프로그램은 함수로 이루어진 것이다 라는 명제가 담겨 있는 패러다임
  3. 순수 함수를 블록처럼 쌓아 로직을 구현, 고차 함수를 통해 재사용성을 높인 패러다임
  • 순수 함수: 출력이 입력에만 의존하는 것
  • 고차 함수: 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것

고차 함수를 쓰기위해서는 해당 언어가 일급 객체라는 특징을 가져야한다.
일급객체
변수나 메서드에 함수를 할당할 수 있다.
함수 안에 함수를 매개변수로 담을 수 있다.
함수가 함수를 반환할 수 있다.

2. 객체지향 프로그래밍

OOP, Object-Oriented Programming으로
1. 객체들의 집합으로 프로그램의 상호 작용을 표현
2. 데이터를 객체로 취급
3. 객체 내부에 선언된 메서드를 활용
하는 방식을 말한다.

특징

  1. 추상화: 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
  2. 캡슐화: 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉
  3. 상속성: 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장
  4. 다형성: 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말함 (대표적으로 오버로딩, 오버라이딩)
  • 오버로딩: 같은 이름을 가진 메서드를 여러 개 두는 것 (메서드의 타입, 매개변수 유형, 개수 등으로 여러개 둘 수 있다.), 컴파일 중에 발생하는 정적 다형성
  • 오버라이딩: 주로 메서드 오버라이딩을 말하고, 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의하는 것 의미, 이는 런타임 중에 발생하는 동적 다형성!

설계 원칙

객체지향 프로그래밍을 설계할 때 SOLID 원칙을 지켜야한다.

  1. SRP (Single Responsibility Principle): 단일 책임의 원칙
    모든 클래스는 각각 하나의 책임만 가져야하는 원칙

  2. OCP (Open Closed Principle): 개방-폐쇄의 원칙
    유지 보수 사항이 있으면 코드를 쉽게 확장하고 수정할 때는 닫혀 있어야 하는 원칙

  3. LSP (Liskov Substitution Principle): 리스코프 치환 원칙
    프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야하는 것
    ex) 부모, 자식 계층 관계에서 부모 객체에 자식 객체를 넣어도 시스템이 문제없이 돌아가게 만드는 것

  4. ISP (Interface Segregation Principle): 인터페이스 분리 원칙
    하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 하는 원칙

  5. DIP (Dependency Inversion Principle): 의존 역전 원칙
    자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스에 두어 변하기 쉬운 것의 변화에 영향을 받지 않게 하는 원칙
    ex) 타이어를 갈아끼울 수 있는 틀 만들고, 다양한 타이어를 교체 가능해야함
    -> 상위 계층은 하위 계층의 변화에 대한 구현으로부터 독립

3. 절차형 프로그래밍

로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다.
일이 진행되는 방식으로 그저 코드를 구현

  • 코드의 가독성이 좋고 실행속도가 빠르다.
  • 계산이 많은 작업에 쓰인다.

단점으로 모듈화가 어렵고 유지 보수성이 떨어진다.

profile
아키텍처 설계부터 고민하는 개발자

0개의 댓글