위클리 페이퍼 2주차 정리

코드잇
이 글은 읽는데 약 4분이 걸립니다.

Q1. 절차지향 프로그래밍(Procedural Programming)객체지향 프로그래밍(Object-Oriented Programming)의 차이점에 대해 설명해 주세요.

A1. 절차지향 프로그래밍은 함수를 중심으로, 절차(순서)와 흐름대로 프로그래밍하는 프로그래밍 패러다임을 뜻한다. 주로 Pascal, C와 같은 오래된 프로그래밍 언어에서 절차지향 프로그래밍이 사용되며, 함수 위주의 재사용성을 갖는다.

반면, 객체지향 프로그래밍은 객체를 중심의 프로그래밍 패러다임을 뜻하는데, 여기서 객체란 현실에 존재하는 사물에 대한 추상화이다. 객체지향 프로그래밍은 절차지향 프로그래밍의 낮은 코드 재사용성과 개발 속도를 보완하기 위해 등장하였으며, 클래스 재사용, 상속 등으로 코드 재사용성을 높일 수 있다.

테이블로 정리하면 다음과 같다.

핵심 개념의 차이

구분절차지향 프로그래밍객체지향 프로그래밍
중심 개념함수(절차), 순차적인 처리 흐름객체(데이터 + 기능)
주요 요소함수, 변수클래스, 객체, 메서드
데이터와 함수 관계데이터와 함수가 분리됨데이터와 함수가 결합됨 (객체 내부)
접근 방식무엇을 먼저 할지 (절차 중심)누가 처리할지 (객체 중심)

특징 비교

항목절차지향객체지향
구조화함수 중심클래스/객체 중심
재사용성낮음 (함수 재사용 중심)높음 (클래스 재사용, 상속 등)
확장성수정 시 전체 흐름에 영향객체 단위로 분리되어 확장 쉬움
보안성데이터가 전역적으로 공유되기 쉬움캡슐화로 데이터 은닉 가능
복잡한 시스템에 적합?작고 단순한 프로그램에 적합대규모 시스템 개발에 적합
대표 언어C, Pascal 등Java, Python, C++, C# 등

Q2. 프로미스(Promise)의 3가지 상태에 대해 설명해 주세요.

A2. Javascript의 비동기 처리 객체인 Promise는 세 가지 상태를 갖는다.

1. Pending (대기)

Pending 상태는 말 뜻 그대로 대기 상태를 나타내며, Promise 객체가 생성된 후 갖는 초기 값이다. Promise를 반환하는 비동기 함수를 호출하자마자 반환하는 등, 아직 비동기 작업이 끝나지 않은 상태에서 반환하면 Pending 상태의 Promise 객체를 반환받는다.

Pending 상태는 다음과 같은 특징을 갖는다.

  • 초기 값
  • Promise가 아직 결과를 반환하지 않은 상태
  • 비동기 작업이 아직 완료되지 않았거나, 결과도 아직 결정되지 않은 상태

2. Fulfilled (이행됨)

Fulfilled 상태는 Pending 상태에 있는 비동기 작업이 성공적으로 완료되면 전환되는 상태이다. Promise의 콜백 함수 안에서 resolve 메서드를 호출하는 걸 본 적이 있을 텐데, resolve 메서드를 호출하면 Pending 상태에서 Fulfilled 상태로 전환된다.

정리하면 다음과 같다.

  • 비동기 작업이 성공적으로 완료된 상태
  • resolve 메서드가 호출되면 이 상태로 바뀜
  • 이행된 후에는 .then()으로 결과값을 받을 수 있음

Rejected 상태는 Fulfilled 상태와는 반대로, 비동기 작업에 실패하면 전환되는 상태이다. Promise의 콜백 함수 안에서 reject 메서드를 호출하면 Pending 상태에서 Rejected 상태로 전환된다.

정리하면 다음과 같다.

  • 비동기 작업에 실패했거나 오류가 발생한 상태
  • reject 메서드가 호출되면 이 상태로 바뀜
  • 거부된 후에는 .catch()로 오류를 처리할 수 있음

참고로 Promise는 한 번 결정되면(Pending -> Fulfilled/Rejected) 상태가 바뀌지 않으며, 그 이후엔 결과만 참조할 수 있게 된다.