Contents

조회 수 386 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


3.4.3 변수와 메서드 결합의 의미 II

앞에서는 메서드로만 이루어져 있는 클래스 즉 메서드와 변수가 분리되어 있는 경우를 테스트하기 위해서 메서드로만 이루어진 클래스를 작성해보았다. 이제 변수와 메서드가 결합된 형태의 클래스를 작성해보자.

□ UnitedData 클래스의 특징
◇ 데이터를 멤버 변수로 보유한 상태에서 메서드를 호출한다. 그렇기 때문에 메서드를 호출할 때 매개변수를 통해서 데이터를 넣어줄 필요가 없다.
◇ 변수와 메서드가 결합된 형태로 멤버 변수를 멤버 메서드가 이용하는 예를 보여주고 있다.

메서드와 변수가 결합된 형태의 클래스를 만들기 위해서 앞의 SeparatedData 클래스에 변수를 추가한 후 약간 수정하였다.

§ chap03\UnitedData.java
 
/**
메서드와 변수가 결합된 형태의 클래스
**/
public class UnitedData {
    public int x;   //멤버 변수의 선언 
    public int y;   //멤버 변수의 선언 
    public int plus() {//멤버 메서드의 선언 
        return x + y;
    }
    public int minus(){//멤버 메서드의 선언 
        return x - y;
    }
    public int divide(){//멤버 메서드의 선언 
        return x / y;
    }
    public int mul(){//멤버 메서드의 선언 
        return x * y;
    }
/***
c:\javasrc\chap03>javac UnitedData.java
***/

UnitedData는 2개의 멤버 변수와 4개의 멤버 메서드를 가지고 있다. 특징적인 것은 2개의 멤버 변수를 4개의 멤버 메서드가 이용하고 있다.

멤버 변수인 x, y의 값을 한번만 세팅해주면, 클래스 내부의 메서드들은 값을 매개변수로 받을 필요가 없는 것이다. 멤버 변수에 할당된 값을 이용해서 멤버 메서드를 호출할 수 있다. 이것은 상태 유지의 개념을 담고 있다.

□ 상태 유지의 개념
◇ UnitedData 클래스에서 멤버 변수 x, y의 값이 한번 설정되면, 이 멤버를 사용하는 메서드에 영향을 미치기 때문에 객체의 상태를 유지하면서(세팅된 값으로 유지하면서) 지속적으로 메서드를 호출할 수 있다.

객체의 상태 유지라고 해서 특별한 것은 없다. 객체의 메모리에 값을 한번 세팅한 후 계속해서 세팅된 값을 이용해서 멤버 메서드를 호출할 수 있다는 측면에서 상태유지라는 단어를 사용한 것뿐이다.

다음은 위에서 선언한 멤버 변수와 멤버 메서드의 목록이다.

□ UnitedData의 멤버 변수
◇ public int x;
◇ public int y;

□ UnitedData의 멤버 메서드
◇ public int plus(){...}
◇ public int minus(){...}
◇ public int divide(){...}
◇ public int mul(){...}

UnitedData 데이터 타입을 만들었다면 사용해보자. 다음은 UnitedData 클래스를 테스트하는 예이다.

§ chap03\UnitedDataMain.java
 
/**
UnitedData 클래스를 테스트하는 예
**/
public class UnitedDataMain{
    public static void main(String[] args){
        UnitedData d = new UnitedData(); //UnitedData 객체 생성 
        d.x = 5; //멤버 변수에 값할당 
        d.y = 10; //멤버 변수에 값할당 
  
        System.out.println(d.minus()); //멤버변수를 이용한 minus() 메서드 호출 
        System.out.println(d.plus()); //멤버변수를 이용한 plus() 메서드 호출 
        System.out.println(d.divide()); //멤버변수를 이용한 divide() 메서드 호출 
        System.out.println(d.mul()); //멤버변수를 이용한 mul() 메서드 호출 
    
/***
c:\javasrc\chap03>javac UnitedDataMain.java
c:\javasrc\chap03>java UnitedDataMain
-5
15
0
50
***/

UnitedData 데이터 타입의 변수를 만들고 메모리를 생성하고 있다. 그리고 데이터를 직접할당의 원리로 멤버 변수에 값을 할당하고 있다.

▒ UnitedData의 객체 생성과 값할당
 
UnitedData d = new UnitedData();
d.x = 5;
d.y = 10;

그리고 메서드를 호출한 후 결과를 출력하고 있다. 메서드를 호출하더라도 매개변수를 넘겨주는 것이 아니라 이미 내부의 메모리(멤버 변수)에 할당된 값을 이용해서 메서드를 호출하고 있다.

▒ UnitedData의 멤버 메서드 호출
 
d.minus()
d.plus()
d.divide()
d.mul()

이것은 앞에서 배웠던 메서드와 데이터가 분리되어 있을 때와 결합되어 있을 때의 차이점을 잘 보여주고 있다. 어떠한 차이가 있는지 좀 더 자세히 알아보자.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
56 Java 1.4.3 정수형과 실수형의 계산 IT장인 2013.11.21 531
55 Java 1.4.4 정수형과 실수형 데이터 타입 IT장인 2013.11.21 594
54 Java 1.4.5 그 외 데이터 타입 IT장인 2013.11.21 69601
53 Java 1.5.1 데이터 타입의 목적 IT장인 2013.11.21 330
52 Java 1.5.2 변수의 의미 IT장인 2013.11.21 387
51 Java 1.5.3 상수의 의미 IT장인 2013.11.21 573
50 Java 1.6.1 데이터 타입과 변수, 상수 IT장인 2013.11.21 446
49 Java 1.6.2 할당의 법칙 IT장인 2013.11.21 380
48 Java 1.6.3 할당의 예 IT장인 2013.11.21 338
47 Java 1.6.4 결론 IT장인 2013.11.21 332
46 Java 2.1.1 핵심 Question IT장인 2013.11.22 290
45 Java 2.1.2 기본 데이터 타입의 한계 IT장인 2013.11.22 336
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6