이전에 키오스크와 비슷한 방식으로 게시판으로 연습해보려했다.
1. 메인영역
// 게시판 구성요소
// CRUD
// C : 생성 .add 를 사용해서 글 목록에 보이고 글 작성 시 메인화면에 한개씩 늘어나게
// R : 메인화면에 출력되게
// U : .set 사용해서 수정하기
// 게시글 번호, 글 내용, 현재 날짜(LocalDate time = LocalDate.now();) 시간 (LocalTime time = LocalTime.now();)
// D : .remove 로 인덱스 삭제
// 게시판입니다.
// ----------------------
// 1. 내용 / 현재 날짜
// 2. 내용 / 현재 날짜
// 3. 내용 / 현재 날짜
// ...
// 게시글 작성(다른 클래스 이동) 수정 삭제
// 어떤 글을 수정하시겠습니까 or 삭제하시겠습니까
Main go = new Main();
go.View();
단순하게 구상을 하고
메소드는 첫 글자 소문자로 동사
클래스는 첫 글자 대문자로 명사
(잘 안지켜진듯..?)
2. Main 클래스
while (true) {
System.out.println("게시판 입니다.");
System.out.println("-----------------------------------");
System.out.println("번호 내용 작성시간");
// 게시글 보여주기 for 반복문으로 userPosting 배열을 하나씩 보여줌
for (int i = 0; i < userPosting.size(); i++) {
System.out.printf(String.valueOf(i + 1));
System.out.print(" ");
System.out.printf(userPosting.get(i));
System.out.print(" ");
System.out.println(postingTime.get(i));
System.out.println("작성 수정 삭제");
}
while 반복문을 이용하여 잘못 입력해도 프로그램이 종료되지 않도록 감싸고 간단한 문구 출력은 Systemln 으로 출력
// 게시글 작성 키오스크랑 다르게 switch case 문 사용
Scanner getLine = new Scanner(System.in);
String sc = getLine.nextLine();
switch (sc) {
case "작성": {
Post posting = new Post();
posting.Post();
}
case "수정": {
System.out.println("수정할 게시글 번호를 입력해주세요");
int fix = getLine.nextInt();
System.out.println("내용을 입력하세요");
String fixPost = getLine.nextLine(); // 왜 실행이 안되는 것인가.... 너가 실행이 안되니 fixPost에 아무것도 입력이 안되잖니...
super.userPosting.set(fix - 1, fixPost);
System.out.println("수정이 완료 되었습니다.");
Main go = new Main();
go.View();
}
case "삭제": {
System.out.println("삭제할 게시글 번호를 입력해주세요");
int fix = getLine.nextInt();
super.userPosting.remove(fix - 1);
super.postingTime.remove(fix - 1);
System.out.println("삭제가 완료 되었습니다.");
Main go = new Main();
go.View();
}
default:
System.out.println("잘못입력하셨습니다.");
}
}
switch case 문을 사용하니 if 조건문보다 훨씬 가독성이 좋다
3. 게시글 작성 영역(Post)
import java.time.LocalTime;
import java.util.Scanner;
public class Post extends HomePage implements Back{
public void Post() {
Scanner sc = new Scanner(System.in);
System.out.println("내용을 입력해 주세요");
String UP = sc.nextLine();
// 현재 시간을 출력해줌
LocalTime time = LocalTime.now();
// 입력한 내용과 현재 시간을 가지고 재확인 영역으로 이동
Double_Check doubleCheck = new Double_Check();
doubleCheck.double_check(UP, time);
}
}
LocalTime 을 사용하니 시간 잘 나타내줌 문제는 시분초를 넘어 0.000000000 자리까지 나타냄.... 이거 수정을 한번.. 시도해봐야겠다
4. 재확인 영역
import java.time.LocalTime;
import java.util.Scanner;
public class Double_Check extends HomePage implements Back{
public void double_check(String post, LocalTime posttime) {
while (true) {
System.out.println("게시글 작성을 완료 하셨습니까?");
System.out.println("1.예 2.아니요");
Scanner check = new Scanner(System.in);
int sc = check.nextInt();
if (sc == 1) {
System.out.println("작성이 완료되었습니다.");
super.userPosting.add(post);
super.postingTime.add(posttime);
Main goMain = new Main();
goMain.View();
} else if (sc == 2) {
System.out.println("이전 화면으로 돌아갑니다.");
Post goPost = new Post();
goPost.Post();
} else {
System.out.println("잘못 입력하셨습니다.");
}
}
}
}
작성완료를 누르면 만들어놓은 배열에 .add해줌 메인화면에 출력되도록
5. Scanner 재활용 영역
public class HomePage implements Back {
@Override
public void createPost() {
Scanner sc = new Scanner(System.in);
}
}
의미가 있나...? Class마다 스캐너를 안붙여줘도 되는거 딱 하나 코드의 재활용성을 높인다 라는 빛 좋은 개살구
6. 인터페이스
public interface Back {
void createPost();
List<String> userPosting = new LinkedList<>();
List<LocalTime> postingTime = new LinkedList<java.time.LocalTime>();
}
인터페이스를 통해서 만드려고 했는데 활용을 전혀 못한거 같다
-----------------------------------------------------------------------------------------------------------------------------------------------------------------구현 못한점 update 구현 실패
System.out.println("수정할 게시글 번호를 입력해주세요");
int fix = getLine.nextInt();
System.out.println("내용을 입력하세요");
String fixPost = getLine.nextLine(); // 왜 실행이 안되는 것인가.... 너가 실행이 안되니 fixPost에 아무것도 입력이 안되잖니...
super.userPosting.set(fix - 1, fixPost);
System.out.println("수정이 완료 되었습니다.");
Main go = new Main();
go.View();
String fixPost 는 입력값에 따라라 라고 선언하고
.set을 이용하여 사용사가 입련한 index를 fixPost로 바꾸라고 선언하였는데
String fixPost = getLine.nextLine(); 이 실행이 안됨
수정하고 번호 입력하면 바로 수정이 완료 되었습니다. 가 출력이 되고 내용이 비어있음
왜이러는지 모르겠음
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
느낀점 : 키오스크보다 기능이 적으니 당연히 만드는 시간은 단축됨
아직 자바랑 친한느낌은 아님 그래도 조금은 더 익숙해진 느낌이 들어서 만족스러움
다형성이란? (0) | 2023.11.08 |
---|---|
필드, 메소드, 매개변수 (0) | 2023.11.07 |
키오스크 다시한번 (0) | 2023.10.29 |
2023-10-20 TIJava 인터페이스 (0) | 2023.10.20 |
2023-10-19 TIL (1) | 2023.10.20 |