[내배캠 Android 4기] TIL 0617

오리너구리·2024년 6월 17일
0

TIL

목록 보기
33/48
post-thumbnail

오늘 계획

  • 코드카타 40번
  • 과제 제출
  • 업캐스팅 다운캐스팅 공부
  • sum sumBy 공부
  • 키오스크 과제 해설 강의

오늘 계획한 공부를 다 했고,
거기에 벨로그에 FrameLayout 정리글도 업로드했다~!


코드카타

⏲️ 공부시간 09 : 10 ~ 10 : 20

링크
https://velog.io/@orinugoori_art/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-CODEKATA-40-3%EC%A7%84%EB%B2%95-%EB%92%A4%EC%A7%91%EA%B8%B0-08texoxc

오늘은 숫자를 3진법으로 변환하고 다시 3진법을 10진법 숫자로 변환하는 방법에 대해 공부할 수 있는 문제였다.

근데 2진법까지는 어릴 때 학교에서 배웠던 것 같은데 3진법은 처음해봐용.

그래서 구글에 3진법으로 바꾸는 방법 찾아봤음!

근데 그냥 2진법 나누기해서 나머지로 만드는거랑 똑같았당!

(사실상 2진법으로 변환하는 방법도 까먹고있었다는것~! )

나는 열심히 짱구 굴려서 3진법으로 변환하는 함수랑 10진법으로 변환하는 함수 나름 만들어서 굴러가게 해서 풀었는데 다른사람 풀이 보니까 그냥 toString() 이랑 toInt() 괄호안에 숫자 넣으면 해당 진법으로 알아서 변환해주는 기능이 있었다!

이런거 있다고 왜 안알려줌!ㅋㅋ 코틀린 이 쉐키 내 성격 까먹었나보네..


과제 제출

⏲️공부시간 10 : 30 ~ 11 : 10

일단 오늘은 과제를 제출해야하는 날이기 때문에~~

과제 마지막으로 점검하고 깃허브에서 메인으로 머지해서 제출함

과제 진행하면서 어려웠던점이나 궁금했던점을 다 적어서 제출 완료했다!

- 과제를 진행하면서 어려웠던 점에 대해 제출한 내용

  1. 메뉴클래스에서 바로 인스턴스 만들걸 괜히 카테고리별로 따로 클래스를 Pasta, Pizza Drinks로 만들어서 인스턴스를 만들었더니 업스트림 다운스트림 ? 사용하는게 어려웠습니다..
    카테고리별로 나눠서 표시해야할 일이 있을 때 타입을 각 카테고리 타입으로 하려고 저렇게 해야겠다고 생각했는데, 알고보니 그냥 타입을 프로퍼티로 하나 받아주면 더 간단했을 것 같은데 너무 늦게 알아차려버렸습니당.
  2. 아직 기획하면서 정확히 이걸 어떻게 구현해야 효율적으로 구현할 수있을지에 대한 판단이 안서서 일단 마구 구현하고 보니 나중에 비효율적으로 작업하게 된 것 같습니다..
  3. 예외처리를 하는 부분에서도 아직 try-catch문에 대한 이해가 부족한지 강의에 나온 예시를 참고해서 만들긴 했는데 아직 제가 완전하게 이해한 느낌이 안들어서 찝찝했습니다.

- 궁금했던점에 대해 제출한 내용

  1. 입력받은 내용에 맞는 내용을 출력해야할 때, (displayDetailedMenu사용하는 부분 등?) 반복문을 탈출해야 하는 부분을 반복문 밖에 함수를 정의하는 단계에서break을 while문 밖에 함수를 정의할 때 적으면 인식이 안되어서.. 어떻게 구현해야하는지 모르겠어서 그냥 반복문을 탈출하는 부분은 함수에 같이 넣지않고 메인함수에 그냥 작성했는데 방법이 있는지 궁금합니다!
  2. 사용자에게 입력받는 부분을 다 inputSelect함수안에서 타입에 따라 처리하도록 했는데, 만들고보니 사실상 "cash"타입 제외하면 숫자로 선택하는 건데 저렇게 나누는게 효율적인가 의문이 들었습니다 각자 예외처리를 다르게 해주어야 해서 저렇게 하는게 맞는것같기도하고 더 효율적인 방법이 있을 것 같기도하고 해서 궁금합니다!

sum(), sumOf(), sumBy() 공부

⏲️ 공부시간 11 : 10 ~ 12 : 50

공부계기

코드카타를 하면서도 sum, sumOf를 다른 사람 풀이에서 발견하고 사용하긴 했지만, 정확히 어떤 타입에 사용할 수 있는지, sum() 과 sumOf()는 뭔지 등에 대해 개념이 정확히 서있지 않아서 공부함

