본문 바로가기

국비지원/시즌2

다시 자바 복습..

지난주 금요일이었나. 자바 사용 자체가 어.....쉽지 않은 수강생들이 많다는 걸 강사쌤이 인지하고

냅다 문제를 푸는 자바 복습 주간이 시작되었다.(아마도 7/25 ~ 7/29) + 일줄 알았지만 예정보다 훨 길어짐ㅎ

 

바로 직전 포스팅에 썼던 바로 이 과제.ㅎㅎ..

 

강사님의 과제 풀이 및 학생들 과제 리뷰 중에 한...분이 자바 문법이 이해가 안된..상태라는 것이 밝혀지고...

뒤이어 고해성사를 하듯 줄줄이 자바 잘 모르겠단 분들이 등장했고..

이 상태로는 spring을 나갈 수가 없다... 특단의 조치로 일주일 간 자바 문제를 풀면서 연습하는 시간을 가지게 되었다.

 

나도 대충은 쓸 줄 알지만 interface나 Abstract 나 collection 잘 못...아니 거의 못다루는 신세이니...

나도 크게 다를바 없단 생각으로 열심히 시키는 거라도 열심히 따라가야겠다..

암튼 내주는 문제는 구현은 할 수 있지만 자바 어떤 기능 써서 해야할지 잘 모르겠음..ㅎ..그냥 아는 선에서 만드는 중..ㅋ..

자바의 정석..을 사 말아..?ㅋㅋㅋ 에..휴...ㅋㅋㅋ 근데 지금 수업 진도 따라가는 것도 벅참^^ㅋ

 

지금 총 두 번 과제를 내주셨는데

아..쉽지 않다..ㅋ..

 

얼레벌레 구현하려면 할 수야 있는데 애자일보드를 활용해서 설계를 하고 구현을 하려나 만만치가 않다ㅠ

유저 스토리 기반의 백로그...아직 뭔지 감도 잘 안오고ㅠㅠ

대충 실제 프로그램 사용자의 입장에서 어떤 기능들을 사용하게 되는지? 

그 관점으로 접근해서 기능을 구현하라는 것..같다...

 

 

기능을 쪼개쪼개.....쪼개봐...!

관련 있는 데이터와 메소드를 클래스로 묶는 것도 쉽지 않다. 어디서부터 어디까지 묶어야함?ㅋㅋ

 

(7/25) 월요일 과제
총 10가지의 기능을 구현하는 것이고 관련 있는 애들? 비슷한 애들은 한 클래스에 묶어서 구현
1. 66 ~ 122 사이 랜덤문자를 생성하는데 알파벳 대문자 소문자가 아니면 다시 생성하는 프로그램
2. 피보나치 수열의 20번째 항을 구하는 프로그램
3. 1, 1, 1, 2, 3, 4, 6, 13, 19, 28, 41, 60, 88, 129, ...과 같은 숫자 규칙 찾아 25번 째 항 구하는 프로그램
4. 구구단 7단 출력
5. 1 ~ 100까지 숫자 중 짝수만 출력
6. 1 ~ 100까지 숫자 중 3의 배수만 출력
7. 1 ~ 100까지 숫자 중 4의 배수를 더한 결과 출력
8. 1 ~ 100까지 숫자를 순회하며 2 ~ 10 사이 랜덤한 수의 배수 출력.
9. 1 ~ 100까지 숫자를 순회하며 2 ~ 10 사이 랜덤한 수의 배수 출력하는데 루프마다 랜덤배수 출력
10. 1 ~ 100까지 숫자를 순회하는데 2 ~ 10 사이 랜덤한 수만큼 이동후 그 숫자들을 더한 값을 출력

 

자바 복습 문제라 그래서 spring 없이 그냥..main 메소드에서 동작하게 만들고(프로젝트도 따로 만듦) 있었는데

강사님은 문제풀이를 걍 컨트롤러에서 하셨다..! 이런...(그래서 나도 옮김ㅋ)

기능을 구현할 줄 아는지 여부가 중요해서 어디서 하나 안중요하다고 하셨지만..그래도 똑같이 따라함.

(혹시몰라...초보는 뭐 하나라도 잘못될까바 바들바들거립니다^^ 나중에 다른 부분 체크하면서 보는게 더 머리아픔ㅠ)

 

컨트롤러에 넣고 웹에 뿌려서 결과물을 본다고 했을 때 의외로 가장 큰 난관은 바로 저 구구단이었는데...

웹페이지 상에서 줄바꿈을 어떻게 해야하는건지..아무리 찾아도 모르겠는 거였다..!

 

근데 수업 혹은 과제 진행해다 모르는 게 있으면 공유하고 솔루션 받게 노션에 올릴 수 있는데

과제 제출하고 나서야 누가 거기다 같은 문제로 이슈 페이지 올려놓은거 확인함ㅋ(그전엔 다른 분 한거 보고 카피함ㅎ 쨌든 해결책은 같았다는 거)

