[ 게시판 만들기 - 3 (ArrayList, 기능 분리) ]
=> 기존 게시판 예제 참고
- 게시판 만들기 - 2 : http://momentoo.tistory.com/7
- ArrayList : http://momentoo.tistory.com/9
[ 게시판 소스에 사용된 정보 알아보기 ]
Q. 생성자란?
- 객체가 생성되고 나서 해야할 일을 클래스안에 넣어두고, 모든 객체들이 설정된 로직으로 초기화 작업을 가능케 하는 기능입니다.
Q. this,super, this(),super()?
- this : 현재 클래스의 인스턴스, 필드의 명시적으로 나타낼 때 사용되어 집니다.
- super : 부모 클래스의 인스턴스, 필드를 명시적으로 나타낼 때 사용되어 집니다.
- this() : 해당 클래스의 생성자를 호출할 때 사용되어 지는 기능입니다.
- super() : 부모 클래스의 생성자를 호출할 때 사용되어 지는 기능입니다.
Q. main메소드란?
- 자바에서 프로그램을 실행했을 때 자바에서 가장 먼저 읽어들여서 명령들을 다 작동하고 끝나면 종료가 되는 공간입니다. 자세한 내용은 아래 링크를 참고하세요.
- 참고 사이트 : http://alecture.blogspot.kr/2011/04/blog-post_20.html
[ 게시판 소스 ]
- 기존 소스에서 배열에 값을 저장하던 부분을 Java API를 통해 ArrayList클래스로 구현하여 소스가 간소화 된 부분을 확인할 수 있습니다.
- this를 사용해 클래스의 인스턴스와 필드를 명시하였습니다.
- main메소드에 모두 구현한 부분을 기능별로 분리하여 작성하였습니다.
- 결과 화면은 이전과 동일합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class BoardThird { private Scanner sc; private List<String[]> boardList; private int seq; public BoardThird() { // 생성자(각 값들의 초기화) this.sc = new Scanner(System.in); // 문자열 입력을 위한 Scanner 생성 this.boardList = new ArrayList<>(); // ArrayList 사용을 위한 초기화 this.seq = 1; // 게시물 번호 } public void startMessage() { // 시작 메세지 System.out.println("1. 등록 2. 전체조회 3. 선택조회 4. 수정 5. 삭제 0. 종료"); } public void searchBooMessage(boolean searchBoo) { // 조회 여부 메세지 if(!searchBoo) { // 조회 실패일 때 System.out.println("선택한 값은 없습니다."); } } public void exit() { // 종료 System.out.println("종료되었습니다."); } public void choiceCancel() { // 선택 실패 System.out.println("잘못선택하셨습니다."); } public boolean listEmptyBoo() { // 배열 값 존재 여부 판단 if (this.boardList.isEmpty()) { // 값이 존재하지 않을 때 System.out.println("등록된 값이 없습니다."); return false; } return true; } public String inputStr() { // 입력 return this.sc.next(); } public void create() { // 등록 System.out.println("등록란입니다."); String[] boardArrVar = new String[4]; // 등록할 입력 값 배열 선언 boardArrVar[0] = String.valueOf(seq); // 등록할 게시물 번호 추가 System.out.println(boardArrVar[0] + "번의 등록할 제목을 입력하세요."); boardArrVar[1] = sc.next(); // 등록할 제목 입력 System.out.println(boardArrVar[0] + "번의 등록할 내용을 입력하세요."); boardArrVar[2] = sc.next(); // 등록할 내용 입력 System.out.println(boardArrVar[0] + "번의 등록할 추가정보를 입력하세요."); boardArrVar[3] = sc.next(); // 등록할 추가정보 입력 this.boardList.add(boardArrVar); // ArrayList의 등록 로직 실행 System.out.println("등록완료되었습니다."); seq++; } public void listSearch() { // 전체 조회 System.out.println("전체조회입니다."); if (listEmptyBoo()) { // 배열에 저장된 값 존재 여부 판단 for(String[] boardArrVar : this.boardList) { System.out.println(boardArrVar[0] + "번에 등록된 내용은 다음과 같습니다."); System.out.println("이름 = > [" + boardArrVar[1] + "] 내용 = > [" + boardArrVar[2] + "] 추가정보 = > [" + boardArrVar[3] + "]"); } System.out.println("조회가 끝났습니다."); } } public void choiceSearch() { // 선택 조회 System.out.println("선택조회입니다."); if (listEmptyBoo()) { // 배열에 저장된 값 존재 여부 판단 System.out.println("선택조회할 번호를 입력하세요."); String searchVal = sc.next(); // 조회할 번호 입력 boolean searchBoo = false; // 조회 여부 for(String[] boardArrVar : this.boardList) { if(boardArrVar[0].equals(searchVal)) { // 배열에 저장되어 있는 게시물 번호와 조회 값이 같을 때 System.out.println(boardArrVar[0] + "번의 값은 다음과 같습니다."); System.out.println("이름 = > [" + boardArrVar[1] + "] 내용 = > [" + boardArrVar[2] + "] 추가정보 = > [" + boardArrVar[3] + "]"); searchBoo = true; // 조회 성공 break; } } searchBooMessage(searchBoo); // 조회 여부 전달 } } public void modify() { // 수정 System.out.println("수정란입니다."); if (listEmptyBoo()) { // 배열에 저장된 값 존재 여부 판단 System.out.println("수정할 번호를 입력하세요."); String searchVal = sc.next(); // 조회할 번호 입력 boolean searchBoo = false; // 조회 여부 for(String[] boardArrVar : this.boardList) { if(boardArrVar[0].equals(searchVal)) { System.out.println(boardArrVar[0] + "번의 값은 다음과 같습니다."); System.out.println("이름 = > [" + boardArrVar[1] + "] 내용 = > [" + boardArrVar[2] + "] 추가정보 = > [" + boardArrVar[3] + "]"); System.out.println("수정이 시작됩니다."); System.out.println(boardArrVar[0] + "수정할 제목을 입력하세요."); boardArrVar[1] = this.inputStr(); System.out.println(boardArrVar[0] + "수정할 내용을 입력하세요."); boardArrVar[2] = this.inputStr(); System.out.println(boardArrVar[0] + "수정할 내용을 입력하세요."); boardArrVar[3] = this.inputStr(); System.out.println("수정이 완료되었습니다."); searchBoo = true; // 조회 성공 break; } } searchBooMessage(searchBoo); // 조회 여부 전달 } } public void delete() { // 삭제 System.out.println("삭제란입니다."); if (listEmptyBoo()) { // 배열에 저장된 값 존재 여부 판단 System.out.println("삭제할 번호를 입력하세요."); String searchVal = sc.next(); // 조회할 번호 입력 boolean searchBoo = false; // 조회 여부 for(String[] boardArrVar : this.boardList) { if(boardArrVar[0].equals(searchVal)) { System.out.println(boardArrVar[0] + "번의 값은 다음과 같습니다."); System.out.println("이름 = > [" + boardArrVar[1] + "] 내용 = > [" + boardArrVar[2] + "] 추가정보 = > [" + boardArrVar[3] + "]"); System.out.println("해당 값을 삭제하시겠습니까? Y[예] // N[아니오]"); String deleteChoice = sc.next(); // 삭제 여부 입력 if(deleteChoice.equals("Y")) { // 삭제 선택일 때 this.boardList.remove(boardArrVar); // ArrayList의 삭제 로직 실행 System.out.println("삭제완료되었습니다."); break; }else { // 삭제 취소일 때 System.out.println("삭제가 취소되었습니다."); } searchBoo = true; // 조회 성공 break; } } searchBooMessage(searchBoo); // 조회 여부 전달 } } public static void main(String[] args) { BoardThird boardThird = new BoardThird(); while(true) { boardThird.startMessage(); // 시작 메세지 String choice = boardThird.inputStr(); // 모드 선택 입력 if(choice.equals("1")) { // 등록 boardThird.create(); }else if(choice.equals("2")) { // 전체조회 boardThird.listSearch(); }else if(choice.equals("3")) { // 선택조회 boardThird.choiceSearch(); }else if(choice.equals("4")) { // 수정 boardThird.modify(); }else if(choice.equals("5")) { // 삭제 boardThird.delete(); }else if(choice.equals("0")) { // 종료 boardThird.exit(); break; }else { // 모드 선택 실패 boardThird.choiceCancel(); continue; } } } } | cs |
- Java API 한글 번역 사이트 : http://changki.net/
- 참고 문헌 : Head First JAVA
'Development > JAVA' 카테고리의 다른 글
[JAVA] Java I/O 정리 (1) | 2016.09.17 |
---|---|
[JAVA] 상속, 추상클래스, 인터페이스 (0) | 2016.09.03 |
[JAVA] Collection,Map 정리 (0) | 2016.09.02 |
[JAVA] 게시판 예제 - 2 (배열 복사) (0) | 2016.08.29 |
[JAVA] 게시판 예제 - 1 (배열, Scanner) (0) | 2016.08.24 |