본문 바로가기

STUDY/JAVA

[객체지향] 1. 카페프렌차이즈

 

 

1 - DAY


Spring을 공부하기 이전에 Servlet을 공부하기 시작하면서,

객체지향성성 코딩하는 연습을 하게되었습니다.

그러면서, 객체란 무엇인지 찾아보며 공부하게 되었고 이를 Day by Day로

포스팅 하기로 하였습니다. ^^ 


혹시 제 글을 보시다가 잘못된 내용이나 말하고 싶은 조언이 있으시다면

언제든 댓글로 남겨주시면 정말 감사하겠습니다.



Title : 카페프렌차이즈


content: 카페에서 협력을 코딩으로 옮기는 과정을 연습합니다.


<!-- 만들어야 할 프로그램이 요구하는 상황을 정리합니다. -->

요구사항: 

  1. 손님은 메뉴판에서 메뉴를 고르고, 캐시어에게 커피를 주문한다.

  2. 캐시어는 바리스타에게 커피 제조를 요청한다.

  3. 바리스타는 커피를 완성해서 캐시어에게 전달한다.

  4. 캐시어는 바리스타에게서 커피를 받아 손님에게 전달한다.

<!-- 순차대로 클래스로 만들어 기능들을 구현합니다. 

이때, 다음의 내용을 신경쓰며 구현합니다. -->

[ 객체지향 패러다임 ]

 (역할 | 챙임 | 협력)

    -협력안에 역할이있음

    -협력을 생각하고 역할을 생각하라

    -요구사항을 정의하라(요구정의와 해결방안 구상)

    -협력> 역할> 책임

 Java


-Customer Class


 //손님은 메뉴판에서 메뉴를 고르고, 캐시어에게 커피를 주문한다.

class Customer{

private String myCoffee;

public Menu menu = new Menu();

//메뉴판에서 메뉴를 고르고

/*

* 메뉴를 고르는 함수생성. 

* 매개변수로 String타입의 변수를 받는다(메뉴이름) 

*/

public void chooseMenu(String myCoffee) {

boolean exist = menu.existMenu(myCoffee);

if(exist)

this.myCoffee = myCoffee;

}

//캐시어에게 커피를 주문한다.

/*

* 캐시어에게 메뉴를 주문하는 함수 생성.

* 매개변수로 캐셔 객체를 받아서 캐셔에게 주문된 메뉴를 넘긴다.

*/

public void order(Cahshier cashier) {

cashier.getMenu(myCoffee);

}

}



 Java


-Cashier Class

 

 //캐시어는 바리스타에게 커피 제조를 요청한다.

class Cashier {

private String menu;

public MenuItem menuItem;

public Barista barista;

public Cashier(Barista barista) {

this.barista = barista;

}

public void requestBarista(String myCoffee) {

this.menuItem = new MenuItem(myCoffee); 

barista.makeCoffee(menuItem);

}

public String reseponseCustomer() {

return barista.responseCahier();

}

}


 Java


-Baristar Class

 

 //바리스타는 커피를 완성해서 캐시어에게 전달한다.

class Barista {

private String coffee; 

//바리스타는 커피를 만든다.

public void makeCoffee(MenuItem menuItem) {

this.coffee = menuItem.getItem();

}

//캐시어에게 전달한다.

public String responseCahier() {

return coffee;

}

}



  Java


-Meun Class

-MenuItem Class 


 class Menu {

static ArrayList<String> coffeelist = new ArrayList<String>();

static public void addCoffee() {

coffeelist.add("americano");

coffeelist.add("latte");


}

public boolean existMenu(String myCoffee) {

addCoffee();

for(int i = 0; i<coffeelist.size(); i++) {

if(myCoffee.equals(coffeelist.get(i)))

return true;

}

return false;

}

}


class MenuItem {

private String coffee;

private String price;

public MenuItem(String coffee) {

this.coffee = coffee;

}

public String getItem() {

return coffee;

}

}


 Java


-Main Class


 public class MainStudy {


public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

//메뉴와 클라이언트를 생성한다.

Menu menu = new Menu();

Customer client = new Customer(menu);

Barista baristar = new Barista();

Cashier cashier = new Cashier(baristar);

//client가 메뉴 선택후 주문을 한다.

String coffeeName = scanner.nextLine();

client.chooseMenu(coffeeName);

client.order(cashier);

//캐시어는 바리스타에게 커피 제조를 요청한다.

System.out.println("주문하신 "+client.getCoffee(cashier)+"가 나왔습니다.");

}

}