2023년 10월 21일

최혁·2023년 10월 23일
0
손은 눈보다 빠르다.

눈은 손보다 게으르다.

나는 항상 이 말들을 곱씹어본다.

근데 이번만큼은 손이 더 느렸다...

객체

붕어빵 틀에서 찍어낸 붕어빵
과 같은 논리로
공장(부모)에서 찍어낸 자동차(자식)와
그 부품(메서드)들

과제

키오스크를 구현하는 과제다.
머리로 그려보면 그렇게 어려워 보이지 않아서 다른 공부를 하다 주말이 되어서야 손 대기 시작했다.

while 내부에서 switch 로 동작 시키며 기계를 터트릴때까지 영원히 종료되지 않는 방식으로 구현하기로 했다.

	int phaseController = 5; // 메인페이즈를 5에 두어, 초기 화면으로 돌아갈때 받는 index를 5로 설정했다.
    
    while (true) {
    
    switch(phasecontroller) {
    	case 5 :
        	메인 메뉴
        case 1:
        	버거 메뉴
        case 2:
        	드링크 메뉴
        case 3:
        	오더 메뉴
        case 4:
        	주문 취소하기
        default :
        	오류 문구 출력
            case : 5 로 이동

작성하면서 깨닫는 부분이 있었다.
메인메뉴를 default에 두고 phaseController를 0으로 놓고 시작했다면 조금 더 가독성 높은
코드를 완성할 수 있었을것 같다. 덕분에 예기치 않은 버그도 하나 있다는걸 알게 되었다.
예외처리를 하나 삽입하여 처리하기로 했다.
지금 와서 수정하기엔 너무 먼 길을 와버렸다.
아예 전면 리팩토링을 거치지 않는 이상 손댈 방법이 없다...

switch - case 표현식

기존의 switch

switch ( caseInt ) {
	case 1 :
    	실행문 1
        break;
    case 2 :
    	실행문 1
        break;
    case 3 :
    	실행문 2
        break;
    default :
		실행문;
}

switch 표현식

switch ( caseInt ) {
	case 1, 2 -> 실행문 1;
    case 3 -> 실행문 2;
    default -> 실행문;
    	yield "반환";

가독성이 조금 떨어지게 되긴 하지만 작성할때는 매우 편리하다는걸 느꼈다.
또한 yield이라는 메서드를 사용할 수 있는데 이는 return과 같다.
사용성에 따라 switch 내부에서 목적을 명확하게 하기 위해 yield를 사용하는게 맞다고는 하는데
솔직히... 이거나 저거나... 아직 필요성 부분에서 의미를 잘 모르겠다.

class 상속

MENU 라는 최 상위 클래스 (super class?) 에 버거와 드링크를 하위 클래스로 주고,
그 아래에 각 메뉴들을 넣어주었다.
즉, 메뉴 - 음식종류 - 세부항목 순서인 셈.
나누다 보니 개판이 되어버렸다.
이에 대한 부분은 튜터님한테 질문을 하며 보완할 방법 혹은 일반적인 방법을 배워야겠다.

0개의 댓글