공부 내용 요약

  1. sum은 컬렉션이나 배열의 모든 요소를 합산하는 기능을 하는 함수이다.
  2. sum은 모든 숫자 타입에 사용 가능하다.
  3. sumBy는 코틀린 1.5버전 이전에 사용되던 함수로 이제는 sumOf로 대체해서 사용한다.
  4. sumOf는 셀렉터함수를
  5. 합산하고 싶은 컬렉션의 요소가 모두 같은 타입이 아니거나, 문자열의 길이 등 요소의 특정 속성을 합산하고 싶다면 sumOf를 사용한다.

UpCasting/ DownCasting 공부

⏲️ 공부시간 14 : 00 ~ 15 : 25

공부 계기

과제하면서 업캐스팅과 다운캐스팅을 사용해야 했는데

제공받은 강의에서 언급된 적은 있지만, 정확하게 짚고 넘어가고 싶었음

공부 내용 요약

  1. 어떤 객체의 값의 데이터 타입을 변환하는 것을 타입 캐스팅이라고 함
  2. 타입 캐스팅은 이미 내가 알고있던 to데이터타입() 같이 데이터 타입 캐스팅이있고 클래스 타입을 변환하는 클래스타입 캐스팅이 있다.
  3. 클래스 타입 캐스팅에는 업캐스팅과 다운캐스팅이 있다.
  4. 업캐스팅은 하위클래스를 상위클래스의 타입으로 변환해주는 것
  5. 다운캐스팅은 상위클래스를 하위클래스의 타입으로 변환해주는 것
  6. 업캐스팅은 따로 명시를 해주지 않아도 가능하지만 다운캐스팅은 명시해줘야함
  7. 클래스 타입 캐스팅할 때에는 as 라는 키워드를 사용한다.
  8. as 는 강제로 클래스의 타입을 변환하려고 하는데 실패할 경우 예외가 발생해서 무조건 캐스팅이 성공하는 곳에만 사용해야함
  9. 혹시 실패할 가능성이 있다면 as? 를 사용해서 타입변환에 실패할 경우 예외가 발생하지 않고, 그냥 null을 반환하게 해야함
  10. 타입을 확인 할 때에는 is 라는 연산자를 사용하면 되는데 조건문에서 is 를 사용해서 타입을 체크하면 코틀린이 알아서 타입캐스팅을 진행해서 변환시켜줌 이걸 스마트 캐스팅이라고 함

키오스크 과제 해설 강의

⏲️ 공부시간 15 : 40 ~ 17: 20

강의 들으면서 내가 혹시 빼먹거나 잘못하거나 덜 효율적으로 처리한게 있었는지 체크

  1. 굳이 세부메뉴 인스턴스를 변수에 하나하나 저장할 필요가 없었음
  2. displayCategory() 에서 주문하기랑 주문 종료를 그냥 직접 작성했는데, 그냥 Menu 인스턴스로 만들어버리면 됐음
  3. 메뉴 보여줄때 글자수 맞춰서 예쁘게 나올 수 있게 설정할 생각도 안했는데 해줘도 좋을듯
  4. println 할 때 \n , \t 써주면 좋았을듯
  5. 장바구니 기능을 만들 때 따로 클래스를 만들어줌
  6. 장바구니에 하나도 담지 않고 주문을 했을 때의 예외처리를 안함
  7. Lv 5 구현
    1. 종료시에 특정시간 기다렸다가 종료하기
    2. 결제할 때 현재시간과 비교하여 특정시간대에는 결제할 수 없다는 메세지 출력
    3. 프로그램 종료할 때 5초마다 현재 주문 대기수 실시간 출력

내배캠 설문조사

⏲️ 소요시간 17:20 ~ 18 : 10

이번 문법 공부 주차에 대한 만족도나 팀원평가 , 커리큘럼 평가들 설문조사해야해서 했음

적다보니 길어져서 거의 50분을 적어버림


Frame Layout 정리 벨로그 업로드

⏲️ 공부 시간 19 : 10 ~ 20 : 30

https://velog.io/@orinugoori_art/Android-Frame-Layout

Frame Layout에 대해 공부했던 내용을 정리해서 벨로그에 업로드 했다!

노션에 정리한 내용 + 인스타에 올린 만든 자료들 을 사용해서 게시물을 작성해서 올렸다!

저 글만 읽어도 쉽게 해당 레이아웃에대해 이해하게 만드는게 목표인데 역시 쉽지 않음!

일단 문제는 내가 해당 레이아웃에 대해 공부하고 이해하긴 했지만

아직 실제로 많이 사용해본적이 없어서 사용하면서 실제로 어려움을 겪는 점 등을

내 언어로 설명할 수가 없다.

나중에 경험이 많이 쌓이고나서 다시 올렸던 글들을 확인하고 그 때 보이는 부족한 점들을 추가하면 좋을 것 같음!


TMI

이제 내일부터 또 조 바뀐다~! 조 제발 잘걸려라 ㅜ

profile
오리너구리입니다

0개의 댓글