week-3-day-2-report주차 week-3-day-2-report일차 일일보고서
[3주차 2일] 오늘의 수업 이야기
Section titled “[3주차 2일] 오늘의 수업 이야기”날짜: 2025년 07월 01일
오늘의 주제
Section titled “오늘의 주제”캡슐화와 정보 은닉 - 데이터를 보호하라
수업 진행 기록
Section titled “수업 진행 기록”어제 만든 Todo 클래스의 문제점을 직접 경험하는 것으로 시작했다. 한 학생이 실수로 todo.title = null을 입력했고, 프로그램이 NullPointerException으로 종료되었다. 이 순간이 캡슐화의 필요성을 설명하는 완벽한 타이밍이었다.
주 강사가 private 접근 제어자의 개념을 설명하고, 실습 강사로서 학생들이 getter/setter 메서드를 구현하도록 도왔다. 처음에는 “왜 직접 접근하는 것보다 복잡하게 만드나”라는 반응이 있었다.
setter 메서드에 유효성 검사를 추가하면서 캡슐화의 진가가 드러났다. setTitle() 메서드에서 null이나 빈 문자열을 거부하도록 했더니, “아, 이래서 필요하구나!”라는 반응이 나왔다.
“보호해야 안전하다”는 원칙을 강조했다. 은행 금고를 예로 들어, 누구나 접근할 수 있으면 위험하듯이 데이터도 보호가 필요하다고 설명했다.
IntelliJ의 Generate 기능으로 getter/setter를 자동 생성하는 방법도 안내했다. 수동으로 작성하는 것보다 훨씬 빠르고 실수가 적다는 점을 체감했다.
학생 상담 노트
Section titled “학생 상담 노트”- private으로 바꾸니 main에서 접근이 안 된다는 문의. getter/setter를 통한 접근 방법 안내.
- getter는 왜 get을 붙이고 boolean은 is를 붙이는지 질문. Java 명명 규칙 설명.
- setter에서 this 키워드의 의미를 모르는 경우. 인스턴스 변수와 매개변수 구분 설명.
- 모든 필드에 setter가 필요한지 질문. 불변 객체의 개념 간단히 소개.
교육자 성찰
Section titled “교육자 성찰”캡슐화는 객체 지향의 핵심 원칙 중 하나다. 단순히 문법을 가르치는 것이 아니라, 왜 필요한지를 체험하게 하는 것이 중요했다.
학생들이 처음에는 번거롭다고 느꼈지만, 유효성 검사와 데이터 보호의 중요성을 이해하고 나니 자연스럽게 받아들였다.
실무에서는 Lombok 같은 도구를 사용하지만, 기본 원리를 이해하는 것이 먼저다. 도구는 나중에 소개해도 늦지 않다.
- 불변 객체(Immutable Object) 개념 추가 설명 준비
- 캡슐화의 다른 장점들(유지보수, 변경 영향 최소화) 설명 자료
- IntelliJ 단축키 모음 배포