바닥부터 시작하는 프로그래밍/국비JAVA

15일차(StarUML 및 클래스 및 보충?)

예얀 2024. 3. 25. 16:16

+는 public

-는 private

(옵션에서 표시가능)

 

맨윗줄 클래스

중간줄 필드

마지막줄 메서드

 

Dependency 의존하는 관계

Composition 포함관계

Aggregation은 약간의존관계 

 

멤버변수가 아니면 Dependency

 

 

 

package p3;

//완료된 예제 아님. 이게 맞다고 생각하기 XX
public class Main {

	public static void main(String[] args) {
		
		new 브라우니제조기().만든다();
		
	}

}

class 브라우니제조기{
	로직 logic = new 로직();
	
	public void 만든다() {
		
		준비한다();
		반죽한다();
		반죽을굽는다();
	}
	
	private void 준비한다() { // 내부에서만 쓸 로직
		logic.그릇1을준비한다();
		logic.냄비를준비한다();
		logic.그릇3을준비한다();
	}
	
	private void 반죽한다() {
		초콜릿을녹인다();
		
		logic.그릇2에계란등재료를넣는다();
		logic.그릇2에내용물을섞는다();
		logic.그릇1의내용물이식으면그릇2에넣고섞는다();
		logic.그릇3을가지고밀가루등베이스재료를넣는다();
		logic.그릇3의내용을완전히섞은후에체를통해그릇2에넣는다();
		logic.기름과베이킹캔를베이킹페이퍼로연결한다();
		logic.그릇3의내용물을베이킹캔에넣는다();
	}
	
	private void 초콜릿을녹인다() {
		logic.냄비에물을채운다();
		logic.가스레인지위에올린다();
		logic.그릇1안에버터와초콜릿을넣는다();
		logic.그릇1을냄비위에놓는다();
		logic.그릇1의내용이녹을때까지거기에둔다();
		logic.다녹으면그릇을내려놓는다();
	}
	
	
	private void 반죽을굽는다() {
		logic.오븐을예열해한다();
		logic.베이킹캔을오븐에20분동안넣은다음오븐에서베이킹캔을꺼낸다();
		logic.몇시간동안식힌다();
	}
}




class 로직{
	public void 그릇1을준비한다() {}
	public void 냄비를준비한다() {}
	public void 냄비에물을채운다() {}
	public void 가스레인지위에올린다() {}
	public void 그릇1안에버터와초콜릿을넣는다() {}
	public void 그릇1을냄비위에놓는다() {}
	public void 그릇1의내용이녹을때까지거기에둔다() {}
	public void 다녹으면그릇을내려놓는다() {}
	public void 그릇2를준비한다() {}
	public void 그릇2에계란등재료를넣는다() {}
	public void 그릇2에내용물을섞는다() {}
	public void 그릇1의내용물이식으면그릇2에넣고섞는다() {}
	public void 그릇3을준비한다() {}
	public void 그릇3을가지고밀가루등베이스재료를넣는다() {}
	public void 그릇3의내용을완전히섞은후에체를통해그릇2에넣는다() {}
	public void 기름과베이킹캔를베이킹페이퍼로연결한다() {}
	public void 그릇3의내용물을베이킹캔에넣는다() {}
	public void 오븐을예열해한다() {}
	public void 베이킹캔을오븐에20분동안넣은다음오븐에서베이킹캔을꺼낸다() {}
	public void 몇시간동안식힌다() {}
}

SOLID원칙 - 단일 책임 원칙