[JAVA] UI코드 분리 - 국영수 성적 입출력 프로그램

2021. 11. 28. 22:31· 프로그래밍언어/JAVA
package oop.ex04.UI코드분리하기;

import java.util.Scanner;

public class ExamConsole {
	
	//Composition Has A 일체형
	private ExamList list;// = new ExamList();
	public ExamConsole() {
		list = new ExamList();
	}
	
	public void inputList() {
		Scanner scan = new Scanner(System.in);

		System.out.println("┌────────────────────────┐");
		System.out.println(" │         성적입력        │");
		System.out.println("└────────────────────────┘");
		System.out.println();

		int kor, eng, math;

		System.out.printf("%d번 학생\n", list.size() + 1);

		do {
			System.out.printf("국어 : ");
			kor = scan.nextInt();

			if (kor < 0 || 100 < kor)
				System.out.println("입력오류 : 성적유효범위에 맞게 입력하세요.");
		} while (kor < 0 || 100 < kor);
		do {
			System.out.printf("영어 : ");
			eng = scan.nextInt();

			if (eng < 0 || 100 < eng)
				System.out.println("입력오류 : 성적유효범위에 맞게 입력하세요.");
		} while (eng < 0 || 100 < eng);
		do {
			System.out.printf("수학 : ");
			math = scan.nextInt();

			if (math < 0 || 100 < math)
				System.out.println("입력오류 : 성적유효범위에 맞게 입력하세요.");
		} while (math < 0 || 100 < math);

		Exam exam = new Exam(kor, eng, math);

		/*---add() 입력받은 값을 추가------------------*/
		list.add(exam);
	}// inputList()
	
	public void printList() {
		this.printList(list.size()); 
	}//printList	

	public void printList(int count) {
		System.out.println("┌────────────────────────┐");
		System.out.println(" │        성적출력         │");
		System.out.println("└────────────────────────┘");
		System.out.println();
		

		
		for(int i=0; i<count; i++) {
			Exam exam =list.get(i); 
			int kor = exam.getKor();//exam.kor;
			int eng = exam.getEng();
			int math = exam.getMath();
			int total = exam.total();//kor + eng + math; exam에서 하는게 바람직
			float avg = exam.avg();//total/3.0f;
			
			System.out.printf("%d번 학생\n",i+1); 
			System.out.printf("\t국어 : %3d\n", kor);
			System.out.printf("\t영어 : %3d\n", eng);
			System.out.printf("\t수학 : %3d\n", math);
			System.out.println("-----------------------");	
			System.out.printf("\t총점 : %3d\n",total);
			System.out.printf("\t평균 : %6.2f\n",avg);
			System.out.println("────────────────────────");
		}
	}

}​
package oop.ex04.UI코드분리하기;

public class ExamList {
	private Exam[] exams;
	private int current;
	
	public Exam get(int i) {
		return this.exams[i];
	}
	
	

	public void add(Exam exam) {
		Exam[] exams = this.exams;
		int count = this.current;
	
		if (exams.length == current) {
			Exam[] temp = new Exam[exams.length + 5];
			for (int i = 0; i < count; i++)
				temp[i] = exams[i];
			exams = temp;
		}
	
		exams[current] = exam;
		current++;	
		System.out.println("────────────────────");
	}

	public ExamList() {
		//Aggregation Has A
		exams = new Exam[3]; 
		current =0;	
	}
		
	public int size() {
		return current;
	}	
}

ExamList 클래스에서 inputList(), printList()함수에서 입출력 기능이 아닌 부분을 따로 분리했다.

inputList()에는 사용자에게 입력을 받는 기능만 남기고 Exam리스트에 입력받은 값을 추가 해주는 기능을 add()로 분리하고, printList()에는 출력해주는 기능을 남기고, 입력받아서 추가해 놓았던 값들을 가져오는 기능을 get()로 분리했다.

UI부분은 따로 분리해서 만들어줘야 콘솔외에 입출력시에 변경해도 다른 코드에 오류가 가지 않는다.

 

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] GUI클라이언트 EXE(실행파일)로 만들기(JSMOOTH)  (0) 2022.04.21
[JAVA] class 재사용하기  (0) 2021.11.28
[JAVA] 캡슐화 - 국영수 성적 입출력 프로그램  (0) 2021.11.28
[JAVA] 함수 Overloading - 국영수 성적 입출력 프로그램  (0) 2021.11.25
[JAVA] 구조체 배열 가변 길이 추가 - 국영수 성적 입출력 프로그램  (0) 2021.11.24
'프로그래밍언어/JAVA' 카테고리의 다른 글
  • [JAVA] GUI클라이언트 EXE(실행파일)로 만들기(JSMOOTH)
  • [JAVA] class 재사용하기
  • [JAVA] 캡슐화 - 국영수 성적 입출력 프로그램
  • [JAVA] 함수 Overloading - 국영수 성적 입출력 프로그램
개발원슝이
개발원슝이
꾸준히 개발공부를 합니다.
개발원슝이
꾸준히 개발슝이
개발원슝이
전체
오늘
어제
  • ALL (242)
    • 프로젝트 (34)
      • clone coding (19)
      • mini project (5)
      • Team project(with KIC) (10)
    • 문제 (37)
      • 백준 (7)
      • 프로그래머스 (14)
      • 정보처리기사실기 (16)
    • 설치 (9)
    • 개발 기초 (13)
    • 프로그래밍언어 (124)
      • HTML (16)
      • CSS (17)
      • JavaScript (22)
      • JAVA (13)
      • JSP (10)
      • Python (22)
      • C언어 (24)
    • 프레임워크 (6)
      • Spring (3)
      • Django (3)
    • DB (2)
      • MySQL (2)
    • AWS (1)
    • 오류 (2)
    • 이것저것 (6)
    • 전공자 개발 (3)
    • 비전공자 개발 (5)

블로그 메뉴

  • 네이버블로그(강의노트)
  • GitHub
  • 태그
  • 방명록

공지사항

인기 글

태그

  • javascript
  • 코딩테스트
  • 백준
  • 파이썬공부
  • 생활코딩
  • 따배씨
  • 홍정모교수님
  • 인프런
  • 홍정모의 따라하며 배우는 C언어
  • 점프 투 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
개발원슝이
[JAVA] UI코드 분리 - 국영수 성적 입출력 프로그램
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.