2022.03.02
6장. 객체와 자료구조
자료의 추상화
그저 조회 함수와 설정함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.
자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.
(p.119)
자료/객체 비대칭
객체 지향 코드에서 어려운 변경은 절차적 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다.
(p.122)
디미터의 법칙
모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙
객체는 조회 함수로 내부 구조를 공개하면 안된다는 의미이다. 낯선 사람은 경계하고 친구랑만 놀라는 의미다.
기차충돌 ,잡종구조, 구조체감추기
(p.123 ~ p.125)
자료 전달 객체
자료 구조체 == 자료 전달 객체 (Data Transfer Object, DTO)
공개 변수만 있고 함수가 없는 클래스
데이터베이스에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로 변환하는 일련의 단계에서 가장 처음으로 사용하는 구조체
Bean 구조 비공개 변수 (private)를 조회/ 설정 함수로 조작한다. -> 사이비 캡슐화
(p.126)
활성레코드 == DTO의 특수한 형태
데이터베이스 테이블이나 다른 소스에서 자료를 직접 변환한 결과이다.
여기에 비즈니스 규칙 메서드 추가하는 것은 바람직하지 않다. 자료구조로만 취급한다.
(p.127)
객체
동작공개/ 자료구조 숨김
기존 동작에 새 객체타입 추가 쉬움, 기존 객체에 새 동작 추가는 어려움
새로운 자료타입 추가하는 유연성이 필요할 때 -> 객체
자료구조
자료 노출
새 동작 추가 쉬움, 기존 함수에 새 자료구조 추가 어려움
새로운 동작을 추가하는 유연성이 필요할 때 -> 자료구조, 절차적인 코드
두리뭉실한 개념이 눈송이처럼 잡히는 기분이다. 이전보다는 확실히 알겠지만, 추가적인 공부가 필요하다.
객체와 절차적인 코드를 직접 구현하거나 코드를 실행해 볼 것!