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