객체 배열

제민·2024년 7월 13일

Java 개념 공부

목록 보기
13/21
post-thumbnail

객체배열이란?

객체 배열은 객체를 저장하는 배열로, 배열의 자료형을 클래스명(사용자 정의 자료형)으로 지정하여 활용하는 것입니다. 객체 배열을 사용하면 같은 클래스의 여러 객체를 배열로 관리할 수 있어 코드의 가독성과 효율성을 높일 수 있습니다.

객체 배열 선언 예시

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
==========성적 결과 출력==========
김길동 학생은 통과입니다.
박길동 학생은 재시험 대상입니다.
이길동 학생은 통과입니다.
정길동 학생은 통과입니다.
홍길동 학생은 재시험 대상입니다.

객체 배열을 사용하면 같은 클래스를 기반으로 한 여러 객체를 효율적으로 관리할 수 있습니다. 위 예제에서는 학생 정보와 성적을 관리하기 위해 객체 배열을 사용하였고, 이를 통해 각 학생의 정보를 손쉽게 출력하고 성적을 계산할 수 있습니다. 객체 배열은 특히 많은 객체를 처리해야 하는 프로그램에서 매우 유용하게 사용됩니다.

profile
초보부터 시작하는 개발자 생활

0개의 댓글