1. 자료 추상화
public class Vehicle {
	private Weight weight;
  private Capacity capacity;
 
  private Vehicle(Weight weight, Capacity capacity){
      // 생략
  }

  // getter
  // setter
}

public interface Vehicle { // <-- 자료구조가 드러난다.
  Weight getWeight();     // <-- 자료가 그대로 드러난다.
  Capacity getCapacity();
}

public interface Vehicle { // <-- 객체. 자료구조가 드러나지 않는다.
  getVehicleWeightCapacityRemaining(); // <-- 함수만 드러낸다.
}
  1. 자료/객체 비대칭
절차지향적 객체지향적
자료구조를 사용 추상화된 함수 사용 (자료구조는 숨긴다)
함수 추가가 쉽다. 클래스(자료구조)를 추가하기 쉽다
새로운 함수를 추가해야할 때 새로운 자료 타입이 필요할 때
  1. 디미터 법칙
  1. 자료 전달 객체