OOP-team2 / OOP-proj1

2022-2 OOP team1 project1
MIT License
2 stars 1 forks source link

2022-2 OOP(02)

team#1

proj 1/prob1

요구사항 분석

IIKH(Interactive Intelligent Kitchen Helper)

recipe의 데이터 베이스를 유지하는 것 뿐만 아니라, 음식을 준비하는 것을 돕는 응용 프로그램이다.

터미널로 사용(CLI)하는 프로그램이다. 음식의 수를 조절할 수 있고, 주단위, 일단위, 음식 단위로 메뉴를 출력할 수 있다.

요구되는 행동이 굉장히 추상적이므로, 충분히 생각하고, 구체적으로 기술할 수 있을 때 코딩 단계로 넘어가는 것을 책에서는 추천함.

시스템의 행동을 예측하기 위해서 다자인 팀은 몇 개의 시나리오를 만들고, 실제 어플리케이션을 사용하는 상황을 가정해 볼 수 있다.

IIKH Scenario

위의 시나리오를 분석하면, 다음과 같은 요구사항을 예측할 수 있다.

components

소프트웨어 엔지니어링은 identification 과 development로 단순화 할 수 있다.

컴포넌트는 단순히 추상적인 존재로써, 작업을 수행하며, 어떤 책임을 진다. 이 시점에서는, 컴포넌트의 결과적인 표현이나 어떻게 컴포넌트가 작업을 수행할지는 정확히 몰라도 된다.

컴포넌트는 함수, 구조체, 클래스, 다른 컴포넌트의 컬렉션이 될 수도 있다. 이 단계에서는 두 가지의 중요한 특징이 있을 뿐이다.

일어나야하는 모든 활동은 반드시 식별 되어야하고, 어떤 컴포넌트의 책임으로써 할당되어야한다. 이런 과정의 일부로, 컴포넌트를 작은 인덱스 카드로 표현하는 것이 유용하다.

카드의 앞면에는 컴포넌트의 이름과 책임을 쓰고, 카드의 뒷면에는 상호작용해야하는 컴포넌트의 이름을 쓴다. 이런 카드는 CRC(Component, Responsibility, Collaborator) 카드로 알려져있기도 하다. 컴포넌트의 책임이 발견되면, 그들은 CRC card의 앞면에 기록된다.

The What / Who Cycle

컴포넌트들은 시스템의 작동 과정을 상상하는 과정에서 식별된다. 이 작업은 종종 누가, 무엇을 사이클로 진행된다. 먼저, 디자인 팀은 다음에 무엇(활동)이 수행되어야할지를 식별한다. 이것은 즉시 누가 이 행동을 수행할지를 답하는 것으로 이어진다. 이런 방법으로, 소프트웨어 시스템을 디자인하는 것은 사람들의 모음을 조직화하는 것과 비슷해진다. 수행되어야할 작업은 반드시 책임으로써 어떤 컴포넌트에 할당되어야한다.

좋은 객체지향 프로그래밍 디자인을 하는 방법은 먼저 각 행동에 대해 수행할 요원을 지정하는 것이다.


Results

Design

Class Diagram

How to compile & execute

please read README.txt README.txt