week-3-day-4-report주차 week-3-day-4-report일차 일일보고서
[3주차 4일] 오늘의 수업 이야기
Section titled “[3주차 4일] 오늘의 수업 이야기”날짜: 2025년 07월 03일
오늘의 주제
Section titled “오늘의 주제”인터페이스와 다형성 - 유연한 설계의 힘
수업 진행 기록
Section titled “수업 진행 기록”오늘은 객체 지향의 꽃이라 할 수 있는 인터페이스와 다형성을 다뤘다. 주 강사가 “레고 블록처럼 끼워 맞출 수 있다”는 비유로 시작했을 때, 학생들의 호기심이 보였다.
ITodoUI라는 인터페이스를 정의하고, 이를 구현하는 여러 버전의 UI 클래스를 만들었다. SimpleTodoUI, DetailedTodoUI, ColorfulTodoUI 등 다양한 구현체를 만들어보았다.
IntelliJ의 Run Configuration을 사용해 프로그램 인자로 어떤 UI를 사용할지 선택할 수 있도록 했다. 같은 프로그램이 실행 시점에 다른 모습으로 동작하는 것을 보고 학생들이 감탄했다.
“인터페이스는 계약이다”라는 개념을 강조했다. 구현체가 반드시 지켜야 할 약속을 정의하는 것이 인터페이스의 역할임을 설명했다.
다형성의 실용적인 예로, 새로운 UI를 추가할 때 기존 코드를 전혀 수정하지 않아도 된다는 점을 보여주었다. 확장에는 열려있고 수정에는 닫혀있는 개방-폐쇄 원칙을 자연스럽게 체험했다.
학생 상담 노트
Section titled “학생 상담 노트”- 인터페이스와 클래스의 차이를 이해 못하는 경우. 인터페이스는 “무엇을” 하는지만 정의, 클래스는 “어떻게” 하는지까지 구현.
- implements 키워드의 의미 질문. 인터페이스의 계약을 이행한다는 의미로 설명.
- 왜 인터페이스 타입으로 변수를 선언하는지 의문. 다형성의 장점을 코드 교체 예시로 설명.
- IntelliJ에서 프로그램 인자 설정하는 방법을 모르는 경우. Run Configuration 설정 방법 시연.
교육자 성찰
Section titled “교육자 성찰”인터페이스와 다형성은 객체 지향의 핵심이지만 가장 어려운 개념이기도 하다. 추상적인 설명보다는 구체적인 코드와 실행 결과로 보여주는 것이 효과적이었다.
“레고 블록”이라는 비유가 특히 잘 통했다. 같은 규격(인터페이스)을 따르면 어떤 블록(구현체)이든 끼울 수 있다는 개념을 잘 이해했다.
학생들이 “이제야 객체 지향이 뭔지 조금 알 것 같다”는 반응을 보였다. 긴 여정이지만 중요한 이정표를 통과한 느낌이다.
- SOLID 원칙 중 나머지 원칙들도 차차 소개 예정
- 추상 클래스와 인터페이스의 차이는 나중에 설명
- 실무에서의 인터페이스 활용 사례 준비