|
|
1 - DAY
Spring을 공부하기 이전에 Servlet을 공부하기 시작하면서,
객체지향성성 코딩하는 연습을 하게되었습니다.
그러면서, 객체란 무엇인지 찾아보며 공부하게 되었고 이를 Day by Day로
포스팅 하기로 하였습니다. ^^
혹시 제 글을 보시다가 잘못된 내용이나 말하고 싶은 조언이 있으시다면
언제든 댓글로 남겨주시면 정말 감사하겠습니다.
Title : 카페프렌차이즈
content: 카페에서 협력을 코딩으로 옮기는 과정을 연습합니다.
<!-- 만들어야 할 프로그램이 요구하는 상황을 정리합니다. -->
요구사항:
캐시어는 바리스타에게 커피 제조를 요청한다.
바리스타는 커피를 완성해서 캐시어에게 전달한다.
캐시어는 바리스타에게서 커피를 받아 손님에게 전달한다.
<!-- 순차대로 클래스로 만들어 기능들을 구현합니다.
이때, 다음의 내용을 신경쓰며 구현합니다. -->
[ 객체지향 패러다임 ]
(역할 | 챙임 | 협력)
-협력안에 역할이있음
-협력을 생각하고 역할을 생각하라
-요구사항을 정의하라(요구정의와 해결방안 구상)
-협력> 역할> 책임
Java
|
//손님은 메뉴판에서 메뉴를 고르고, 캐시어에게 커피를 주문한다. 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
|
//캐시어는 바리스타에게 커피 제조를 요청한다. 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
|
//바리스타는 커피를 완성해서 캐시어에게 전달한다. class Barista {
private String coffee; //바리스타는 커피를 만든다. public void makeCoffee(MenuItem menuItem) { this.coffee = menuItem.getItem(); }
//캐시어에게 전달한다. public String responseCahier() { return coffee; } } |
Java
-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)+"가 나왔습니다."); } } |
'STUDY > JAVA' 카테고리의 다른 글
[객체지향] - 객체지향적 설계 (수정중) (0) | 2018.08.02 |
---|---|
[객체지향] - 객체지향 과 절차지향 (수정중) (0) | 2018.08.02 |
[객체지향] -SOLID 객체지향 개발 (0) | 2018.08.01 |