kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 역할
  • 응집도
  • 결합도
  • 객체지향 프로그래밍
  • 책임
  • 설계 원칙

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

[Book] 7장) 함께 모으기
Book/객체지향의 사실과 오해

[Book] 7장) 함께 모으기

2022. 2. 15. 13:21

개념, 명세, 구현 관점 순서대로 개발

 

개념 관점

  • 도메인
    • 실제 도메인의 규칙과 제약을 최대한 반영

 

 

명세 관점

  • 공용 인터페이스
    • 객체들의 책임에 초점

 

 

 

 

구현 관점

  • 클래스의 속성, 메서드
    • '어떻게' 수행 할 것인가에 초점

 

 

public class Customer {

    public Coffee order(String menuName, Menu menu, Barista barista) {
        MenuItem menuItem = menu.chooseMenu(menuName);
        Coffee coffee = barista.makeCoffee(menuItem);
        return coffee;
    }
}

 

 

public class Menu {

    private List<MenuItem> menuItemList;

    public Menu(List<MenuItem> menuItemList) {
        this.menuItemList = menuItemList;
    }

    public MenuItem chooseMenu(String menuName) {
        for (MenuItem menuItem : menuItemList) {
            if (menuItem.getName().equals(menuName)) {
                return menuItem;
            }
        }
        return null;
    }
}

 

 

public class MenuItem {

    private String name;

    private int price;

    public MenuItem() {
    }

    public MenuItem(String name, int price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

 

 

public class Barista {

    public Coffee makeCoffee(MenuItem menuItem) {
        Coffee coffee = new Coffee(menuItem);
        return coffee;
    }
}

 

 

public class Coffee {

    private String name;

    private int price;

    public Coffee(MenuItem menuItem) {
        this.name = menuItem.getName();
        this.price = menuItem.getPrice();
    }
}

 

'Book > 객체지향의 사실과 오해' 카테고리의 다른 글

[Book] 되새김질  (0) 2022.02.22
[Book] 3장) 타입과 추상화  (0) 2022.02.16
[Book] 1장) 협력하는 객체  (0) 2022.02.16
[Book] 6장) 객체 지도  (0) 2022.02.13
[Book] 5장) 책임과 메시지  (0) 2022.02.12
[Book] 4장) 역할, 책임, 협력  (0) 2022.02.09
[Book] 2장) 이상한 나라의 객체  (0) 2022.02.07
    'Book/객체지향의 사실과 오해' 카테고리의 다른 글
    • [Book] 3장) 타입과 추상화
    • [Book] 1장) 협력하는 객체
    • [Book] 6장) 객체 지도
    • [Book] 5장) 책임과 메시지
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바