hyeonga_code

Java_42_캡슐화 본문

Java

Java_42_캡슐화

hyeonga 2023. 10. 5. 05:59
반응형


-  객제 지향 언어의 속성
    - 은닉화/캡슐화
       - 멤버를 숨김
       - private 선언
       - 간접적으로 접근 가능
           - setter 메소드
public void setName(String name) {
     // 이름이 중복되었는지 확인 후 수정 기능 가능
     this.name = name;
}
          - getter 메소드
public String getName() {
    return name;
}

    - 상속성
    - 다형성
    - 추상화

 - getter와 setter를 사용하여 성적 순위 출력
=====

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
package com.java.basic;
 
import java.util.*;
 
class Member {
    String name;
    private int kor, eng;
    private int tot;
    private int rank;
 
    Member(String name, int kor, int eng) {
        // 생성자 선언
        this.name = name;
        this.kor = kor;
        this.eng = eng;
        this.tot = kor + eng;
    }
    public String getName() {
        return name;
        // 이름 변경 불가
    }
    public void setKor(int kor) {
        this.kor = kor;
    }
    public int getKor() {
        return kor;
    }
    public void setEng(int eng) {
        this.eng = eng;
    }
    public int getEng() {
        return eng;
    }
    public void setTot() {
        tot = kor + eng;
    }
    public int getTot() {
        return tot;
    }
    public int getRank() {
        return rank;
    }
    public void clearRank() {
        rank = 1;
    }
    public void plusRank() {
        rank++;
    }
 
    void disp() {
        // 출력
        System.out.println(name + "'s total score : " + tot + " | Rank : " + rank);
    }
}
 
public class same {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 입력 기능
        System.out.print("Input people count: ");
        int people = in.nextInt();
        // 인원수 입력 받기 
        Member[] mb = new Member[people];    // 객체 선언부
        // 입력받은 인원수 크기의 배열 생성
 
        for (int i = 0; i < people; i++) {
            // 인원 수 만큼 입력 받기
            System.out.print("Input name: ");
            String name = in.next();
            System.out.printf("Input %s's kor: ", name);
            int kor = in.nextInt();
            System.out.printf("Input %s's eng: ", name);
            int eng = in.nextInt();
            mb[i] = new Member(name, kor, eng);    // 객체 생성부
        }
 
        for (int i = 0; i < people; ++i) {
            // i = 내 성적
 
            mb[i].clearRank();
            for (int j = 0; j < people; ++j) {
                // j = 다른 학생 성적
                if (mb[i].getTot() < mb[j].getTot()) {
                    // 내 성적이 다른 학생 성적의 총 점보다 작으면
                    mb[i].plusRank();
                    // 내 순위를 하나 올린다.
                }
            }
        }
 
        for (int i = 0; i < people; ++i) {
            mb[i].disp();
        }
    }
}
반응형

'Java' 카테고리의 다른 글

Java_44_클래스_지정 예약어  (0) 2023.10.07
Java_43_지정 예약어  (0) 2023.10.06
Java_41_접근 제한자_public < protected < default < private  (0) 2023.10.02
Java_40_this  (0) 2023.10.01
Java_39_생성자  (0) 2023.10.01