
객체 배열은 객체를 저장하는 배열로, 배열의 자료형을 클래스명(사용자 정의 자료형)으로 지정하여 활용하는 것입니다. 객체 배열을 사용하면 같은 클래스의 여러 객체를 배열로 관리할 수 있어 코드의 가독성과 효율성을 높일 수 있습니다.
Academy arr[] = { new Academy(1, "컴퓨터학원"), new Academy(2, "수능학원") };
위 예시는 Academy 클래스 객체를 저장하는 배열을 선언한 것입니다. 배열에는 Academy 클래스의 두 객체가 저장되어 있습니다.
객체 배열을 활용한 실제 코드 예제를 통해 더 자세히 알아보겠습니다. 이번 예제는 학생 정보와 성적을 관리하는 프로그램입니다.
Run 클래스package solopractice.object.practice4; public class Run { public static void main(String[] args) { // SnackMenu 객체를 생성 후 menu() 실행 SnackMenu sm = new SnackMenu(); sm.menu(); } }
StudentMenu 클래스package test.t240711.object4; public class StudentMenu { private StudentController ssm = new StudentController(); public StudentMenu() { super(); System.out.println("==========학생 정보 출력=========="); Student[] stArr = ssm.printStudent(); for (int i = 0; i < stArr.length; i++) { String st = stArr[i].inform(); System.out.println(st); } System.out.println("==========학생 성적 출력=========="); double[] avgArr = ssm.avgScore(); System.out.println("학생 점수 합계 :" + (int)avgArr[0]); System.out.println("학생 점수 평균 :" + avgArr[1]); System.out.println("==========성적 결과 출력=========="); for (int i = 0; i < stArr.length; i++) { if (ssm.CUT_LINE > stArr[i].getScore()) { System.out.println(stArr[i].getName() + " 학생은 재시험 대상입니다."); } else { System.out.println(stArr[i].getName() + " 학생은 통과입니다."); } } } }
StudentController 클래스package test.t240711.object4; public class StudentController { private Student[] sArr = new Student[5]; public final int CUT_LINE = 60; // 5개의 객체배열을 샘플 데이터의 값으로 초기화 해주는 기본 생성자 public StudentController() { super(); sArr[0] = new Student("김길동", "자바", 100); sArr[1] = new Student("박길동", "디비", 50); sArr[2] = new Student("이길동", "화면", 85); sArr[3] = new Student("정길동", "서버", 60); sArr[4] = new Student("홍길동", "자바", 20); } // 객체 배열에 있는 데이터 반환 public Student[] printStudent() { return sArr; } // 객체 배열의 점수를 합한 값 리턴 public int sumScore() { int sum = 0; for (int i = 0; i < sArr.length; i++) { sum += sArr[i].getScore(); } return sum; } // double 배열을 만들어 sumScore의 리턴 값을 0번째 인덱스에 저장하고 // 합의 평균을 1번째 인덱스에 저장 후 배열 리턴 public double[] avgScore() { double[] avgArr = new double[2]; avgArr[0] = this.sumScore(); avgArr[1] = this.sumScore() / sArr.length; return avgArr; } }
Student 클래스package test.t240711.object4; public class Student { private String name; private String subject; private int score; // 기본 생성자 public Student() { super(); } // 3개의 초기값을 받는 생성자 public Student(String name, String subject, int score) { super(); this.name = name; this.subject = subject; this.score = score; } // Getter/Setter public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } // Student 클래스의 모든 필드 값들을 합쳐 반환 public String inform() { return "이름 : " + this.name + " / 과목 : " + this.subject + " / 점수 : " + this.score; } }
Run 클래스의 main 메서드를 실행하면 아래와 같은 결과가 출력됩니다.
==========학생 정보 출력========== 이름 : 김길동 / 과목 : 자바 / 점수 : 100 이름 : 박길동 / 과목 : 디비 / 점수 : 50 이름 : 이길동 / 과목 : 화면 / 점수 : 85 이름 : 정길동 / 과목 : 서버 / 점수 : 60 이름 : 홍길동 / 과목 : 자바 / 점수 : 20 ==========학생 성적 출력========== 학생 점수 합계 : 315 학생 점수 평균 : 63.0 ==========성적 결과 출력========== 김길동 학생은 통과입니다. 박길동 학생은 재시험 대상입니다. 이길동 학생은 통과입니다. 정길동 학생은 통과입니다. 홍길동 학생은 재시험 대상입니다.
객체 배열을 사용하면 같은 클래스를 기반으로 한 여러 객체를 효율적으로 관리할 수 있습니다. 위 예제에서는 학생 정보와 성적을 관리하기 위해 객체 배열을 사용하였고, 이를 통해 각 학생의 정보를 손쉽게 출력하고 성적을 계산할 수 있습니다. 객체 배열은 특히 많은 객체를 처리해야 하는 프로그램에서 매우 유용하게 사용됩니다.