본문 바로가기
STUDY/JAVA

Interface2

by NOTEEE 2018. 1. 22.

Interface를 사용하는 이유?

- 각각의 개발자가 개발하는데 있어 명세서 역할을 하는 것.(인터페이스 == 명세서)

- 여러개발자간의 프로젝트를 개발하는데 있어 필요한 기능들을 인터페이스로 정의해놓음으로서 일정단축 및 협업자들간의 구체적인 약속을 정의하는 것.


A개발자는 - 계산기 핵심? 로직개발을 개발하기로하고,

B개발자는 - 사용자가 입력했을때 결과를 출력하는 부분을 개발하기로 합니다.

두 개발자는 계산기를 만들기로 하여 만나서 기능을 정의 및 인터페이스를 정의합니다.


Calculatable 인터페이스 정의

public interface Calculatable {
    public void setOprands(int first, int second, int third) ;
    public int sum(); 
    public int avg();
}
cs

이젠 A, B개발자가 개발을 시작합니다.


A개발자 소스

public class Calculator1 implements Calculatable {
    int first, second, third;
    public void setOprands(int first, int second, int third) {
        this.first = first;
        this.second = second;
        this.third = third;
    }
    public int sum() {
        return this.first + this.second + this.third;
    }
    public int avg() {
        return (this.first + this.second + this.third) / 3;
    }
}
cs

A개발자는 Calcuator1 클래스를 생성하여 Calculatable 인터페이스를 구현합니다.




B개발자는 A개발자가 개발이 끝날 때까지 기다릴 수 없기에 더미데이터를 만들어서 개발을 시작합니다.


B개발자 소스

public class CalculatorDummy implements Calculatable{
    public void setOprands(int first, int second, int third){
    }
    public int sum(){
        return 60;
    }
    public int avg(){
        return 20;
    }
}
cs


B개발자는 더미클래스를 생성하여 Calculatable 인터페이스를 구현합니다.


B개발자 입출력을 해주는 소스

public class CalculatorConsumer {
    public static void main(String[] args) {
//        CalculatorDummy c = new CalculatorDummy();
        Calculator1 c = new Calculator1();
        c.setOprands(102030);
        System.out.println(c.sum()+c.avg());
    }
}
cs

CalculatorDummy를 생성하여 개발하던 B개발자는 A개발자가 계산기 핵심?로직이 개발완료되었다는 연락을 받습니다.

그럼

CalculatorDummy를 객체생성부분을 주석처리를 하고 A개발자가 생성한 Calculator1 객체생성부분을 추가해주면 완료가 됩니다.



이렇게 인터페이스를 이용해서 서로가 동일한 메소드를 만들고록 인터페이스(명세서)를 만들어서 공유하면, 각자가 상대의 일정이나 구현하는 방식에 덜 영향을 받으면서 애플리케이션을 구축 할 수 있습니다.

'STUDY > JAVA' 카테고리의 다른 글

다형성(Polymorphism)1  (0) 2018.01.22
Interface3  (0) 2018.01.22
Interface1  (0) 2018.01.22
Abstract2  (0) 2018.01.22
Java의 String interpolation[문자열 덧붙이기]  (0) 2018.01.22