컬렉션이나 레코드의 게터/세터, 그리고 가변데이터와 관련된 문제가 무엇이고 그 해결책을 설명하시오.

기법’들 중에는 다소 무의미한 방법들이 설명되곤 한다. 이번 7장의 기법 ‘절차’ 들 중에 가장 필요없는 설명이 들어간 절차를 찾으시오.

3. “기본형을 객체로 만들기“ 기법과 어울리는 악취가 무엇인지, 객체로 표현하는게 유리하지만 기본형으로 표현하는 경우가 잦은 예시를 하나 찾아 서술하시오.

  1. 리팩터링

5. 캡슐화는 OOP의 핵심 패러다임중 하나다. 일반적으로는 클래스와 연관지어 설명되곤 하지만, 본 책에서는 객체화와는 별개로 캡슐화를 사용한다. 예를들어 변수 캡슐화가 대표적인데. (java/c#과 같은) 강요된 oop가 아닌 언어로 개발해본 경험이 있다면 이와 관련해 어떤 불편함이 있었는지. 없었다면 굳이 객체 밖의 변수 등, 강요된 oop가 아닌 요소를 사용할 이유가 있는지, 개인의 생각을 서술하시오.

예전에 과제로 C언어를 이용하여 학사 관리 시스템을 만들었던 경험이 있다. 모든 코드를 하나의 함수에 넣으면 이해하기 어렵기 때문에 구조체를 활용하고는 했다. 구조체에 값을 담고 구현을 했었는데, 요구사항을 반영하면서 로직도 길어졌다. 구조체의 내부값을 접근해서 이용하다보니 어디에서나 값을 접근하고 수정하기 쉬웠다. 반대로 에러가 발생했을때 내가 의도하지 않은 곳에서 값이 이미 변경되어있어 어디에서 오류를 발생했는지 캐치하기 어려웠던 기억이 있다. 본격적으로 Java와 같은 OOP 언어를 접하면서 캡슐화 개념을 접하게 되었다. 처음에는 익숙하지 않았지만 값을 접근하기 위해 메서드를 접근하는 방식이 외부에서 값을 변조해서 발생되는 오류를 줄일 수 있었다.