본문 바로가기
✨ Java/인터페이스(Interface)

자바(JAVA) - 인터페이스 (Interface) 연산과 배열

by 환풍 2023. 2. 15.
728x90

연산

MathUtil.interface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package math;
 
public interface MathUtil {
    // 매개변수로 받은 두 수 중 작은 수를 리턴.
    int getMin(int a, int b);
 
    // 매개변수로 받은 반지름을 가진 원의 둘레 리턴.
    //단, 매개변수로 들어온 반지름이 음수라면
    // 둘레는 0이 되어야 함.
    double getCircleArea(int radius);
 
 
    //첫번째 매개변수로 받은 수의 n제곱 값을 리턴
    // 첫번째 매개변수 : 3
    // 두번째 매개변수 : 4
    // 3 * 3 * 3* 3 - ?
    int getMultipul(int num1, int num2);
}
 
cs

MathUtil 인터페이스를 하나 생성하였다. 

이것은 회사가 제시한 요구사항과도 같다. 메소드 이름과, 매개변수를 몇개 사용할지 이러한 것들은 개발자마다 다 정하는 방식이 다르다.

즉, 모든 개발자가 이러한 메소드로 생성하라는 의미로 통일시켜주기 위해 사용하는 것이다.

 

MyMath.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package math;
 
public class MyMath implements MathUtil{
    @Override
    public int getMin(int a, int b) {
 
        if( a > b)
        {
            System.out.println("a : " + a + " b : " + b);
            System.out.println(b);
            return b;
        }
        else if( a == b)
        {
            System.out.println("같다.");
            return 0;
        }
        else
        {
            System.out.println("a : " + a + " b : " + b );
            System.out.println(a);
            return a;
        }
 
            // return a > b ? b : a ; 로 바로 풀순있다.
    }
 
    @Override
    public double getCircleArea(int radius) {
 
        if(radius < 0)
        {
            return 0;
        }
 
        return radius * 2 * Math.PI;
    }
 
 
    @Override
    public int getMultipul(int num1, int num2) {
 
        int sum = 1;
        for(int i =0; i<num2; i++)
        {
             sum = sum * num1;
        }
        return sum;
    }
}
 
cs

 

MathTest (Main 메소드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package math;
 
public class MathTest {
    public static void main(String[] args) {
        MyMath m = new MyMath();
        m.getMin(2,5);
 
 
        MyMath m2 = new MyMath();
        System.out.println(m2.getCircleArea(3));
 
        MyMath m3 = new MyMath();
        System.out.println(m3.getMultipul(3,3));
    }
}
 
cs

결과값

 

 


배열

 

MyArrayUtil.interface

1
2
3
4
5
6
7
8
9
10
11
12
package array;
 
public interface MyArrayUtil {
    //매개변수로 받은 두 정수형 배열의 모든 요소의 평균을 리턴
    double getTwoArrayAvg(int[] arr1, int[] arr2);
 
    //매개변수로 받은 배열의 모든 요소가 짝수이면
    //true, 배열 요소 중 하나라도 홀수면 false 리턴
    boolean isEvenArray(int[] array);
 
}
 
cs

 

 

MyArray.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package array;
 
public class MyArray implements MyArrayUtil{
    @Override
    public double getTwoArrayAvg(int[] arr1, int[] arr2) {
        int sum1 = 0;
        for(int i=0; i< arr1.length; i++)
        {
            sum1 = sum1 + arr1[i];
        }
 
        int sum2 = 0;
        for(int i=0; i< arr2.length; i++)
        {
            sum2 = sum2 + arr2[i];
        }
        double evg = (sum1 + sum2) / (double)(arr1.length + arr2.length);
 
        return evg;
    }
 
    @Override
    public boolean isEvenArray(int[] array) {
        for(int i =0; i< array.length; i++)
        {
            if(array[i] % 2 != 0)
            {
                return false;
            }
        }
        return true;
    }
}
 
cs

 

MyArrayTest (Main메소드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package array;
 
import java.util.Scanner;
 
public class MyArrayTest {
    public static void main(String[] args) { 
 
        MyArray myArr = new MyArray();
        // MyArrayUtil myArr1 = new MyArray(); 이렇게도 만들 순 있음.
 
        int a[] = {1,2,3,4,5};
        int b[] = {6,7,89};
        double result1 = myArr.getTwoArrayAvg(a,b);
 
        System.out.println(result1);
 
 
        int c[] = {2,2,2,2};
        boolean result2 = myArr.isEvenArray(c);
        System.out.println(result2);
    }
}
 
cs

결과값


인터페이스는 곧 약속중 하나로만 생각하자.

어차피 코드짜는 것은 Main메소드에서 Class 값을 호출하는 방식과 똑같다.

반응형

댓글