본문 바로가기
코딩하는 코커두드/자바, 스프링 백엔드 과정

Day 13 _ 패스트푸드 주문 키오스크 만들기 실습 (20230427)

by 코커두드 2023. 4. 28.

* 처음으로 클래스도 많고 규모가 나름 큰 실습을 해보았습니다. 오늘의 부제는 '코딩 - 절망편'이라고 해도 무방할 것 같아요. 일단 기초 개념들이 머릿속에서 마구 흔들렸고요, 실습 예제의 설명 없이는 손도 못대겠는... 그런 상황이었답니다.

그래서 오늘은 하루종일 헷갈리고, 혼돈의 카오스 속에서 흔들렸던 개념을 정리해보려고 합니다.

 

1. instanceof 연산자

- 캐스팅이 가능한지에 대한 여부를 boolean 타입으로 확인할 수 있게 하는 연산자

- 앞서 '다형성'에서 함께 학습하였다.

- 예시

 (1) horn의 클래스는 Brass의 하위클래스이다.

 (2) Brass는 Instrument를 상속받는다.

 (3) horn의 클래스 Horn은 클래스 String과 상속 계층도, 상하위 관계도 아니다.

 [결과]

 System.out.println(horn instanceof Brass); //true

 System.out.println(horn instanceof Instrument); //true

 System.out.println(horn instanceof String); //false

- 결론 : 좌항의 인스턴스를 우항의 타입으로 캐스팅 할 수 있는지?

 

2. 리팩토링(Refactoring)

- 동일한 동작을 하는 코드를 개선하는 작업

 

3. 업캐스팅과 다운캐스팅

- 업캐스팅 : 하위 클래스 타입에서 상위 클래스 타입으로의 타입 변환 (괄호 생략 가능)

- 다운캐스팅 : 상위 클래스에서 하위 클래스 타입으로 변환

- 주의사항 : 다운캐스팅은 형 변환 연산자인 괄호를 반드시 명시해야함

- 다형성에서 학습했었음

 

4. 향상된 for문 (Enhanced for문)

- 배열 항목의 개수만큼 반복

String[] names = {"나비", "야옹이", "노랭이"};

for(String name : names) 

~~~

라는 향상된 for문이 존재할 때 

String name : 저장할 변수 선언

names : 사용할 배열

=> names 배열에서 첫 번째 값인 "나비"를 변수 name에 저장

=> 실행문 실행

=> 가져올 값이 존재하므로 "야옹이"와 "노랭이"도 차례로 실행

=> 가져올 값이 없으면 for문 종료

 

 

*매일 어렵다고만 쓰고 있는거 아닌지...? 근데 매일이 어렵다.

특히 이번 패스트푸드 키오스크 문제는 반토막(10번 중 5번)만 진행했는데도 하루가 지나갔다.

새벽에 6번까지 가까스로 마무리는 했지만 원래 목표는 두 번 해보는 거였는데 그건 어렵게 되었다.

언젠가 이 코드가 간단해보이는 날이 오겠지...?

그렇다고 해주세요...