[27] 연관 관계에 대한 문제
1. 수강 신청과 수강 취소를 하는 프로그램을 만들자.
: 학생이 과목명을 찾아서, 수강신청을 한다.
: 학생과 과목명은 연관 관계에 있다.
: 학생이 수강한 과목명들은 수강과목으로 만들어야한다.
- public class Course 클래스
package kosta.relation1;
public class Course {
// 하나의 과목명을 표현하는 클래스이다.
// ex) 전산학개론
private String name; // 과목명
public Course() {}
public Course(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- public class Student 클래스
package kosta.relation1;
import java.util.ArrayList;
import java.util.List;
public class Student {
// 수강신청, 수강취소 구현.
// 연관 관계 - Student 객체가 Course 객체를 가지게 된다.
// 그러므로 Course 클래스를 먼저 만들어야 한다.
// 필드
private String name; // 사람이름
// 어레이 리스트는 신축성 있는 배열이다!!!
// private List <Course> courses 여러 과목 정의 가능 < 어레이 리스트 >
// private Course courses 한 과목만 정의 가능
private List <Course> courses; // 수강과목.
// 생성자
public Student() {}
// 수강신청을 학생만 생성할 수 있게 만든다. (학생만 할 수 있게 한다.)
public Student(String name) {
super();
this.name = name;
courses = new ArrayList<Course>(); // ArrayList 선언하는 방법 < 객체를 생성한게 아니다.>
}
// 수강신청하는 메서드
// add 연산자를 사용하면, course에 과목명을 신청할 때마다 하나씩 들어간다.
// Course 클래스에 있는 수강과목 하나의 name을 Student 클래스에 있는 courses의 어레이 리스트에 차근차근 넣는다.
public void register(Course course) { // 수강신청할 때마다 register() 메서드를 사용하면 된다.
courses.add(course); // 과목명을 하나씩 넣어서, 수강과목이라는 하나의 배열을 만드는 코드이다.
}
// 수강취소하는 메서드
// courses에서 contains 자바 API를 사용하여 course에 문자열이 있는지 확인한다.
// remove는 해당 문자열이 있으면 삭제하는 자바 API이다.
public void dropCourse(Course course) {
if (courses.contains(course)) {
courses.remove(course);
}
}
public void printMember() {
System.out.println("학생이름 : " + name);
for (Course course : courses) { // 향상된 for문으로 입력된 데이터를 모두 출력한다.
System.out.println("수강과목 : " + course.getName());
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
}
- public class Main 메인
package kosta.relation1;
public class Main {
public static void main(String[] args) {
// 수강 신청과 수강 취소를 하는 프로그램을 만들자.
// 수강 신청을 할 수 있는 과목
// Course 클래스에서 3과목을 객체로 만들었다.
Course c1 = new Course("전산학개론");
Course c2 = new Course("기초통계학");
Course c3 = new Course("빅데이터개론");
// 수강 신청을 하는 사람
// Student 클래스에서 1명의 사람을 객체로 만들었다.
Student s1 = new Student("홍길동");
// 수강 신청
s1.register(c1);
s1.register(c2);
s1.register(c3);
// 수강 취소
s1.dropCourse(c1);
// 출력
s1.printMember();
}
}
- 결과값
학생이름 : 홍길동
수강과목 : 기초통계학
수강과목 : 빅데이터개론
Author And Source
이 문제에 관하여([27] 연관 관계에 대한 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sanggeun/26-연관-관계에-대한-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)