AD

전수진 공부 프로젝트 트게더를 만들어보자 - 숙제 정리

모데충
2022-07-27 17:53:45 183 4 0

숙제먼저 풀고 가겠습니다.


클래스를 이용해서 2가지 값을 받아서 덧셈,뺄셈,곱셈,나눗셈,나머지 구하기를 수행할 수 있는 프로그램을 작성하시오. 

라-떼 님이 풀어주셔서 치킨을 뜯어가셨습니다. 해당 답안을 올려도 되지만 제가 추가로 설명하고자 하는 부분이 있으므로 제가 작성한 코드를 올리겠습니다.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package com.java_lanuage;
 
public class Calculator {
 
    private int a;
    private int b;
 
    private int add_result;
    private int sub_result;
    private int mul_result;
    private int div_result;
    private int mod_result;
 
    public void setting(int a,int b){
        setA(a);
        setB(b);
 
        System.out.println(getA()+", "+getB()+"이 정상적으로 계산기에 입력되었습니다.");
    }
 
    private void Calc(){
       setAdd_result(a + b);
       setSub_result(a - b);
       setMul_result(a * b);
       setDiv_result(a / b);
       setMod_result(a % b);
    }
 
    public void print(){
        Calc();
 
        System.out.println(getA()+"와 "+getB()+"를 덧셈한 결과는 다음과 같습니다. : "+getAdd_result());
        System.out.println(getA()+"와 "+getB()+"를 뺄셈한 결과는 다음과 같습니다. : "+getSub_result());
        System.out.println(getA()+"와 "+getB()+"를 곱셈한 결과는 다음과 같습니다. : "+getMul_result());
        System.out.println(getA()+"와 "+getB()+"를 나눗셈한 결과는 다음과 같습니다. : "+getDiv_result());
        System.out.println(getA()+"와 "+getB()+"를 나눈 나머지값의 결과는 다음과 같습니다. : "+getMod_result());
    }
 
 
    public int getA() {
        return a;
    }
 
    public void setA(int a) {
        this.a = a;
    }
 
    public int getB() {
        return b;
    }
 
    public void setB(int b) {
        this.b = b;
    }
 
    public int getAdd_result() {
        return add_result;
    }
 
    private void setAdd_result(int add_result) {
        this.add_result = add_result;
    }
 
    public int getSub_result() {
        return sub_result;
    }
 
    private void setSub_result(int sub_result) {
        this.sub_result = sub_result;
    }
 
    public int getMul_result() {
        return mul_result;
    }
 
    private void setMul_result(int mul_result) {
        this.mul_result = mul_result;
    }
 
    public int getDiv_result() {
        return div_result;
    }
 
    private void setDiv_result(int div_result) {
        this.div_result = div_result;
    }
 
    public int getMod_result() {
        return mod_result;
    }
 
    private void setMod_result(int mod_result) {
        this.mod_result = mod_result;
    }
}
 
cs

계산기 클래스 입니다.

여기서 우리가 알고 넘어가면 좋은 부분은 총 5군데 입니다.

5~12라인

저번 시간까지만 하더라도 그냥 자료형에 변수명만 선언했는데 앞에  접근제어자인 private이 붙었습니다. 이유는 처음 만들어진

계산기 클래스 이외의 부분에서는 건들지 못하게 하기 위함입니다. 상속에 대해서 설명할 때 좀 더 자세히 말씀드리겠습니다.


15~16라인

setA(a);와 setB(b)라는 메소드를 통해서 값을 한번 더 집어넣는 것을 볼 수 있습니다. 이것을 setter 이것은 위의 접근제어자가 private이기 때문에 직접적으로 a와 b변수에 넣을 수 없으므로 setter라는 메소드를 통해서 거쳐서 들어가게 됩니다. 지금처럼 setter를 사용하여 값을 넣어주게 된다면 

1) 변수값을 직접적으로 수정하는 것이 불가능하기 때문에 개발자의 의도에서 벗어난 동작을 방지할 수 있고, 

2) 값을 넣어줄때 어떠한 로직을 타고 들어가게끔 할 수가 있습니다. 예를 들어 비밀번호를 입력한다고 하면은 나는 정상적으로 값을 넣었지만 들어갈때는 암호화 로직을 통해서 한번 타고 들어가게끔 해서 실제 데이터는 암호화된 값이 들어갈 수 있습니다.


21~26라인

Calc() 메소드에 private를 걸어줌으로써 안에 계산 로직에 수정을 불허한다는 뜻입니다. 


30라인

개발자가 만들어둔대로만 사용하게끔 Calc()를 호출만 하도록 해놨습니다.


40~94라인

