이번에 알아볼 것은 Liskov Substitution principle과 Interface Segregation 원칙이다.
Liskov Substitution principle
이 원칙은 미국의 컴퓨터 과학자 바바라 리스코프(Barbara Liskov)가 만든 원칙이다.

이 원칙은 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환) 할 수 있어야 한다는 원칙이다.

즉, 메서드 f(t)에서 t의 값이 s가 되더라도 메서드는 작동되어야 한다는 것이 주요한 골자라 할 수 있다.
다음 코드 사진을 보자

이때, Fish와 관련된 클래스는 따로 설계해야 한다.
때문에, 이 원칙은 처음 설계할 때부터 고려하는 것이 바람직하다.
다른 코드 예시를 보자.

해당 코드는 '엔진 관련 차량'에 관련된 코드이며 치환이 가능하도록 설계가 되었다. 또한 에러가 나오는 경우(치환이 안되는 경우 & 엔진이 없는 경우)를 고려하여 코드를 짠 것을 알 수 있다.
Interface Segregation
인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 매서드에 의존하지 않아야 한다는 원칙이다.
큰 덩어리의 인터페이스를 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있도록 해야 한다.

사진과 같이 관련된 인터페이스를 각자 만들어 놓고 해당하는 클래스에서 인터페이스에서 사용하여 원칙을 지키도록 했다.