OCP(Open Closed Principle)이란? 객체는 확장에 대해 열려있어야 하고 수정에 대해서는 닫혀 있어야 한다. 위의 말처럼 소프트웨어는 기존 코드의 수정없이 새로운 기능이 추가될 수 있도록 설계되어야 한다. 다시 말해서 이미 개발된 클래스를 다른 클래스나 모듈에서 사용하고 있을 때, 기능 추가의 작업이 수행된다면 사용하는 부분에서의 코드 수정은 없어야 한다라는 말이다. 예시 아래의 예시를 살펴보자. MoviePlayer라는 객체가 있다고 하자. MoviePlayer는 "IronMan"이라는 영화를 입력받아서 재생시키는 기능을 구현하고 있다. public class MoviePlayer { public void Play(IronMan ironMan) { ironMan.Play(); } } p..