private static void printList(ExamList list) {
printList(list, list.current);
//오버로드 된 printList(ExamList list, int count)를 사용해서 코드를 집중화했다.
}//printList
private static void printList(ExamList list, int count) {
System.out.println("┌────────────────────────┐");
System.out.println(" │ 성적출력 │");
System.out.println("└────────────────────────┘");
System.out.println();
//int count = list.current;
Exam[] exams = list.exams;
for(int i=0; i<count; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
int total = kor + eng + math;
float 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("────────────────────────");
}
}//오버로드해서 count(매개변수)를 받는만큼만 출려하는 printList
/*인자가 없는쪽이 할 수 없는 일을 다 할 수 있다.*/
오버로딩이란 서로 다른 여러개의 비슷한 기능을 가진 메서드가 존재하는 경우 메서드명을 하나로 통합해서, 매개변수의 갯수와 자료형을 가지고 서로 다른 메서드처럼 사용 할 수 있도록 만들어주는 기법이다. 즉 동일한 기능을 수행하는 메서드를 추가로 작성한다는 뜻이다.
printList(ExamList list)를 오버로드해서 똑같은 기능을 구현하고 차가로 출력하는 갯수를 정해주는기능을 추가한 함수인 private static void printList(ExamList list, int count)를 만들었다.
인자가 없는쪽이 할 수 없는 일을 추가로 오버로드해서 만든 함수는 다 할 수 있다. 그 때 굳이 똑같은 기능을 하는 코드를 여러번 구현 할 필요는 없다. 여러번 구현 하면 수정시 전부 고쳐줘야 하는 번거로움 등 단점이 있기 때문에 코드 집중화를 통해서 같은 기능의 코드는 한번만 구현했다. 그럼 함수를 사용 할 때 출력갯수를 정해주고 싶으면 밑에 함수를 일반적인 기능만 사용하고 싶으면 원래 함수를 사용하면 된다.
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] UI코드 분리 - 국영수 성적 입출력 프로그램 (0) | 2021.11.28 |
---|---|
[JAVA] 캡슐화 - 국영수 성적 입출력 프로그램 (0) | 2021.11.28 |
[JAVA] 구조체 배열 가변 길이 추가 - 국영수 성적 입출력 프로그램 (0) | 2021.11.24 |
[JAVA] 구조적인 프로그래밍 (0) | 2021.11.24 |
[JAVA] 자바의 입출력 (0) | 2021.11.21 |