Programing/JAVA

JAVA :: 자바 :: 예외처리 :: Encapsulation

Dongkkase 2008. 10. 20. 00:21
반응형

Encapsulation 이란?

캡슐화는 객체를 만들 때, 객체 내부에 들어있는 변수나 메소드등의 정보를 객체 밖으로 공개하지 않고,
 따로 공개하는 변수나 메소드를 통해서 객체를 사용할 수 있게 해주는 개념을 말한다.
캡슐화는 프로그램을 복잡하지않게 만들 수 있는데 도움을 주며,
소프트웨어 개발자에게 몇가지 장점을 제공한다.

Encapsulation하려면

  1. 멤버변수에는 직접 접근이 불가능하게 접근제한자를 private 으로 지정한다.\
  2. 접근이 가능한 메소드를 선언한다. 메소드의 접근 제한자는 public 으로 지정한다.


Encapsulation예제

Member.java  Custemer.java   Company.java(main)



Given
: Member.java
 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


public class Member {
    private String id;
    private String name;
    private int age;
   
    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}

    public String getId() {return id;}
    public void setId(String id) {this.id = id;}
   
    public String getName() {return name;}
    public void setName(String name) {this.name = name;    }


    //생성자 : 객체만들고 초기화
    public Member(String id, String name, int age){
        this.id = id;
        this.name = name;
        this.age = age;
    }
   
    public void printInfo(){
        System.out.println("*******************************");
        System.out.println("아이디 : " + this.id);
        System.out.println("이름 : " + this.name);
        System.out.println("나이 : " + this.age);
        System.out.println("*******************************");
    }
}


Given : Customer.java
 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

public class Customer {
    private String id;
    private String name;
    private int age;
   
    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}

    public String getId() {return id;}
    public void setId(String id) {this.id = id;}
   
    public String getName() {return name;}
    public void setName(String name) {this.name = name;    }


    //생성자 : 객체만들고 초기화
    public Customer(String id, String name, int age){
        this.id = id;
        this.name = name;
        this.age = age;
    }
   
    public void printInfo(){
        System.out.println("*******************************");
        System.out.println("아이디 : " + this.id);
        System.out.println("이름 : " + this.name);
        System.out.println("나이 : " + this.age);
        System.out.println("*******************************");
    }
}


Given : Company.java
 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
97
98
99
100

import java.util.*; 
 //java.util.Scanner 와 같은 java.util.을 생략 해준다.

public class Company {
    public static void print(String msg){
        System.out.println(msg);
    }
   
    public static void menu(){
        print("========Menu========");
        print("1.고객등록");
        print("2.사원등록");
        print("3.모든 고객 보기");
        print("4.모든 사원 보기");
        print("5.종료");
        print("====================");
    }
   
    public static void main(String[] args){
        Member[] m = new Member[2];
        Customer[] c = new Customer[2];
       
        int index=0;
        while(true){
        menu();
        System.out.print("메뉴 번호 입력 : ");
        Scanner sc= new Scanner(System.in);
        //사용자의 키보드로 부터

        int num = sc.nextInt();
       
        switch(num){
        case 1:
            System.out.println("고객 등록을 선택하셨습니다.\n");
            System.out.print("고객아이디 : ");
            String id = sc.next();
           
            System.out.print("고객 이름 : ");
            String name = sc.next();
           
            System.out.print("고객 나이 : ");
            int age = sc.nextInt();
           
            Customer cc = new Customer(id, name, age);
            cc.setId(id);
            cc.setName(name);
            cc.setAge(age);
           
            cc.printInfo();
                       
            if(index >= c.length){
            System.out.println("정원초과");
            }
            else{
            c[index] = cc;
            index++;
            }
           
            break;
           
           
        case 2:
//            System.out.println("사원 등록을 선택하셨습니다.\n");
//            System.out.print("고객아이디 : ");
//            String id = sc.next();
//           
//            System.out.print("고객 이름 : ");
//            String  = sc.next();
//           
//            System.out.print("고객 나이 : ");

            break;
           
           
        case 3:
            System.out.println("고객 등록정보를 선택하셨습니다.\n");
            for(int i=0;i<c.length;i++){
//                c[i].printInfo();
                Customer cus = c[i];
                cus.printInfo();
            }
            break;
           
           
        case 4:
            System.out.println("사원 등록정보를 선택하셨습니다.\n");
            break;
           
           
        case 5:
            System.out.println("Bye Bye~\n");
            System.exit(0);
            break;
           
        default:
            System.out.println("메뉴를 잘못 선택하셨습니다.\n");
        }
//            if(num <6){System.out.println("입력한 번호는 : " + num);}
//            else{System.out.println("잘못 입력한 번호입니다.");}
        }
    }
}






반응형