2019년 4월 29일 월요일

Hackerrank Day 19 Interfaces







알고리즘 연습 사이트


Day 19:Interfaces



 인터페이스는 추상클래스와 비슷하지만 좀 더 규칙을 강화한 문법이다. 
 인터페이스는 new를 이용하여 객체를 생성할 수 없다. 
 왜냐하면 인터페이스에는 몸체가 없는 메소드들 밖에 없기 때문이다.

인터페이스를 implement 하는 클래스들은 인터페이스의 메소드들을 무조건 구현해야 한다. 
 인터페이스를 implements해놓고 구현을 하지 않으면 컴파일 에러가 뜬다.

 인터페이스의 장점은 간단하게 말하면 이미 인터페이스를 구현한 클래스들이나 앞으로 구현될 클래스들의 기능이 예측이 가능하다는 것이다. 
 클래스를 직접 뜯어보지 않아도 기능을 예측 할 수 있다는 것은 실제 개발에서 매우 유용한 장점이다. 

 아래 문제는 어떤 자연수의 약수들의 합을 구현한 코드다.
AdvancedArithmetic 인터페이스를 구현한 것이 Calculator 클래스가 되고, Calculator 클래스에서는 반드시 divisorSum 메소드의 몸체를 구현해야만 한다. 



interface AdvancedArithmetic{
   int divisorSum(int n);
}
class Calculator implements AdvancedArithmetic {
    public int divisorSum(int n) {
        //약수들의 합 구하기
        int sum = 0;
        int i = 1 ;
        while(n >= i){
            if(n % i == 0){ //나누어 떨어지면
                sum += i ;
            }
            i++;     
        }
        return sum;
    }
}

i가 1부터 n이 될때까지 n을 나누면서 나머지가 0이면 나누어 떨어지므로 sum에 i의 값을 누적하고 sum을 리턴한다.


댓글 없음:

댓글 쓰기