수업

+20 캡슐화, 패키지

hs_developer 2022. 5. 30. 16:05

p349

 

캡슐화

1. 변수에 private 붙이기

2. getter/setter 생성하기

 

 

캡슐화 안 한 경우

→ 개인정보 유출 우려 있음

public static void main(String[] args) {
		
    // 메모리 저장
    Sawon s1 = new Sawon();
    s1.sabun = 1;
    s1.name = "김가가";
    s1.dept = "개발부";
    s1.job = "대리";
    s1.pay = 3500;

    Sawon s2 = new Sawon();
    s2.sabun = 2;
    s2.name = "김나나";
    s2.dept = "마케팅";
    s2.job = "과장";
    s2.pay = 4000;

    System.out.println(s1.sabun + " " + s1.name + " " + s1.job + " " + s1.pay);
    System.out.println(s2.sabun + " " + s2.name + " " + s2.job + " " + s2.pay);

}

 

 

캡슐화 한 경우

1 김가가 개발부 대리 3500
2 김나나 마케팅 과장 4000
class Sawon
{
	private int sabun;
	private String name;
	private String dept;
	private String job;
	private int pay;
	
	public int getSabun() {
		return sabun;
	}
	public void setSabun(int sabun) {
		this.sabun = sabun;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public String getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
	
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	
	public int getPay() {
		return pay;
	}
	public void setPay(int pay) {
		this.pay = pay;
	}
}


public class 캡슐화 {
	
	public static void main(String[] args) {
		
		Sawon s1 = new Sawon();
		s1.setSabun(1);
		s1.setName("김가가");
		s1.setDept("개발부");
		s1.setJob("대리");
		s1.setPay(3500);
		
		System.out.println(s1.getSabun() + " " + s1.getName() + " " 
		+ s1.getDept() + " " + s1.getJob() + " " + s1.getPay());
		
		Sawon s2 = new Sawon();
		s2.setSabun(2);
		s2.setName("김나나");
		s2.setDept("마케팅");
		s2.setJob("과장");
		s2.setPay(4000);
		
		System.out.println(s2.getSabun() + " " + s2.getName() + " " 
		+ s2.getDept() + " " + s2.getJob() + " " + s2.getPay());
			
	}
}

 

 

p336

패키지

 

*생성

패키지 com.sist.database

패키지 com.sist.user 

 

 

// Sawon.java

package com.sist.database;

public class Sawon {

	private int sabun;
	private String name;
	private String dept;
	private String job;
	private int pay;
	
	public int getSabun() {
		return sabun;
	}
	public void setSabun(int sabun) {
		this.sabun = sabun;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public int getPay() {
		return pay;
	}
	public void setPay(int pay) {
		this.pay = pay;
	}
	
}
// SawonDatabase.java

package com.sist.database;

public class SawonDatabase {

	// 공통 데이터 공유 → static 필요
	private static Sawon[] sawon = new Sawon[100];

	public Sawon[] getSawon() {
		return sawon;
	}

	public void setSawon(Sawon[] sawon) {
		this.sawon = sawon;
	}
	
}
// User1.java

package com.sist.user;
import com.sist.database.*;

public class User1 {

	public static void main(String[] args) {
		
		SawonDatabase data = new SawonDatabase();
		Sawon[] sawon = data.getSawon();
		
		sawon[1] = new Sawon();
		sawon[1].setSabun(2);
		sawon[1].setName("김나나");
		sawon[1].setDept("마케팅");
		sawon[1].setJob("과장");
		sawon[1].setPay(4000);
		
		// 목록 출력
		for(Sawon s:sawon)
		{
			if(s!=null)
			{
				System.out.println("사번: " + s.getSabun());
				System.out.println("이름: " + s.getName());
				System.out.println("부서: " + s.getDept());
				System.out.println("직위: " + s.getJob());
				System.out.println("연봉: " + s.getPay());
			}
		}
				
				
	}
}

// 출력
사번: 2
이름: 김나나
부서: 마케팅
직위: 과장
연봉: 4000
// User2.java

package com.sist.user;

import com.sist.database.*;

public class User2 {

	public static void main(String[] args) {
		
		SawonDatabase data = new SawonDatabase();
		Sawon[] sawon = data.getSawon();
		
		sawon[0] = new Sawon();
		sawon[0].setSabun(1);
		sawon[0].setName("김가가");
		sawon[0].setDept("개발부");
		sawon[0].setJob("대리");
		sawon[0].setPay(3500);
		
		// 목록 출력
		for(Sawon s:sawon)
		{
			if(s!=null)
			{
				System.out.println("사번: " + s.getSabun());
				System.out.println("이름: " + s.getName());
				System.out.println("부서: " + s.getDept());
				System.out.println("직위: " + s.getJob());
				System.out.println("연봉: " + s.getPay());
			}
		}
	}
}

// 출력
사번: 1
이름: 김가가
부서: 개발부
직위: 대리
연봉: 3500