객체 지향 프로그램
SET, GET 메소드에서 갑자기 왠 객체 지향 프로그램이냐구요?
모든 프로그램이 그렇겠지만 외부로부터 변수값에 직접적으로 접근하는 것을 막고있습니다.
직접 접근하게 되면 무결성이 깨질 수 있기 때문입니다.
자바에서는 함수를 통해 값을 전달받고, 전달하고 방식을 권장하고 있습니다.
또한 클래스 내에서 변수는 private(캡슐화, 정보은닉)로 선언하여 외부에서 바라볼 수 없도록 해야 합니다.
아래에서 사용하는 방법과, 왜 사용을 해야하는지에 대해 알아보겠습니다.
SET, GET 메소드를 사용하는 방법
클래스 내에 SET, GET 메소드를 선언합니다.
SET 은 변수값을 할당하는 목적의 함수이기 때문에 인자를 받아야 하고
GET 은 변수값을 반환하는 목적이기 때문에 return 이 필요합니다.
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
|
public class CarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 클래스 객체변수 선언 */
Car carObject;
carObject = new Car();
carObject.set(15);
System.out.println( carObject.get() );
carObject.set(8);
System.out.println( carObject.get() );
}
}
class Car {
private int fuel = 0;
void set (int input1) {
if ( input1 < 10 ) {
System.out.println("input1 value less than 10");
}
else {
fuel = input1;
}
}
int get() {
return fuel;
}
}
|
cs |
SET, GET 메소드를 사용해야 하는 이유
깊게 설명하지는 않고 간략하게 표현해 보겠습니다.
SETTER
클래스의 fuel 변수에 값을 직접 대입해 본다고 합니다.
이 때, fuel 값은 10이 넘기를 원합니다.
여기에서 fuel 이 10을 넘지 않았을때의 try/catch 를 지정할 수 없습니다.
대입하는 순간 클래스의 fuel 변수에는 10이 대입되게 되는 것입니다.
참고로 carObject.fuel 에 대입할 변수를 먼저 선언 및 값을 할당한 후 해당 변수값에 제약조건을 지정할 수는 있지만
객체 지향은 용도에 맞는 메소드 내에서 작업을 권장하고 있으므로 적합하지 않습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class CarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 클래스 객체변수 선언 */
Car carObject;
carObject = new Car();
carObject.fuel = 15;
System.out.println( carObject.get() );
}
}
class Car {
int fuel;
int get() {
return fuel;
}
}
|
cs |
그렇게 해서 나온방법이 SET 메소드 입니다.
라이브에서는 수많은 코드가 있고 많은 곳에서 클래스를 참조할 수 있습니다.
이 때 SET 함수를 사용하여 변수값을 대입하기 때문에 모든 코드에서 무결성을 보장할 수 있습니다.
SET 함수를 사용하여 fuel 값이 10 이상일때만 fuel 변수에 값이 할당되도록 제약조건을 걸었습니다.
따라서 fuel 값은 항상 10 이상이 될 수 밖에 없습니다.
또한 SET 이라는 메소드 내에서 작업이 이뤄지기 때문에, 객체 지향에도 적합합니다.
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
|
public class CarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 클래스 객체변수 선언 */
Car carObject;
carObject = new Car();
carObject.set(15);
System.out.println( carObject.get() );
}
}
class Car {
private int fuel;
void set (int input1) {
if ( input1 < 10 ) {
System.out.println("input1 value less than 10");
}
else {
fuel = input1;
}
}
int get() {
return fuel;
}
}
|
cs |
GETTER
클래스 내의변수는 외부에서 함수를 통해서 값을 반환받지 않지 않게하기 위해 PRIVATE로 선언이 되어야 합니다.
PUBLIC 이 되는 순간 모든 외부에서 변수값을 조회할 수 있습니다.
이는 정보은닉, 캡슐화에서 적절치 않은 방법입니다.
PRIVATE 로 변수를 은닉하고 필요한 곳에서 GET 함수를 이용하여 조회가 가능합니다.
또한 변수별로 GET 함수를 지정 후, 원하는 변수 GET 만 호출하여 필요한 값만 조회할 수 있습니다.
불필요한 정보까지 조회되지 않는다는 장점이 있습니다.
자바 GET, SET 사용하는 이유
자바 GET, SET 예제
자바 GET, SET 이유
자바 GET, SET 사용법
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 오버로딩의 원리 알아보기 (0) | 2020.11.22 |
---|---|
[JAVA] 자바 Private 와 Public 멤버의 차이 (1) | 2020.11.10 |
[JAVA] 자바 클래스 변수에 값 대입하기, 클래스 메소드와 인자 사용하기 (0) | 2020.11.05 |
[JAVA] 자바 클래스란, 클래스 객체 생성하는 방법 (0) | 2020.11.05 |
[JAVA] 자바 배열 크기 순으로 정렬하는 방법 (0) | 2020.11.03 |