java ArrayList 활용, 객체 협력이 어떻게 이뤄지는지 '학생성적 산출 프로그램' 으로 확인.
행위를 정리하면
Student : 성적 입력, 성적정보 출력
성적 입력
- addSubject(name, score)
성적정보 출력
- showStudentInfo()
Subject : 행위(메서드)가 없다. 그냥 그자체로 Student가 사용할 배열객체.-> Student가 ArrayList에 담을 것임.
Student
package SocreProgram;
import java.util.ArrayList;
public class Student {
private int studentId;
private String studentName;
ArrayList<Subject> subjectList;
public Student(int studentId, String studentName) {
this.studentId = studentId;
this.studentName = studentName;
subjectList = new ArrayList<>();
}
// 성적 입력
public void addSubject(String name, int score) {
Subject subject = new Subject();
subject.setName(name);
subject.setScorePoint(score);
subjectList.add(subject);
}
// 자신의 성적정보 출력
public void showStudentInfo()
{
int total = 0;
for(Subject s : subjectList){
total += s.getScorePoint();
System.out.println("학생 " + studentName + "의 " + s.getName() + " 과목 성적은 " +
s.getScorePoint() + "입니다.");
}
System.out.println("학생 " + studentName + "의 총점은 " + total + " 입니다.");
}
}
Subject
package SocreProgram;
public class Subject {
private String name;
private int scorePoint;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScorePoint() {
return scorePoint;
}
public void setScorePoint(int scorePoint) {
this.scorePoint = scorePoint;
}
}
main
package SocreProgram;
public class ScoreProgrameTest {
public static void main(String[] args) {
Student studentLee = new Student(1001, "Lee");
studentLee.addSubject("국어", 100);
studentLee.addSubject("수학", 35);
studentLee.addSubject("영어", 75);
Student studentDo = new Student(1002, "Do");
studentDo.addSubject("국어", 34);
studentDo.addSubject("수학", 78);
studentLee.showStudentInfo();
System.out.println("============================");
studentDo.showStudentInfo();
}
}
결과
학생 Lee의 국어 과목 성적은 100입니다.
학생 Lee의 수학 과목 성적은 35입니다.
학생 Lee의 영어 과목 성적은 75입니다.
학생 Lee의 총점은 210 입니다.
============================
학생 Do의 국어 과목 성적은 34입니다.
학생 Do의 수학 과목 성적은 78입니다.
학생 Do의 총점은 112 입니다.