Object Oriented Programming
객체지향 프로그래밍이란 무엇인가요? 그리고 객체지향의 4대 특징에 대해 설명해주세요.
캡슐화와 정보은닉은 같은 개념인가요? 차이점이 있다면?
데이터를 직접 접근하지 못하게 막았을 때, 조회/수정은 어떻게? 장단점은?
모든 필드에 getter/setter를 제공하면 문제는?
getter/setter 대신 어떤 방식으로 캡슐화를 지킬 수 있을까?
이런 방식은 어떤 설계 원칙과 관련이 있을까?
객체 중심 설계가 유지보수성과 확장성에 미치는 영향?
객체지향에서 말하는 '다형성(Polymorphism)'이란 무엇인가요? 그리고 다형성이 왜 중요한지 설명해주세요.
자바에서는 다형성을 어떻게 구현하나요? 구체적인 예시 코드와 함께 설명해줄 수 있나요?
"Payment" 인터페이스와 그것을 구현한 "CardPayment"와 "KakaoPayPayment" 클래스가 있다고 가정해볼게요. 이 구조를 다형성을 활용해서 설계한다면, 어떤 식의 코드가 될 수 있을까요? 그리고 이 구조가 실제로 어떤 유연함을 제공하는지도 같이 설명해주세요.
이렇게 다형성을 잘 활용하는 구조가, SOLID 원칙 중 어떤 원칙들과 연결될 수 있을까요? 연결되는 원칙을 하나 이상 들어보고, 그 이유도 설명해줘.
자바에서 다형성을 사용할 때, instanceof나 getClass()를 사용해서 타입을 체크한 뒤 캐스팅해서 사용하는 경우도 종종 있어. 이런 방식은 어떤 문제를 일으킬 수 있을까? 그리고 이걸 객체지향적으로 어떻게 해결할 수 있을까?
instanceof나 getClass()를 사용해서 타입을 체크한 뒤 캐스팅해서 사용하는 경우도 종종 있어. 이런 방식은 어떤 문제를 일으킬 수 있을까? 그리고 이걸 객체지향적으로 어떻게 해결할 수 있을까?자바에서 다형성의 기반이 되는 개념인 ‘동적 바인딩’이란 무엇인가요? 그리고 이것이 정적 바인딩과 어떻게 다른지도 설명해주세요.
다형성이 잘 구현되어 있는 시스템은 테스트 코드 작성에 어떤 이점이 있을까요? Mock 객체나 의존성 주입과 관련해서도 설명해줘.
Last updated