패스트캠퍼스 챌린지 34일차
인터페이스란?
인터페이스의 본질을 알아보기전에 간단하게 OOP에 대해서 다시 정리하고 넘어가자. OOP는 변경에 유연한 설계기법이다. OOP에서 자주 나오는 용어에는 다형성이 있다. 다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해주는 것을 의미한다. 다형성이 가능하도록 OOP세계에서는 상속,추상화,인터페이스라는 개념이 등장한다.
상속
정의는 부모 클래스의 모든 멤버를 하위 클래스가 물려 받는 것이다. 단, IS A 관계가 성립해야 한다. 아무런 규약 없이 상속을 하게 되면 객체간에 강한 결합을 가지게 된다.
추상화
데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의해 나가는 과정을 의미한다. 각 개별 개체의 구체적인 구현에 대한 상세함은 갖추는 것을 의미한다.
인터페이스
모든 기능을 추상화로 정의만 하고 구현은 하지 않은것을 의미한다.
상속과 인터페이스로 구현하는 다형성
상속과, 인터페이스는 어떤 방식으로 OOP에서 말하는 다형성을 가능하게 할까? 정답은 오버라이딩 이다. 상속을 받은 하위 클래스에서는 부모클래스의 메서드를 오버라이딩시켜서 다형성을 가능하게 한다. 인터페이스는 구현체클래스에서 인터페이스의 메서드들을 재정의하면서 다형성을 가능하게 한다.
다형성을 위해서 2개의 선택권이 있는것이다. 둘중에 어떤걸 사용하는게 좋을까? 개발자라고 하면 애자일 개발 방법론 이라는 말을 들어봤을것이다. 애자일 프로세스는 완전한 요구사항이 도출되지 않은상태에서 빠르게 개발하면서 지속적으로 새로운 요구사항과 변경사항을 적용하는 방식이다. 즉, 애자일 프로세스를 위해서 개발자는 변경에 유연하게 설계하고 개발해야 한다. 이를 흔히 유연성이라고 표현한다.
상속을 통해 다형성을 제공하면 자식클래스와 부모클래스는 강하게 결합되게 된다. 결합도는 변경에 유연하지 않게 하는 큰 장애물 이다. 왜 결합도가 올라갈까? 이유는 단순한다. 부모클래스를 상속받은 자식클래스에서는 부모클래스의 모든 메서드를 그대로 사용할 수 있다. 원치않은 메서드들도 상속되기 때문에 의도치 않은 버그도 발생시킬 수 있다.
인터페이스를 사용해서 프로그래밍을 하면 구체 클래스를 사용하지 않기 때문에 유연성이 올라간다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.