객체지향 설계의 핵심인 인터페이스와 추상 클래스의 차이를 파악하고 확장성 있는 시스템을 설계했다.
코드 재사용성을 높이면서 객체의 독립성을 보장하는 최적의 추상화 전략을 수립했다.
공통 로직을 공유하는 추상 클래스와 기능 수행을 약속하는 인터페이스의 다중 구현 특성을 대조했다.
Machine 추상 클래스로 기본 동작을 정의하고 IPrintable 인터페이스로 기능을 확장하는 예제를 구현했다.
SmartPrinter 클래스를 완성하며 추상화가 복잡한 요구사항을 얼마나 단순하게 만드는지 실감했다.
두 도구를 적절히 조합하는 능력이 소프트웨어의 유지보수성을 결정짓는 핵심임을 배웠다.
명확한 추상화 설계가 팀 협업 시 의사소통 효율을 극대화한다는 사실을 확인했다.
객체 간 결합도를 낮추고 변화에 강한 코드를 만들기 위해 정교한 설계를 지속적으로 실천했다.