[JAVA Questions] 객체지향 프로그래밍 예상질문
객체지향 개념에 대한 자주 나오는 질문 정리
[JAVA Questions] 객체지향 프로그래밍 예상질문
1. 객체지향 이란?
현실세계의 사물이나 개념을 객체로 표현하고 이 객체들 간의 상호작용을 통해 프로그램을 구성하는 방식
2. 절차지향 프로그래밍에서 데이터와 기능이 분리되어 있을 때 발생할 수 있는 문제점은?
데이터와 로직이 분리되어 있어 데이터의 상태를 예측하거나 제어하기 어렵고, 로직이 복잡해질수록 의존성이 커져 유지보수가 어려워짐. 변경 시 연쇄적으로 영향을 미치기 쉬움.
3. 객체지향 프로그래밍이 유지보수와 확장성 측면에서 절차지향보다 유리한 이유는?
객체가 자신만의 책임을 가지므로 수정이 필요한 부분만 집중적으로 변경 가능함. 관련 코드가 한 객체 내부에 모여 있어 영향 범위가 작고, 기능 추가나 변경이 수월함.
4. 객체지향 프로그래밍에서 ‘캡슐화’는?
객체의 내부 데이터를 외부로부터 숨기고, 필요한 기능만 공개함으로써 데이터 보호와 일관성 유지, 코드 안정성과 재사용성을 높이는 역할
5. 객체지향 프로그래밍에서 ‘모듈화’는 어떤 장점이 있으며, 실무에서는 어떻게 활용?
기능을 독립적인 단위로 나눔으로써 역할이 명확해지고, 각 모듈의 재사용성과 테스트 용이성이 높아짐. 실무에선 고객, 주문, 상품 등의 도메인별로 모듈을 나누어 개발과 협업이 쉬움.
6. 절차지향 방식이 유리한 상황은?
프로그램 구조가 단순하고 순차적 실행 흐름이 중요한 경우
7. 객체지향 설계에서 ‘데이터와 기능을 하나의 단위로 묶는다’는 말의 의미는 ?
객체는 자신의 상태(데이터)를 스스로 관리하고, 그 상태를 다루는 기능(메서드)도 함께 가짐. 이렇게 하나의 단위로 책임과 기능이 묶이면 응집도가 높아지고 유지보수가 쉬움.
8. 재사용성과 확장성의 관점에서 객체지향 프로그래밍이 절차지향보다 좋은 점?
상속, 추상화, 다형성 같은 특징 덕분에 기존 클래스를 수정하지 않고도 기능을 확장하거나 재사용할 수 있음. 비슷한 구조의 객체들을 쉽게 만들 수 있어 유연함.
9. 절차지향과 객체지향은 서로 완전히 반대되는 개념 ?
서로 반대되는 개념은 아니며, 프로그래밍의 두 가지 방식일 뿐. 객체지향 내부에서도 프로그램의 실행 흐름은 절차적으로 흘러가므로, 두 방식을 혼합해 사용할 수 있음.
복습을 자주 하자.
This post is licensed under
CC BY 4.0
by the author.