From 6dc7c9887178924af8666cd0f27e62d3dda7ac2d Mon Sep 17 00:00:00 2001 From: abeansu Date: Fri, 20 Mar 2026 00:32:29 +0900 Subject: [PATCH 1/5] =?UTF-8?q?docs:=20[1=EC=A3=BC=EC=B0=A8]=20=EA=B9=80?= =?UTF-8?q?=EC=9A=B0=EA=B7=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" diff --git "a/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" "b/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" new file mode 100644 index 0000000..d178ce9 --- /dev/null +++ "b/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" @@ -0,0 +1 @@ +안녕하세요 26학번 김우균입니다. \ No newline at end of file From e51ee9d88f63100678dfe451ed8262a4a8150e11 Mon Sep 17 00:00:00 2001 From: abeansu Date: Tue, 31 Mar 2026 13:49:57 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[2=EC=A3=BC=EC=B0=A8]=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=EC=A7=80=ED=96=A5=20=EC=97=B0=EC=8A=B5(abeansu)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\247\200\355\226\245 \354\227\260\354\212\265.md" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" diff --git "a/week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" "b/week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" new file mode 100644 index 0000000..3088021 --- /dev/null +++ "b/week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" @@ -0,0 +1,10 @@ +평소에 혼자서 서비스를 구현해오면서 느꼈던 점들을 많이 적용했다. 우선 먼저 어떤 기능을 구현하더라도 나중의 유지보수를 생각해서 최대한 유연하게 작성하는 것을 최우선 목표로 삼았다. +또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보려고 시도해봤다. 이에 좋은 경험을 얻었는데 Model과 Controller 그리고 View라는 책임의 분할, 역할 분리를 어떻게 해야 더 명확히 할 수 있을까란 깊은 고민을 해볼 수 있었다. 그리고 예외처리를 하면서도 어떻게 해야 예외처리를 명확한 곳에 할 수 있을까, 어떻게 해야 더 직관적인 에러 메시지일까, 오류 조건은 어떻게 잡아야할까, 어떤 예외를 놓치고 있을까같은 사고과정을 거쳤다. +처음에는 List로 Lotto 클래스가 구현되어 있어서 int[] 라는 원시 배열로 바꿔서 구현했었는데, 명세서상 그대로 구현된대로 써야해서 곧장 그만 둬야 했던게 아쉽다. 로또 시스템 특성상 로또 번호는 6자리로 고정되어있는데 배열 크기가 유동적으로 바뀌는 List(ArrayList)를 써야한다는 점이 옳지 않다고 느껴져서 원시 배열로 구현을 시도했었다. +조건 중에 enum class를 활용하라는 말이 있었는데 보자마자 의도를 알아챌 수 있었다. 로또 당첨의 종류를 enum 으로 관리하라는 의미였을 것이다. 그래서 그 enum 클래스에는 알맞은 정보가 들어오면 알맞은 enum을 내뱉어주는 정적 함수를 하나 만들어줬다 ( find(winningNumber, bonus, lotto) ) +그리고 전체적으로 프로젝트가 유동적일 수 있게 상수들을 모조리 한 곳에 ( Constants.java ( interface 파사드 패턴 ) ) 모아서 관리할 수 있도록 했다. 사소한 상수 하나를 바꾸려고 이곳저곳 프로젝트를 헤집어놓는 경험을 했었기 때문에 Constants로 관리해주었다. +그리고 익명함수 ( 람다 )를 활용해서 유동적인 read 메서드를 만들어줬다. 숫자나 글자를 읽어올 때 특정 코드 블럭을 실행시킬 수 있도록 ( 실제 의도는 조건을 통해 예외처리 였음 ) 해놨는데 이를 통해 유동적인 코드를 짤 수 있도록 노력했다. +그리고 메인 함수에서 예외처리가 일어날 경우 다시 맨 처음으로 돌아가서 재 실행하도록 만들었었는데, 문제 의도가 예외처리 후 종료인지, 재시작인지 명확하지 않아 최종적으로는 보수적으로 예외처리만을 하고 자연적으로 종료되게 설계했다. +그리고 상수 컨테이너 ( Constants ) 에 크기가 큰 숫자를 다룰 때 읽기 쉽도록 _를 이용한 숫자 크기 구분을 사용했다. + +https://github.com/COW-edu/practice-oop-lotto/pull/52 From 0fdb4a1fafb06d4f19552a72aee362250ff7a3c8 Mon Sep 17 00:00:00 2001 From: abeansu Date: Tue, 31 Mar 2026 13:51:13 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=EC=97=90=20=EB=A7=88=ED=81=AC=EB=8B=A4=EC=9A=B4=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EB=A7=8C=EB=93=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" => "week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" (100%) diff --git "a/week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" similarity index 100% rename from "week1/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" rename to "week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" From 37de3a3ed061bc0be7caeb3e60781fc9802e9de5 Mon Sep 17 00:00:00 2001 From: abeansu Date: Tue, 31 Mar 2026 13:57:44 +0900 Subject: [PATCH 4/5] =?UTF-8?q?docs:=20=EA=B8=80=20=EB=8B=A4=EB=93=AC?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\355\226\245 \354\227\260\354\212\265.md" | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git "a/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" index 3088021..c0a8709 100644 --- "a/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" +++ "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" @@ -1,10 +1,14 @@ -평소에 혼자서 서비스를 구현해오면서 느꼈던 점들을 많이 적용했다. 우선 먼저 어떤 기능을 구현하더라도 나중의 유지보수를 생각해서 최대한 유연하게 작성하는 것을 최우선 목표로 삼았다. -또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보려고 시도해봤다. 이에 좋은 경험을 얻었는데 Model과 Controller 그리고 View라는 책임의 분할, 역할 분리를 어떻게 해야 더 명확히 할 수 있을까란 깊은 고민을 해볼 수 있었다. 그리고 예외처리를 하면서도 어떻게 해야 예외처리를 명확한 곳에 할 수 있을까, 어떻게 해야 더 직관적인 에러 메시지일까, 오류 조건은 어떻게 잡아야할까, 어떤 예외를 놓치고 있을까같은 사고과정을 거쳤다. -처음에는 List로 Lotto 클래스가 구현되어 있어서 int[] 라는 원시 배열로 바꿔서 구현했었는데, 명세서상 그대로 구현된대로 써야해서 곧장 그만 둬야 했던게 아쉽다. 로또 시스템 특성상 로또 번호는 6자리로 고정되어있는데 배열 크기가 유동적으로 바뀌는 List(ArrayList)를 써야한다는 점이 옳지 않다고 느껴져서 원시 배열로 구현을 시도했었다. -조건 중에 enum class를 활용하라는 말이 있었는데 보자마자 의도를 알아챌 수 있었다. 로또 당첨의 종류를 enum 으로 관리하라는 의미였을 것이다. 그래서 그 enum 클래스에는 알맞은 정보가 들어오면 알맞은 enum을 내뱉어주는 정적 함수를 하나 만들어줬다 ( find(winningNumber, bonus, lotto) ) -그리고 전체적으로 프로젝트가 유동적일 수 있게 상수들을 모조리 한 곳에 ( Constants.java ( interface 파사드 패턴 ) ) 모아서 관리할 수 있도록 했다. 사소한 상수 하나를 바꾸려고 이곳저곳 프로젝트를 헤집어놓는 경험을 했었기 때문에 Constants로 관리해주었다. -그리고 익명함수 ( 람다 )를 활용해서 유동적인 read 메서드를 만들어줬다. 숫자나 글자를 읽어올 때 특정 코드 블럭을 실행시킬 수 있도록 ( 실제 의도는 조건을 통해 예외처리 였음 ) 해놨는데 이를 통해 유동적인 코드를 짤 수 있도록 노력했다. -그리고 메인 함수에서 예외처리가 일어날 경우 다시 맨 처음으로 돌아가서 재 실행하도록 만들었었는데, 문제 의도가 예외처리 후 종료인지, 재시작인지 명확하지 않아 최종적으로는 보수적으로 예외처리만을 하고 자연적으로 종료되게 설계했다. -그리고 상수 컨테이너 ( Constants ) 에 크기가 큰 숫자를 다룰 때 읽기 쉽도록 _를 이용한 숫자 크기 구분을 사용했다. - +혼자 서비스를 구현해오면서 평소에 중요하다고 느꼈던 점들을 이번 프로젝트에 적극적으로 반영해보았습니다. +가장 우선적으로 생각한 것은, 어떤 기능이든 나중의 유지보수를 고려해 최대한 유연하게 작성하는 것이었습니다. +또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보며, Model, Controller, View의 책임을 어떻게 나누고 역할을 더 명확하게 분리할 수 있을지 깊이 고민해볼 수 있었습니다. +이 과정에서 예외 처리 역시 단순히 처리하는 데 그치지 않고, 어떤 위치에서 처리해야 명확한지, 에러 메시지는 얼마나 직관적이어야 하는지, 어떤 오류 조건을 정의해야 하는지 등을 함께 생각하며 설계했습니다. +초기에는 로또 클래스가 List로 구현되어 있었는데, 로또 번호가 6개로 고정되어 있는 특성을 고려하면 원시 배열이 더 적합하다고 판단해 구현을 시도했습니다. +다만 명세를 우선해야 했기 때문에, 최종적으로는 명세에 맞는 형태를 유지하는 방향으로 정리했습니다. 이 경험을 통해 “더 나은 구조”와 “명세 준수” 사이의 균형을 지키는 것이 중요하다는 점을 배웠습니다. +또한 당첨 결과를 enum으로 관리해야 한다는 요구사항을 보자마자 의도를 파악할 수 있었습니다. +단순히 값을 나열하는 데 그치지 않고, 입력값에 따라 적절한 당첨 결과를 반환하는 정적 메서드도 함께 구성하여 책임을 분리했습니다. +프로젝트 전반의 유연성을 높이기 위해 상수는 한 곳에 모아 관리했습니다. +사소한 수치를 수정할 때마다 여러 파일을 수정해야 하는 불편함을 줄이고자 Constants를 중심으로 설정값을 통합했습니다. +또한 큰 숫자는 _를 활용해 가독성을 높였습니다. +이외에도 람다를 활용해 입력 처리 방식을 유연하게 구성했고, 예외가 발생했을 때의 흐름은 문제 의도를 고려해 보수적으로 설계했습니다. +전체적으로 이번 프로젝트를 통해 단순히 기능을 구현하는 것을 넘어, 유지보수성, 명세 준수, 예외 처리 방식까지 함께 고민하는 경험을 할 수 있었습니다. https://github.com/COW-edu/practice-oop-lotto/pull/52 From 9ffd57361155e56aaaada6f007dccee8b53738dc Mon Sep 17 00:00:00 2001 From: abeansu Date: Tue, 31 Mar 2026 13:58:28 +0900 Subject: [PATCH 5/5] =?UTF-8?q?docs:=20=EA=B8=80=20=EB=8B=A4=EB=93=AC?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" index c0a8709..392afad 100644 --- "a/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" +++ "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" @@ -3,7 +3,7 @@ 또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보며, Model, Controller, View의 책임을 어떻게 나누고 역할을 더 명확하게 분리할 수 있을지 깊이 고민해볼 수 있었습니다. 이 과정에서 예외 처리 역시 단순히 처리하는 데 그치지 않고, 어떤 위치에서 처리해야 명확한지, 에러 메시지는 얼마나 직관적이어야 하는지, 어떤 오류 조건을 정의해야 하는지 등을 함께 생각하며 설계했습니다. 초기에는 로또 클래스가 List로 구현되어 있었는데, 로또 번호가 6개로 고정되어 있는 특성을 고려하면 원시 배열이 더 적합하다고 판단해 구현을 시도했습니다. -다만 명세를 우선해야 했기 때문에, 최종적으로는 명세에 맞는 형태를 유지하는 방향으로 정리했습니다. 이 경험을 통해 “더 나은 구조”와 “명세 준수” 사이의 균형을 지키는 것이 중요하다는 점을 배웠습니다. +다만 명세를 우선해야 했기 때문에, 최종적으로는 명세에 맞는 형태를 유지하는 방향으로 정리했습니다. 이 경험을 통해 더 나은 구조와 명세 준수 사이의 균형을 지키는 것이 중요하다는 점을 배웠습니다. 또한 당첨 결과를 enum으로 관리해야 한다는 요구사항을 보자마자 의도를 파악할 수 있었습니다. 단순히 값을 나열하는 데 그치지 않고, 입력값에 따라 적절한 당첨 결과를 반환하는 정적 메서드도 함께 구성하여 책임을 분리했습니다. 프로젝트 전반의 유연성을 높이기 위해 상수는 한 곳에 모아 관리했습니다.