모르는 게 있으면...구글링 하기 전에 이슈게시판을 활용하자..!

 

그리고 그냥 머리 싸매면서 으으 하고 작업했는데

강사님은 첨부터 애자일보드..그거..활용해가지고..to do 쓰고..머..이럼서 작업하심..

그래 나도 그런 버릇을 들이자..!

일단 요런식으로 페이지 만들고 들어가면 애자일 보드가 나오는데

 

 

요런 식으로 쓰는 것이다...

사례를 많이 보고 감을 잡아보도록 하지...

임의의 수열에서 임의의 데이터 찾기는 2, 3번 문제를 묶은 거고

임의의 시작부터 끝까지 순회하며 특정조건 찾는 시스템은 5 ~ 10을 묶은 것이다.

 

(7/26) 화요일 과제
주사위 게임을 만들어보자!

주사위는 총 2개 굴릴 수 있고 첫 주사위를 굴렸는데 짝수가 나오면 두번째 주사위를 굴릴 수 있다.
두번째 주사위에는 주사위 눈수에 따라 특수기능이 발동한다.
4: 즉시 게임오버
3: 친구들 점수를 3점씩 뺏어온다.
5: 자기 점수를 2점씩 친구들에게 나눠준다
1: 모두 2점 감점
*예외 사항으로 이미 0점인 친구 혹은 아직 주사위 굴리지 않았으면 0점 유지.(마이너스 점수 없음)
이 상태에서 주사위 합산 값이 높은 사람이 이기도록 게임을 만들어보자!

 

수업시간에 만들어보라고 대충 툭 던져주신 느낌이었는데 하다가 머리 빠개질뻔ㅎ

 

애자일 보드를 활용해서 설계를 해야했는데...이것부터가 머리 빠개지고여..ㅋ..

여전히 뭘 어떻게 시작해야할지..영 모르겠지만 이 과제를 하면서 아주 약간은 감이 잡힌 것 같다..!

 

우선...이 문제를 풀 때 처음부터 감 잡기가 어려웠던 건 문제 해석이었다...

첫번째 주사위를 굴렸는데 홀수가 나왔으면 그게 점수인 건가?

만약 짝수가 나와서 한번 더 굴리면 한번 더 굴렸을 때가 점수인 건가? 첫번째 굴린 주사위 눈 값은 점수에 들어가고 한 번 더 추가인 것인가..!?

정확히 따악 이런 프로그램이다 기능이 아주 세세하게 명시가 안되어있엇따...는 것...

 

강사님 풀이를 봤을 때 그건 이제 해석하는 사람 재량인 것 같긴 했음

즉시 게임오버라는 문구도 그냥 게임 자체 엎어버린다로 해석해서 우승자 없이 종료~ 이런 건 줄 알았는데

그게 아니고 주사위 굴린 사람의 턴이 끝난다는 의미였다ㅎㅎ;;

그리고 점수도 없던 걸로 치고 플레이어가 아웃된단..소리였음..

정말 간단한 기능 구현 요구인데도 참 다른 걸 생각할 수 있다는 걸 깨달았다.ㅠㅠ..

 

만들다가 엉뚱한 데서 막혀서 엄청 답답했는데 진짜 별거 아닌거라서 좀 화났음ㅎ(private class 타입 변수 데이터에 접근접근 하는 것..)

 

여튼..그거 풀고 나니까 기능 구현 자체는 뭐...했다! 예쁘고 정돈되게는 못했다..좀 지저분하게 구현됨..ㅎㅎ..

그리고 강사님 풀이를 보니 오..같은 문제를 보고도 이렇게 다르게 접근해서 설계를 할 수가 있구나 싶었따..

 

아 다시 강사님이 쓴 코드좀 봐야되는데 귀찮네;;;ㅋㅋ

 

음? 근데 이거는 parameter가 어케 들어가서 처리를 하는거지..?

parameter로 Player 타입 배열 palyers를 받아서..에,,,스코어에 넣고...어디 스코어에 넣는거지..? 아 length체크햇구나..

아 이게 지금 Player 클래스 안에 들어있지?ㅋㅋㅋㅋ 아 헷갈렸네 내가 짠거랑^^,,ㅋㅋㅋ

오 대박 신기하네 이걸 이런 식으로..? 게임은 플레이어가 한다는 관점에서 만든 거군...ㅇㅇ...

나는 게임 판에 플레이어가 참여해서 움직인다고 생각을 해서 게임 관리 클래스에 때려박았눈뎁...ㅋㅋ

(그 결과로 조금 드러운 코드가 되었다)

 

그리고 다음 과제는 로또게임 만들기였는데

이것 ㅈㅏ체가 너무 길어져버려서 다음 포스팅으로 넘긴다^^,,,지옥의 로또게임ㅋ,,,

 

로또부터 정줄 놔서 블로그도 놔버림^^