BoardDTO 만들기

package model;
public class BoardDTO {
private int id;
private String title;
private String writer;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public boolean equals(Object o){
if (o instanceof BoardDTO){
BoardDTO b =(BoardDTO) o;
return id == b.id;
}
return false;
}
public BoardDTO(BoardDTO original){
id = original.id;
title = original.title;
writer = original.writer;
content = original.content;
}
public BoardDTO(){
}
public BoardDTO(int id){
this.id = id;
}
}
BoardController만들기

package View;
import Controller.BoardController;
import model.BoardDTO;
import util.ScannerUtil;
import java.util.ArrayList;
import java.util.Scanner;
public class BoardViewer {
private final Scanner SCANNER;
private BoardController boardController;
private BoardDTO boardDTO = null;
public BoardViewer(){
SCANNER = new Scanner(System.in);
boardController = new BoardController();
}
public void showMenu(){
String message = "1. 새 글 작성하기 2. 글 목록 보기 3. 종료";
while (true){
int userChoice = ScannerUtil.nextInt(SCANNER, message);
if (userChoice == 1){
writeBoard();
} else if (userChoice == 2){
printList();
} else if (userChoice == 3) {
System.out.println("사용해주셔서 감사합니다.");
break;
}
}
}
private void writeBoard(){
BoardDTO boardDTO = new BoardDTO();
String message;
message = "글의 제목을 입력하시오.";
boardDTO.setTitle(ScannerUtil.nextLine(SCANNER, message));
message = "글의 작성자를 입력하시오.";
boardDTO.setWriter(ScannerUtil.nextLine(SCANNER, message));
message = "글의 내용을 입력하시오.";
boardDTO.setContent(ScannerUtil.nextLine(SCANNER, message));
boardController.add(boardDTO);
}
private void printList(){
ArrayList<BoardDTO> list = boardController.selectAll();
if (list.isEmpty()){
System.out.println("아직 등록된 글이 없습니다.");
} else {
for (BoardDTO b : list){
System.out.printf("%d. %s\n", b.getId(), b.getTitle());
}
String message = "상세보기할 글의 번호나 뒤로 가실려면 0을 입력해주세요.";
int userChoice = ScannerUtil.nextInt(SCANNER, message);
BoardDTO b = new BoardDTO();
b.setId(userChoice);
while (userChoice != 0 && !list.contains(new BoardDTO(userChoice))){
System.out.println("잘못 입력하셨습니다.");
userChoice = ScannerUtil.nextInt(SCANNER, message);
b.setId(userChoice);
}
if (userChoice != 0){
printOne(userChoice);
}
}
}
private void printOne(int id){
BoardDTO boardDTO = boardController.selectOne(id);
System.out.println("==========================================");
System.out.println(boardDTO.getTitle());
System.out.println("------------------------------------------");
System.out.println("글번호: " + boardDTO.getId());
System.out.println("글 작성자: " + boardDTO.getWriter());
System.out.println("------------------------------------------");
System.out.println(boardDTO.getContent());
System.out.println("==========================================");
String message = "1. 수정 2. 삭제 3. 뒤로가기";
int userChoice = ScannerUtil.nextInt(SCANNER, message, 1, 3);
if (userChoice == 1){
update(id);
} else if (userChoice == 2){
delete(id);
} else {
printList();
}
}
private void update(int id){
BoardDTO b = boardController.selectOne(id);
String message = "새로운 제목을 입력해주세요.";
b.setTitle(ScannerUtil.nextLine(SCANNER, message));
message = "새로운 내용을 입력해주세요.";
b.setContent(ScannerUtil.nextLine(SCANNER, message));
boardController.update(b);
}
private void delete(int id){
String message = "정말로 삭제하시겠습니까? Y/N";
String yesNo = ScannerUtil.nextLine(SCANNER, message);
if (yesNo.equalsIgnoreCase("Y")){
// equalsIgnoreCase() 대소문자 상관업이 특정문자가 같은지 확인할 때 사용하는 메소드
boardController.delete(id);
printList();
} else {
printOne(id);
}
}
}
BoardViewer 만들기

package Controller;
import model.BoardDTO;
import java.util.ArrayList;
public class BoardController {
private ArrayList<BoardDTO> list;
private int nextId;
public BoardController(){
list = new ArrayList<>();
nextId = 1;
for (int i = 1; i <= 4; i++) {
BoardDTO b = new BoardDTO();
b.setTitle("제목 " + i);
b.setWriterNickname("작성자 " + i);
b.setContent(i + "번째 게시글의 내용입니다.");
add(b);
}
}
public void add(BoardDTO boardDTO){
boardDTO.setId(nextId++);
list.add(boardDTO);
}
public BoardDTO selectOne(int id){
BoardDTO temp = new BoardDTO(id);
if (list.contains(temp)){
return new BoardDTO(list.get(list.indexOf(temp))); // 깊은 복사
}
return null;
}
public ArrayList<BoardDTO> selectAll(){
ArrayList<BoardDTO> temp = new ArrayList<>();
for (BoardDTO b : list){
temp.add(new BoardDTO(b)); // 깊은 복사
}
return temp;
}
public void update(BoardDTO boardDTO){
list.set(list.indexOf(boardDTO), boardDTO);
}
public void delete(int id){
list.remove(new BoardDTO(id));
}
}
Board 클래스에서 실행하기
package day0112;
import View.BoardViewer;
import View.UserViewer;
import java.util.Scanner;
public class Ex03Board02 {
public static void main(String[] args) {
BoardViewer boardViewer = new BoardViewer();
userViewer.showMenu();
}
}'JX405기_비트 > Java' 카테고리의 다른 글
| Day05-1 클래스 상속 (0) | 2023.01.16 |
|---|---|
| Day04-4 로그인과 게시판 의존성DI 주입하기 (0) | 2023.01.16 |
| Day04-2 MVC 패턴을 활용하여 로그인 프로그램 만들기 (0) | 2023.01.16 |
| Day04-1 3일차에 숙제 문제 정답 공유 (0) | 2023.01.16 |
| Day03-3 배열에 도움되는 메소드 모은 ArrayUtil로 Lotto 추첨기 만들기 (0) | 2023.01.15 |