객체지향의 세계에서는 모든 것이 변한다. 변수나 객체의 필드값이 변하는게 아닌 객체에 대한 설계와 이를 구현한 코드가 변한다는 뜻 입니다. 사용자의 변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없습니다. 그래서 개발자는 객체를 설계할 때 이 '변화하는 미래를 어떻게 대비할 것인가' 를 고려해야 합니다. 가장 좋은 방법은 변화가 이루어질 때 이 변화의 폭을 최소한으로 줄여주는 것이다. 이 변화의 폭을 최소한으로 줄이기 위해 관심사의 분리가 필요합니다. 사용자는 자동차를 운전한다 라는 프로그램을 만드려고 합니다. 그런데 사용자가 아반떼를 운전하고싶다는 요구사항이 있습니다. 그럼 어떻게 코드를 구현할 수 있을까요? class Avante { public void accel(){ System.out.p..