interface는 객체 지향 프로그래밍에 있어서 중요한 개념입니다. 객체 지향 프로그래밍에서 중요시하는 여러 아이템이 있지만 그 중 하나가 코드 수정을 최소화하는 것입니다. 이를 위해 강한 결합 (객체 간 직접 참조)을 최소화하고 약한 결합을 지향합니다. 객체가 추가되거나 삭제되어도 이를 이용하는 소스에 변화가 발생하지 않도록 하자는 것입니다. 아래의 예시 코드가 강한 결합의 예입니다. 원래 Bus만 운전하던 Driver가 있습니다. 그런데 Truck이 새로 생겼습니다. 이 Driver는 Truck을 운전하기 위해 본인의 클래스에 go(Truck) 에 대한 함수를 추가해야만 했습니다. #include using namespace std; class Bus { public: void accelerator..