이제 목록을 보여주는 기능을 추가 할 건데, Motivation 정보가 나오도록 할거고 만약 길이가 너무 길면 단어를 잘라서 목록에 저장하도록 할거야. 그리고 접근제한자를 사용해 클래스간의 결합도를 낮출거야.
else if (cmd.equals("list")) {
if (motivations.size() == 0) {
System.out.println("등록된 moti 없어");
continue;
}
System.out.println("=".repeat(40));
System.out.printf(" id / source / body \n");
for (int i = motivations.size() - 1; i >= 0; i--) {
Motivation motivation = motivations.get(i);
if (motivation.getSource().length() > 7) {
System.out.printf(" %d / %s / %s \n", motivation.getId(), motivation.getSource().substring(0, 5) + "...", motivation.getBody());
continue;
}
System.out.printf(" %d / %s / %s \n", motivation.getId(), motivation.getSource(), motivation.getBody());
}
System.out.println("=".repeat(40));
}
else {
System.out.println("사용할 수 없는 명령어야");
continue;
}
그래서 살짝 list 부분만 고쳐볼건데 음.. 일단 아무것도 등록이 안되어있을 경우가 있을거라고 생각해서 만약 motivation.szie==0일때 즉 아무것도 없을때 "등록된 moti가 없어" 라고 출력해줄거야.
이제 for문을 돌면서 목록들을 보여줄건데 그러면 motivation객체를 보여 주면 되겠지? 여기에 id, soirce, body값들이 들어있으니까 그러면 get함수를 사용해서 보여줄거야.
여기서 조심해야할게 2가지가 있는데 먼저 list에 있는 값들을 보여줄 때 번호가 내림차순이 아니라 오름차순이 되어야 사용자가 제일 최근에 추가된 값들부터 볼 수 있어. 그래서 i=motivation.size()-1 부터 시작하도록 설정했고 i는 --로 감소하도록 설정했어.
또 source가 너무 길면 보기가 좀 좋진 않으니까 source의 길이가 7 초과면 substring을 이용해 0부터5까지만 나오게 출력할거야. 이러면 사용자들이 가독성이 좀 좋아질거야.
이제 우리가 해야할게 접근제한자를 사용해서 다른클래스에서 함부러 사용 못하게 설정하도록 할거야,
class Motivation {
private int id;
private String body;
private String source;
public Motivation(int id, String body, String source) {
this.id = id;
this.body = body;
this.source = source;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
그러기 위해선 Motivation클래스에 있는 변수들을 private를 붙여서 다른 클래스에서 함부러 접근을 못하게 할거야.
대신 Getter랑 setter를 이용해서변수들을 호출하는 형식으로 바꿨어