프로젝트라고 하기에는 조금 부족한 감이 있지만 Spring스터디를 하기에 앞서 OOP를 공부하기 위해 https://github.com/woowacourse/java-racingcar-precourse의 자동차 경주 게임 구현한 것을 간략하게나마 FlowChart로 나타내보았다.
처음엔 LibreOffice으로 만드려고 다운받았으나 막상 실행해보니 오히려 웹 기반의 Draw.io가 편해보여서 중간에 갈아탔다.
구현한 .Class파일은 총 4가지였고 다음과 같은 내용과 메소드들을 담고 있다.
Car
-각 차들의 정보(이름, 위치)를 private으로 관리
-Getter(Setter x)
-GenerateRandomNumber(0부터9사이의 난수를 생성하여 리턴)
-CheckAdvance(입력받은 수가 4이상이면 위치+1)
InputManger
-getCar(Console.readLine()을 통해 입력을 받아 ,단위로 split)
-getAttemptNum(수를 받아 Integer.parseInt로 처리)NumberFormatException
OutputManger
-printGetCarName("경주할 자동차 이름을 입력하세요"출력)
-printGetAttemptNum("시도할 회수는 몇회인가요"출력)
-printRunResultMessage("실행결과\n"출력)
-printCarInfo(Car객체 하나를 받아 이름과 위치에 대한 정보를 형식에 맞게 출력)
-printSimulationResult(Car객체 List를 받아 각 Car들의 정보를 출력)
-printWinner(Car객체 List를 받아 전체 중 가장 멀리 이동한 Car의 이름을 형식에 맞게 출력)
Application
-멤버변수로 List<Car> cars, InputManager, OutputManger, totalAttemptNum
-run(getInfo, Simulation, finishGame을 통해 실행)
-getInfo(이름을 입력 받아 각각 cars에 add, 시도횟수를 입력받음)
-simulation(한번의 시도횟수마다 Car.Advance메소드를 이용하여 해당 car의 위치를 조정하고 printSimulationResult를 통해 전체 상황을 출력)
-calWinner(새로운 Car 배열 winners를 만들고 우승자 객체들만 따로 add, 이후 이들을 add하여 return)
-finishGame(OutputManager.printWinner와 calWinner를 이용하여 우승자 출력)
-main에서 Application 객체 하나 생성후 run()메소드 실행.
일일히 메소드를 언급해가며 만들기에는 너무 복잡할 듯하여 큰 줄기에 해당하는 과정만 나타내보았다.

'CS > 오픈소스SW개발방법및도구' 카테고리의 다른 글
| MVC 패턴에 대해 알아보기 (0) | 2023.06.05 |
|---|---|
| c++ UnitTest(Visual studio 2022 활용) (0) | 2023.05.19 |
| Alphine Linux에 대해 알아보기 (0) | 2023.04.15 |
| LINE TODAY 서비스 개발 및 도입에 활용된 애자일 기법 (0) | 2023.04.04 |
| Java에 대해 알아보자 (0) | 2023.03.22 |