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 3.4.5 결론 IT장인 2013.12.28 343
55 Java 3.4.4 변수와 메서드의 분리와 결합 IT장인 2013.12.28 446
» Java 3.4.3 변수와 메서드 결합의 의미 II IT장인 2013.12.28 386
53 Java 3.4.2 변수와 메서드 결합의 의미 I IT장인 2013.12.28 371
52 Java 3.4.1 클래스 내의 메서드 IT장인 2013.12.28 341
51 Java 3.3.7 값복사가 적용되는 곳 IT장인 2013.12.28 399
50 Java 3.3.6 값복사와 매개변수의 전달 IT장인 2013.12.28 460
49 Java 3.3.5 값복사 IT장인 2013.12.28 336
48 Java 3.3.4 리턴과 매개변수 IT장인 2013.12.28 403
47 Java 3.3.3 메서드는 변수다. IT장인 2013.12.28 329
46 Java 3.3.2 메서드 IT장인 2013.12.28 314
45 Java 3.3.1 클래스의 구성요소 IT장인 2013.12.28 381
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6