학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 154 · 실전 면접 답변

객체 지향 프로그래밍(OOP)의 특징과 설계상 트레이드오프는 무엇인가요?

이렇게 답해 보세요 (핵심 답변)

객체 지향 프로그래밍은 관련된 상태(데이터)와 행동(메서드)을 객체라는 책임 단위로 묶고, 추상화·캡슐화·상속·다형성을 통해 복잡한 시스템의 변경 영향을 관리하는 설계 패러다임입니다. 내부 구현을 숨기고 공개 인터페이스만 노출하는 캡슐화와, 조건문 분기 대신 동일한 인터페이스로 서로 다른 구현체를 교체할 수 있는 다형성은 프론트엔드 도메인 모델링과 테스트 대역(Mock/Fake) 주입에서도 매우 유용합니다. 다만 깊은 클래스 상속 계층은 부모·자식 간 결합도를 높여 변경을 어렵게 만들 수 있으므로, 상속보다 객체 조합(Composition)과 인터페이스 기반 설계를 우선 검토하는 것이 좋습니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 외부 모듈이 객체의 내부 데이터 구조에 직접 의존하지 않게 캡슐화하면 요구사항이 바뀔 때 수정 범위를 해당 객체 내부로 국한할 수 있습니다.
  2. 프론트엔드에서도 스토리지 어댑터나 API 클라이언트처럼 외부 의존성을 인터페이스로 추상화하면 UI와 독립된 단위 테스트가 쉬워집니다.

면접에서 자주 하는 실수

모든 코드를 무조건 class 키워드와 깊은 상속 트리로 작성하는 것이 좋은 객체 지향 설계라고 오해해서는 안 됩니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 154번을 바탕으로 질문과 답변을 새로 정리했습니다.

← 프론트엔드 설계