반응형
package Ch09;
//캡슐화
//특정한 목적달성을 위해 필요한 여러 과정을 하나로 묶는작업
//ex)
//자동차 엔진 동작과정
//흡입 -> 압축 -> 폭발 -> 배기 과정을 거치게 되는데
//이러한 동작과정을 묶어 하나의 캡슐로 처리할수 있다
//캡슐화는 정보은닉을 수반한다
//엔진의 동작과정중 흡입/압축 과정이 외부에 노출되어 순서가 변경된다거나 한다면
//자동차 자체에 큰 문제를 야기할 수있다
//캡슐화의 일부분이나 전부는 정보은닉(private)되어 묶여진다
//잘못된 캡슐화는 프로그램 전체에 영향을 주기 때문에
//작업 공정을 정확히 이해한 상태에서 처리한다
class C03Engine{
//흡입
private void Induction() {System.out.println("흡입!");}
//압축
private void Compress() {System.out.println("압축!");}
//폭발
private void Power() {System.out.println("폭발!");}
//배기
private void Exhaust() {System.out.println("배기!");}
public void EngineStart() {
Induction();//1
Compress();//2
Power();//3
Exhaust();//4
}
}
class C03Car{
private C03Engine engine=new C03Engine();
public void Carstart() {
System.out.println("자동차 전원을 켭니다!");
engine.EngineStart();
}
}
public class C03CapsuleMain {
public static void main(String[] args) {
C03Car hong = new C03Car();
hong.Carstart();
}
}
package Ch09;
class Ramen{
//1물을끓인다 - step1():void
//2스프와 분말가루를 넣는다 - step2():void
//3면을넣는다 - step3():void
//4파,계란~ - step4():void
private void step1() {System.out.println("1 물을끓인다");}
private void step2() {System.out.println("2 스프와 분말가루를 넣는다");}
private void step3() {System.out.println("3 면을넣는다");}
private void step4() {System.out.println("4 파,계란~");}
//캡슐화함수 + recp():void
public void recp() {
step1();step2();step3();step4();
}
}
class Tokbokki{
//1물을끓인다 - step1():void
//2고추장을푼다 - step2():void
//3떡오뎅넣는다 - step3():void
//4졸인다 - step4():void
private void step1() {System.out.println("1물을끓인다");}
private void step2() {System.out.println("2고추장을푼다");}
private void step3() {System.out.println("3떡오뎅넣는다");}
private void step4() {System.out.println("4졸인다");}
//캡슐화함수 + recp():void
public void recp() {
step1();step2();step3();step4();
}
}
class Chef{
//Ramen과 의존관계 형성
//Tokbokki와 의존관계 형성
private Ramen ramen = new Ramen();
private Tokbokki tokbokki = new Tokbokki();
//+CookRamen():void ->Ramen조리과정이 출력!
public void CookRamen() {
System.out.println("-----라면 요리를 시작합니다-----");
ramen.recp();
System.out.println("-----라면 요리가 끝났습니다-----");
}
//+CookTokbokki:void -> Tokbokki조리과정이 출력!
public void CookTokbokki() {
System.out.println("-----떡볶이 요리를 시작합니다-----");
tokbokki.recp();
System.out.println("-----떡볶이 요리가 끝났습니다-----");
}
}
public class C04CapsuleMain {
public static void main(String[] args) {
Chef hong = new Chef();
hong.CookRamen();
hong.CookTokbokki();
}
}
반응형
'JAVA' 카테고리의 다른 글
DTO, VO (0) | 2024.01.12 |
---|---|
This (0) | 2022.11.08 |
접근제한자 (0) | 2022.11.08 |
객체 (0) | 2022.06.06 |
WHILE (0) | 2022.06.06 |