각 변수들에 setter와 getter가 작성되어 있습니다. 특이한 사항은 다른 setter들은 다 public으로 설정되어 있지만 계산 결과를 가지고 있는 setter은 private 설정이 되어 있는 것을 확인할 수가 있습니다. 참고로 setter와 getter는 변수가 수백개면은 그 수백개를 일일이 입력할 수 없기 때문에 인텔리제이 내에서 자동으로 만들어 줄 수 있게 편의를 제공하고 있습니다.


방법 : 해당 클래스 내에서 Alt + Insert 입력 -> Getter and Setter 클릭 -> Getter와 Setter를 만들고 싶은 변수를 클릭 or 쉬프트로 여러개를 지정한 다음 (OK)


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
package com.java_lanuage;
 
public class Class {
 
    public static void main(String[] args) {
/*
        TGD tgd = new TGD("순게더","순당무");


        //게시판 생성
        System.out.println(tgd.create());


        //게시판 조회
        System.out.println(tgd.select());


        //게시판 삭제
        tgd.delete();
        

        //게시판 조회
        System.out.println(tgd.select());


 */
 
        Calculator calc = new Calculator();
        calc.setting(10,2);
        calc.print();
    }
 
 
 
}
 
 
 
cs

저번에 만들었던 클래스라는 이름을 가진 클래스입니다.


28라인 

저번에는 따로 생성자를 만들어서 선언할때 값을 넣어줬는데 지금 코드에서는 생성자를 만들지 않고도 계산기 클래스를 선언하는 모습을 볼 수가 있습니다. 이것은 만약 생성자가 선언되지 않았을 경우 인자값이 없는 기본 생성자가 생기기 때문입니다.


29~30라인

System.out.println을 쓰지 않았는데 결과창에 문구들이 나오고 있습니다. 이것은 Calculaotr 클래스에 있는 각각의 메소드들에서 System.out.println을 사용했기 때문입니다. 다시 말한다면 반환값이 void라도 System.out.println와는 별개라는 것을 알 수가 있습니다. 


결과는 아래와 같습니다.

0dc57a1e7545d42ea3a7f191eed5e7b5.png


이번 글에 상속과 예외처리를 끝으로 자바를 정리를 하려고 했는데 내용이 길어진 관계로 다음 글에 자바를 마무리 짓도록 하겠습니다. 다음글에는 지금 작성된 Calculator클래스를 활용할 예정이오니 참고 바랍니다.


3e9bfd68f3d35e0c1dcae02c64e85d95.png

모데충은 약속대로 치킨을 뜯겼습니다.

후원댓글 0
댓글 0개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
▲윗글 오늘 뱅 늦뱅 순당무
▼아랫글 LCK Summer 결승전 예매 일정 고기먹는판다
잡담신고팬아트건의함게임추천이벤트순클립전수진 공부 프로젝트음식을 올려보아요마지막 클립 불태우기
7
잡담
내가 누구? [2]
고기먹는판다
07-29
0
잡담
안녕하세요
정령왕
07-29
3
순클립
220727 어제의 클립 [3]
소눈확
07-28
9
잡담
다음 방?송 [2]
고기먹는판다
07-28
11
잡담
오늘 뱅 늦뱅 [8]
Broadcaster 순당무
07-27
»
전수진 공부 프로젝트
트게더를 만들어보자 - 숙제 정리
모데충
07-27
3
잡담
LCK Summer 결승전 예매 일정 [1]
고기먹는판다
07-27
9
잡담
루?루 신스킨 [2]
고기먹는판다
07-27
3
순클립
220726 오늘의 클립 [1]
소눈확
07-26
4
잡담
오방 요약 [2]
푸른작약
07-26
4
순클립
소스다 소스 [3]
프런티어_
07-26
2
07-26
2
07-26
4
잡담
안뺐어 먹는다 [2]
고기먹는판다
07-26
7
잡담
거.. [3]
방방__
07-26
5
잡담
최대의 난제 [4]
고기먹는판다
07-25
35
잡담
님들,,,, 진짜루 제송 [19]
Broadcaster 순당무
07-25
7
잡담
오뱅언...? [3]
순무당_김울프
07-25
6
음식을 올려보아요
런치 [2]
프런티어_
07-25
8
잡담
맹수 [3]
고기먹는판다
07-24
13
잡담
성지?를 가보자
김춘식65
07-24
27
잡담
오...... [21]
Broadcaster 순당무
07-23
8
잡담
오늘자 순스타 [7]
푸른작약
07-23
5
음식을 올려보아요
Aㅏㅏ 나도 방장처럼
매직샤인1
07-22
2
전수진 공부 프로젝트
토익 영단어 몇개 [4]
매직샤인1
07-22
2
잡담
같은 상황 다른 반응 [2]
소눈확
07-22
인기글 글 쓰기