brunch

[코딩삼국지] #3 GeneralsMap 코딩

들어가는 글: 장수(General)들을 위한 자료 구조를 만들어봅니다.

깃헙 주소: https://github.com/yudong80/coding-samguk



1. 낙양의 장수 목록


다음은 2화에서 다룬 (11번 낙양) 에는 17명의 장수가 있습니다.

20210817-2.png

실제로 어떤 장수들이 있을까요? (장수 목록)

20210817-10.png
20210817-11.png

이렇게 16명이 있고 , 1명(유연)이 더 있습니다.


2. GeneralsMap 코딩


이와 같이 장수 목록을 저장하고 있는 자료 구조를 작성합니다.

장수는 크게

* 아직 태어나지 않는 장수

* 재야 장수

* 재직 장수

* 사망 장수

로 나뉩니다.


장수(General) 객체는 매번 필요할 때 생성하는 것이 아니라 한번만 생성하고 필요할 때 조회하는 것이 좋습니다. 편의상 장수 이름(예, 조조)를 key로 한 Map을 생성하였습니다.


ISSUE: 동일한 이름의 장수를 구별할 수 없는 문제가 있습니다.


클래스: coding.samguk.GeneralsMap.java

깃헙 링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/GeneralsMap.java


1) 데이터를 로딩

20210817-12.png

2) 자료 구조를 생성

20210817-13.png


이 클래스는 싱글턴 패턴(singleton pattern)으로 인스턴스가 1개만 생성되며

이 자료구조를 사용할 때 GeneralsMap.getInstance()를 호출합니다.


3. GeneralsMap 활용


아래와 같이 간단한 테스트 코드를 만들어보았습니다.

등록한 17명의 장수를 (11. 낙양) 땅에 등록하고 그 정보를 출력합니다.


클래스: coding.samguk.App.java

메서드: test낙양장수들()

깃헙링크: https://github.com/yudong80/coding-samguk/blob/main/V0/src/coding/samguk/App.java

20210817-14.png


실행 결과는 다음과 같습니다.

20210817-15.png

낙양의 총 병사는 22900 명이고

장수는 17명이고

장수 목록은 {조조, 순욱, 곽가, 하우연 .. 유연 }

입니다.


이 강의는 코드 위주로 빠르게 진행해보는 것이 목적입니다.

깃헙 커밋: https://github.com/yudong80/coding-samguk/commit/fee46ebf5371d78c4f3320185edec4b0705f855b


흥미가 닿는데 까지 빠르게 적어볼께요.

감사합니다.


2021.8.17

keyword
매거진의 이전글[코딩삼국지] #2 Province 코딩