자바 프로그램에 대한 두번째 글입니다. 천천히 따라서 실습해 보시기 바랍니다. 그리고 개념과 원리를 명확히 이해하시기 바랍니다.

1. 클래스를 이용하는 예제

클래스를 하나 만든 후 만든 클래스를 다른 클래스에서 사용하는 예제이다.

■ HelloJava.java

package firstpackage;
public class HelloJava {
    public static void main(String[] args) {
        HelloCalled obj = new HelloCalled();
        obj.helloCalled();   // 아래 메소드를 직접호출한것과 동일
        System.out.println(obj.num);
        System.out.println(obj.str);
        obj.returnMeth();
    }
}

결과
10  안드로이드
Total = 55

설명

new HelloCalled(); 부분을 생성자라고 한다. 생성자는 이름 규칙이 클래스처럼(첫글자 대문자) 되어 있지만 사실 메소드이다. 초기화를 시키거나 해당 객체가 생성되면 한번 수행되는 역할을 한다.

■ HelloCalled.java

package firstpackage;
public class HelloCalled {
  HelloCalled(){ // 생략
  }
    //변수(variables)
    int num;
    String str;
    //메소드(method)
    public void helloCalled(){
        this.num = 10;       // this는 num이나 str을 의미한다.
        this.str = "안드로이드";
    }
    public void returnMeth(){
        int sum = 0;
        for(int i = 1; i <= 10; i++){
 sum += i;   
        }
        System.out.println("Total = " + sum);
    }
}

설명
보통 위와같은 방법처럼 메소드에서 어떤 결과를 수행하는 방법처럼 사용한다. 패키지안에 여러개의 클래스를 만들어 놓게 되면 쉽게 생성자를 통한 접근이 가능해 진다. 다른 앱에서도 필요한 경우 아예 패키지를 통째로 import시키면 수월하게 이용할 수 있을 것이다.

return을 사용하여 값 되돌려 보내기
아래 예제는 위의 예제에 있는 메소드에서 출력하는 방법을 쓰지 않고 값을 되돌려주는 방법을 사용한 예제이다.
메소드에서 값을 보낼 때는 return을 사용하는데 return은 하나의 값만 보낼 수 있다. 하지만 실제 프로그래밍 시에는 여러 개의 값을 보낼 수도 있어야 하므로 추후에 레퍼런스 타입에 대해 배워야 한다. 일반적으로 return값은 int, string, array, arraylist, class(Javabean) 방법을 사용한다.

■ HelloJava1.java

package firstpackage;
public class HelloJava1 {
    public static void main(String[] args) {
        HelloCalled1 obj = new HelloCalled1();
        int abc = obj.returnMeth();  // 결과를 받아야 하므로
        System.out.println("Total = "+abc);
    }
}



결과
Total = 55

■ HelloCalled1.java

package firstpackage;
public class HelloCalled1 {
    int num;
    String str;
}
public int returnMeth(){
    int sum = 0;
    for(int i = 1; i <= 10; i++){
        sum += i;
    }
    return sum;
}

설명
이전 예제와 달리 반환하는 값이 있으므로 returnMeth() 앞에 void 대신 리턴하는 값의 타입을 표시하며 호출한 프로그램(HelloJava1.java)쪽에서는 리턴값을 받는 변수를 지정하며 이 변수 역시 같은 Type(타입)이어야 한다.

이번에는 메소드를 호출하기만 하지 않고 메소드 쪽으로 값을 보내는 방법을 사용해보도록 하겠다. 호출할 때는 "메소드(변수,변수)" 형태를 사용하며 호출 받는 메소드쪽에서는 변수의 타입을 반드시 표시해야 한다. 즉, "메소드(변수타입 변수, 변수타입 변수)" 처럼 기입해야 하며 반드시 보내고 받는 변수의 개수 또한 동일해야 한다.

■ HelloJava2.java

package firstpackage;
public class HelloJava2 {
    public static void main(String[] args) {           
       HelloCalled2 obj = new HelloCalled2();
       int aaa = obj.returnMeth();
       System.out.println("Total = "+aaa);
       int num1 = 33;
       int num2 = 67;
       System.out.println(obj.moveMeth(num1, num2));
    }
}

결과
Total = 55
100

■ HelloCalled2.java

package firstpackage;
public class HelloCalled2 {
    int num;
    String str;
    public int returnMeth(){
        int sum = 0;
        for(int i = 1; i <= 10; i++){
 sum += i;
        }
        return sum;
    }
 
    public int moveMeth(int num1, int num2){
        int sum = 0;
        sum = num1 + num2;
        return sum;
    }
}

프로그래밍 작성 요령으로 메소드를 만들 때는 일단 void로 시작하는 것이 좋다. void로 시작하면 에러가 발생되지 않으며 추후 리턴값이 결정될 때 void 대신 실제 타입으로 변경하는 방법을 사용하는 것이 좋다.


저작자 표시 비영리 변경 금지
신고

'자바(JAVA)' 카테고리의 다른 글

자바 실행파일(exe) 만들기  (5) 2011.10.24
자바 프로그램 이해 - 5  (0) 2011.10.24
자바 프로그램 이해 - 4  (0) 2011.10.24
자바 프로그램 이해 - 3  (0) 2011.10.24
자바 프로그램 이해 - 2  (0) 2011.10.13
자바 프로그램 이해 - 1  (0) 2011.10.12
Posted by 천왕지짐