[ 게시판 만들기 - 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

+ Recent posts