JAVA
연관 관계(association)
jiyoon12
2025. 4. 25. 00:09
- 두 클래스가 독립적으로 존재하며 필요에 따라 서로 참조하거나 협력하는 관계이다.
- 두 객체의 생명주기는 서로에게 종속되지 않습니다.
- 포함관계는 연관관계의 일부이다.
package com.association;
public class Course {
private String name;
public Course(String name){
this.name = name;
}
//getter 메서드 만들기 private 이기 때문에
public String getName(){
return name;
}
public void display(){
System.out.println(" 강의 : " + name);
}
}
package com.association;
public class Student {
private String name;
private Course course; // 연관 관계
public Student(String name) {
this.name = name;
course = null; // 초기에는 수강을 하지 않음!
}
// 수강을 듣다. (과목에 개한 정보는 course 에 있다)
public void enroll(Course course){
this.course = course;
System.out.println(name + " 이(가) " + course.getName() + "강의를 수강합니다.");
}
// 도전과제
// 수강 종료 기능을 만들어 보시오.
public void end(){
if(course == null){
System.out.println("이미 수강중인 상태가 아닙니다.");
}else{
System.out.println(course.getName() + "을 수강 취소합니다.");
this.course = null;
}
// this.course = null;
// System.out.println("수강 취소 완료");
}
// 학생의 현재 수강중인 상태를 보여주는 기능
public void showCourse(){
if(this.course != null){
System.out.println(name + " 이(가) " + this.course.getName() + "를(을) 수강하고 있는 중");
}else {
System.out.println("수강중인 강의가 없습니다.");
}
}
}
- 테스트
package com.association;
public class MainTest1 {
public static void main(String[] args) {
Course java = new Course("자바");
Course db = new Course("데이터베이스");
Student student = new Student("홍길동");
student.enroll(java);
student.showCourse();
} //end of main
} // end of class