brunch

You can make anything
by writing

C.S.Lewis

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

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

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



1. 낙양의 장수 목록 


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

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

이렇게 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) 데이터를 로딩 

2) 자료 구조를 생성


이 클래스는 싱글턴 패턴(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 


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

낙양의 총 병사는 22900 명이고 

장수는 17명이고 

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

입니다. 


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

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


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

감사합니다. 


2021.8.17

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari