์ค๋์ ์ฃผ์์ฌํญ (6/5, ์์์ผ)
- (์๋ฐ์ ) ๋ฉ๋ชจ์ฅ ํ๋ก์ ํธ
์ ์ ๋ชป์์ ์ปจ๋์ ์ด ์ฌ๊ฐํ๋ค... ๊ฑด๊ฐ๊ด๋ฆฌ ์ํ๊ธฐ.
์๋ฃํ ํ๋ก์ ํธ๋ ์ฌ๊ธฐ
๐บ Notepad
์์ฑํ๋ ์ง๋ ํ๋ก์ ํธ๋ฅผ ๋ค๋กํ๊ณ ์ด๋ฒ์ ์ ๋๋ก ํด๋ณด๊ณ ์ถ์ ๋ง์์ ์ปจํธ๋กค๋ฌ ๋ถ๋ถ์ ๋งก์๋๋ฐ... ์ด๋ฅผ ์ํ ํฐ ๊ทธ๋ฆผ(?)์ ๊ทธ๋ ค๋ณด์๋ค. ๋์ถฉ ์ด๋ ๊ฒ ํ๋ฌ๊ฐ๊ฒ ์ง? ํ๋ ์์๋ ๊ฐ์ ๋๋์ผ๋ก. ๊ธฐ๋ฅ์ ํด๋์ค ๋จ์๋ก ๋ถ๋ฆฌํ๊ธฐ๋ก ํด์, ๊ฐ์ ๊ตฌํ๋ ๊ธฐ๋ฅ๋ค์ ์ปจํธ๋กค๋ฌ์์ ํธ์ถํ๋ ค๊ณ ํ๋ค.
์์ฑํ ๊ตฌ์กฐ๋๋ฅผ ํ ๋๋ก ํ์ํ ํ๋์ ๋ฉ์๋๋ฅผ ๊ตฌ์ํ๋ค.
/* ํ๋ */
- Scanner
- MemoVO
- ๋ฉ๋ชจ๋ฆฌ์คํธ (MemoList)
- ํ๋ฉด (ScreenPrint)
/* ๋ฉ์๋ */
// 0. ์ต์ด ์ง์
์
- startNotepadApp()
// ์ต์ด ์ง์
ํ๋ฉด์ '๋ฉ๋ด(=๊ธฐ๋ฅ ์ ํ ํ๋ฉด)'
// 1. ์
๋ ฅ (Input)
- ๋ฉ๋ด ์ ํ/์
๋ ฅ (menuInput())
// (1) ์
๋ ฅ(์์ฑ)์์...
- ์ด๋ฆ ์
๋ ฅ
- ๋น๋ฐ๋ฒํธ ์
๋ ฅ
- ๋ฉ๋ชจ ์
๋ ฅ (StringBuilder -> String ๋ณํ)
- ๋ฉ๋ชจ ์ ์ฅ ์ฌ๋ถ ์ ํ/์
๋ ฅ
// (2) ๋ชฉ๋ก๋ณด๊ธฐ์์...
- ๋๋์๊ฐ๊ธฐ ์
๋ ฅ
// (3, 4) ์์ ๋ฐ ์ญ์ ์์...
- ์์ ๋ฐ ์ญ์ ํ ๊ธ ์ ํ/์
๋ ฅ
- ๋น๋ฐ๋ฒํธ ์
๋ ฅ -> ์ผ์น ์ฌ๋ถ ํ๋ณ
- ์์ ํ ๋ด์ฉ ์
๋ ฅ
- ์ญ์ ์ฌ๋ถ ์ ํ/์
๋ ฅ
// 2. ์คํ (Process)
- ์
๋ ฅ(์์ฑ) ์คํ ๋ฉ์๋()
- ๋ชฉ๋ก๋ณด๊ธฐ ์คํ ๋ฉ์๋()
- ์์ ์คํ ๋ฉ์๋()
- ์ญ์ ์คํ ๋ฉ์๋()
- ์ข
๋ฃ ์คํ ๋ฉ์๋()
์ง๋ ์ฃผ์ ํํฐ๋๊ป MVC์ ๋ํด ์ฌ์ญค๋ณด๋ฌ๊ฐ์๋ค๊ฐ, '์ค์ ๋ก๋ ์ปจํธ๋กค๋ฌ ๋ฐ์(?) sevice ๋ ์ด์ด๋ฅผ ํ๋ ๋ ์ถ๊ฐํ๊ธด ํ๋๋ฐ~' ๋ผ๋ ๋ง์ ๋ค์์ ๋ ๋ฌด์จ ๋ง์ธ๊ฐ ์ถ์๋๋ฐ, ์ปจํธ๋กค๋ฌ ๋ด์์ Process
๋ฉ์๋๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ๊ณ ๋๋ ์ด๋ค ๋ง์ธ์ง ๋์ถฉ ์ง์์ด ๊ฐ๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค. (๋ด๊ฐ ์๊ฐํ๊ฒ ํ๋ฆฐ ๊ฑธ์๋ ์์ง๋ง.)
์ด๋ค ๊ตฌ์กฐ๋ก ์์ฑํ ์ง ๊ตฌ์ํด๋๋ฉด ์์ฑํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋ค. ๊ทธ๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ฝ๋๋ก ๋๋ฆ๋๋ก ๊ท์น์ ์ธ์๋ดค๋ค.
- ๋ชจ๋ ์ถ๋ ฅ์
ScreenPrint
๊ฐ์ฒด๊ฐ ๋ด๋นํ๋ค. ์ถ๋ ฅ'๋ง' ๋ด๋นํด์ผํ๋ค.- ํ์ง๋ง
Input(์ ๋ ฅ)
์NotepadApp
์ด ๋ด๋นํ๋ค.- ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์
NotepadApp
๊ณผScreenPrint
๋ฅผ ์ ์ธํ ๊ฐ์ฒด๋ค์ด ๋ด๋นํ๋ค.main()
์์๋NotepadApp
์ผ๋ก ์ง์ ๋ง ํ๋ค.
์ ๋ ฅ์ ๋ฐ๋ ๋ฉ์๋์ ์ข ๋ฅ๋ ๋ค์ํ๋ค. ์๋ฅผ ๋ค๋ฉด ๋ฉ๋ด๋ฅผ ์ ํํ๋ ๋ฒํธ๋ฅผ ์ ๋ ฅ ๋ฐ๊ฑฐ๋, ์ด๋ฆ/๋น๋ฐ๋ฒํธ/๋ฉ๋ชจ ๊ฐ์ ๋ฌธ์์ด์ ์ ๋ ฅ ๋ฐ๋ ๊ฒฝ์ฐ๋ ์์๋ค.
// 1-1. ๋ฉ๋ด ์ ํ ์
๋ ฅ
private void selectMenuInput() {
int menuSelect = sc.nextInt();
switch (menuSelect) {
case 1: // ์
๋ ฅ(์์ฑ)
processCreateMemo();
break;
case 2: // ๋ชฉ๋ก์กฐํ
processViewMemoList();
break;
case 3: // ์์
processReviseMemo();
break;
case 4: // ์ญ์
processDeleteMemo();
break;
case 5: // ์ข
๋ฃ
processQuit();
break;
}
}
// 1-2-1. ์ด๋ฆ+๋น๋ฐ๋ฒํธ+๋ฉ๋ชจ ์
๋ ฅ
// ์ด๋ฆ ์
๋ ฅ
private String enterNameInput() {
return sc.nextLine();
}
// ๋น๋ฐ๋ฒํธ ์
๋ ฅ
private String enterPasswordInput() {
return sc.nextLine();
}
๋์ฒด๋ก ScreenPrint(์ถ๋ ฅ ๊ฐ์ฒด)
์ Input()
๋ฉ์๋๋ฅผ ๊ฒฐํฉํ ๊ตฌ์กฐ์ด๋ค. Input
์ ํตํด ๋ฐ์ ๊ฐ์ ์ฌ์ฉํด์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ํจ์๋ฅผ ํธ์ถํ๋ ์ผ์ ํ๋ค.
// 2-1. ์
๋ ฅ(์์ฑ) ์คํ
private void processCreateMemo() {
String name, password, memo;
sc.nextLine(); // ์ค์
๋ ฅ๋ฐฉ์ง๋ฒํผ
// ์ด๋ฆ ์
๋ ฅ
screenPrint.pInputName();
name = enterNameInput();
// ๋น๋ฐ๋ฒํธ ์
๋ ฅ
screenPrint.pInputPassword();
password = enterPasswordInput();
// ๋ฉ๋ชจ ์
๋ ฅ
screenPrint.pInputMemo();
memo = enterMemoInput();
// Q. "์ ์ฅํ์๊ฒ ์ต๋๊น?"
screenPrint.pSaveYnMsg();
int save = yesOrNoInput();
switch (save) {
case 1: // 1. ์ ์ฅํจ
{
// ์ ์ฅ
memoList.Insert(name,password, memo);
screenPrint.pSavedMsg();
// ๋ฉ๋ด๋ก ๋์๊ฐ๋ค
startNotepadApp();
}
break;
case 2: // 2. ์ ์ฅ ์ ํจ
{
// ์ต์ด ๋ฉ๋ด๋ก ๋์๊ฐ
startNotepadApp();
}
break;
}
}
by. ์
๋ ฅ(์์ฑ) ๋ด๋น ํ์ ๋ถ
๋ฉ๋ชจ์ฅ์ด๋ผ๋๊ฒ ํ ์ค๋ง ์
๋ ฅ ๋ฐ๊ณ ๋๋๋๊ฒ ์๋๊ณ , ๋ฌธ๋จ ๋์ด์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ฉด์ ์ฌ๋ฌ ์ค์ ์
๋ ฅ๋ฐ๋๋ฐ, String
ํ์ผ๋ก ์
๋ ฅ ๋ฐ์ผ๋ฉด ํ ์ค๋ง ์
๋ ฅ ๋ฐ๊ณ ๋๋๋๊ฒ ์์ฌ์์ ๊ณ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์ค๋ช
ํด์ฃผ์
จ๋ค.
while()
๋ฐ๋ณต๋ฌธ์ ํตํด ๊ณต๋ฐฑ์ ์
๋ ฅํ ๋๊น์ง ๊ฐ์ ๊ณ์ ์
๋ ฅ ๋ฐ๊ณ , ์
๋ ฅ ๋ฐ์ ๊ฐ์ StringBuilder.append()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ถ๊ฐํด์ค๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐํํ ๋ String
ํ์ผ๋ก ๋ณํํด์ฃผ๋ฉด \n
๋ฌธ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ๋ฐ์ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ ๊ฒ์ด๋ค.
// 1-2-1. ์ด๋ฆ+๋น๋ฐ๋ฒํธ+๋ฉ๋ชจ ์
๋ ฅ
// ๋ฉ๋ชจ ์
๋ ฅ
public String enterMemoInput() {
// ์์ list ์์ฑ
ArrayList<String> textList = new ArrayList<>();
// ์์ stringBuilder ๊ฐ์ฒด ์์ฑ
StringBuilder text = new StringBuilder();
// ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ์
๋ ฅ์ ๊ณ์ ๋ฐ๋๋ค
while (sc.hasNextLine()) {
String word = sc.nextLine();
// ์๋ฌด๋ฐ ๊ฐ๋ ์
๋ ฅ๋ฐ์ง ์์์ ๋
if (word.isEmpty()) {
break; // ๋น ์ ธ๋๊ฐ๋ค
}
// ์
๋ ฅ ๋ฐ์ ๊ฐ์ ์์ list์ ์ ์ฅ
textList.add(word);
}
// ์์ list์ ์ ์ฅ๋ ํ
์คํธ๋ฅผ stringbuilder ๊ฐ์ฒด๋ก ์ถ๊ฐ
for (String item : textList) {
text.append(item).append("\n");
}
// StringBuilder -> String ๋ณํ
return text.toString();
}
์ปจํธ๋กค๋ฌ๋ฅผ ์ค๊ณํ๋ฉด์ ์ด๋ป๊ฒ ๊ผฌ์์ ์๊ฐํด๋ณด์๋ ์ ์ฐจ์งํฅ์ ์ธ ๊ตฌ์กฐ๋ก ์ง์ฌ์ง๋๊ฒ ์ค์ค๋ก ๋ต๋ตํ๋ค. ๊ทธ๋์ ํํฐ๋๊ป ์ง๋ฌธ์ ํด๋ณด์๋๋ฐ, ์ปจํธ๋กค๋ฌ ๋ถ๋ถ์ ์ด๋์ ๋ ์ ์ฐจ์งํฅ์ ์ธ ๋จ๊ณ๋ก ๋์๊ฐ๋๊ฒ ๋ง๋ค๊ณ ํ์ ์ ์์ฌํ๊ณ ์์ ํ ์ ์์๋ค.