OOP와 특징에 대해 설명해주세요.

최관수·2023년 9월 9일
0

기술면접

목록 보기
12/58

내용 정리

  • 객체 지향 프로그래밍은 프로퍼티와 메소드로 이루어진 각 객체들의 상호 작용을 중심으로 코드를 작성하는 것을 말합니다. 객체 지향 프로그래밍은 크게 추상화, 캡슐화, 상속, 다형성 이렇게 네 가지의 특징을 갖고 있습니다. 우선 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미합니다. 추상화는 React 같은 컴포넌트 기반의 라이브러리에서도 사용하는 개념인데 재사용성과 범용성 이 두 가지에 밀접한 관계가 있겠습니다. 캡슐화는 서로 연관되어 있는 속성과 기능들을 하나의 캡슐로 만들어 객체의 특정 프로퍼티에 직접 접근하지 못하도록 막고 외부로부터 보호하는 것을 뜻합니다. 핵심 키워드는 데이터의 보호와 은닉입니다. getter, setter를 통해 캡슐화를 구현할 수 있습니다. 그 다음엔 상속이 있습니다. 상속은 하나의 객체가 다른 객체의 프로퍼티와 메소드를 물려받는 경우입니다. 예컨대 User라는 생성자 메소드를 사용할 때 일반 유저와 프리미엄 유저로 나눠서 생성한다고 가정하면, extends 키워드를 사용해서 일반 유저의 프로퍼티를 상속 받고 프리미엄 유저는 레벨 프로퍼티만 재설정하는 방식으로 선언이 가능합니다. 자연스럽게 코드의 재사용성이 좋아지고 공통 유저의 프로퍼티를 상속 받기 때문에 반복적인 코드의 수정 작업 시 휴먼 에러를 방지할 수 있습니다. 마지막으로는 다형성이 있는데, 다형성이라는 말 그대로 상속을 통해 기능을 확장하거나 변경하는 것이 가능합니다. OOP에서 다형성의 개념을 녹여내는 방법은 두 가지가 있는데, 오버라이딩(Overriding)과 오버로딩(Overloading)입니다. 다만 자바스크립트에서는 문법적으로 오버로딩을 제공하진 않습니다.

꼬리 질문

  • 그럼 절차 지향 프로그래밍에 대해서도 아시나요? 간략하게 설명 가능하실까요?
    • 쉽게 말해서 변수와 함수를 가지고 작업의 순서에 맞게 코드를 작성하는 것을 뜻하는데, 순차적인 처리가 핵심이고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다.
  • 오버라이딩과 오버로딩에 대해서 설명해주세요.
    • 자식 클래스에서 부모 클래스와 동일한 method 이름을 짓고 재정의해서 사용하는 것을 오버라이딩이라고 합니다.
  • 클로저와 캡슐화의 차이가 있을까요?
  • 다형성에서 오버라이딩과 오버로딩의 차이가 있을까요?
  • 캡슐화의 예시를 들 수 있을까요?
  • 각 특징마다 간단한 예시를 들어주실 수 있을까요?

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글