티스토리 뷰
메뉴를 읽어 음료 정보를 출력하고 검색하는 프로그램이다.
실행화면은 다음과 같다. 검색은 여러 개의 키워드에 모두 매치되는 것만 출력한다.

(1) Drink.h 음료 클래스 Drink의 헤더 파일 | |
|
|
(2) Drink.cpp | |
|
|
(3) main.cpp | |
|
|
Drink 클래스는 클래스 이름에 대문자를 사용했으나 C++에서는 이름에 대문자를 거의 사용하지 않고 클래스 이름도 소문자로 시작한다. string 클래스가 그런 예다. 대신 여러 단어를 연결한 이름은 단어 사이에 밑줄(_)을 넣는다. 이것을 자바의 CamelStyle에 대비하여 snake_style이라고 부르기도 한다.
각 음료의 match_cnt를 배열로 하지 않고 Drink 클래스의 필드로 하는 것은 어떨까? 이것은 사실 검색에서 필요한 정보이므로 음료 자체와는 좀 거리가 있다. 검색하는 쪽에서 생성해서 사용하는 배열이 더 적합하다. 가능하다면 객체의 필드는 꼭 필요한 것만 넣는 것이 좋다. 왜냐하면 모든 객체가 생성될 때마다 그 필드에 대해 메모리가 잡혀야 되고 그 값이 의미있는 값으로 지정되어야 하므로 꼭 필요한 것이 아니라면 필드에 추가하지 않는 것이 좋다. 한편 salesCnt 같은 경우는 그 음료가 몇개가 팔렸느냐를 가지는 필드인데, 이것은 음료에 관련된 정보라고 볼 수 있고 프로그램 수행 과정에서 전체적으로 사용되어야 하므로 필드에 넣었다.
다음 포스트에서는 상품 클래스 이외에 주문을 받아 처리하는 Store 클래스를 추가해서 자바 프로그램에 대응하는 C++ 프로그램을 작성하는 예제를 살펴본다.
'C++ << C & Java' 카테고리의 다른 글
C 구조체에서 클래스로 (기초) (2) | 2019.11.19 |
---|---|
C++ 클래스 예제 (2) - 자바 코드를 C++로 바꾸기 - Store 클래스 (0) | 2019.04.05 |
C++ 객체 변수와 객체의 생성 및 소멸 (0) | 2019.04.01 |
C++의 참조형 (0) | 2019.03.28 |
C++에서 출력 포매팅 (0) | 2019.03.28 |
- Total
- Today
- Yesterday
- 이터러블
- max
- zip
- TypeError
- CompareTo
- 이터레이터
- sort key
- Lazy evaluation
- indexof
- 지연계산
- comparable
- follow
- Iterator
- contains
- 콜렉션
- python example
- APPEND
- format
- python exercise
- 패턴
- C++ 클래스
- 스트링 +
- 자바regex
- 동적바인딩
- typedef
- 스트링
- Camel Style
- ToString
- contentEquals
- rust
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |