의존관계(Dependency) 에 대해 알아 보자.
- 의존관계는 한 클래스가 다른 클래스를 사용하는 관계를 나타냅니다.즉, 어떤 클래스가 다른 클래스를 참조하는 것을 말합니다. 이는 한 클래스의 변경이 다른 클래스에 영향을 줄 수 있음을 의미합니다.
- 예를 들어, 자동차 클래스가 엔진 클래스에 의존할 때, 자동차 클래스는 엔진을 사용하고 있으며, 엔진 클래스의 변경이 자동차 클래스에 영향을 줄 수 있습니다.
도전 문제 - 학생과 학급은 어떤 관계로 바라볼 수 있을까?
Classroom 객체와 Student 객체는 연관 관계를 형성하고 있습니다. 단 Classroom 안에 Student[ ] 배열을 가지고 있지만 단순히 저장하는 용도 이며 Student 필드를 가지고 있지 않습니다. 이는 직접 적인 포홤 관계를 나타내지 않습니다.
package basic.ch19;
public class Classroom {
private String ClassName;
private Student[] students; // 멤버변수 에는 배열을 지정하지 않아도 된다.
private int studentCount;
private final int MAX_STUDENT = 30;
public Classroom(String className) {
this.ClassName = className;
students = new Student[MAX_STUDENT]; // student 객체 X, stduent 배열 O
this.studentCount= 0; // 0 으로 초기화
}// 생성자
// 학생을 추가하는 기능 만들기
public void addStudent(Student student) {
if(studentCount < MAX_STUDENT) {
students[0] = student;
studentCount++; // 후위 연산자
} else {
System.out.println("정원 초과");
}
} // end of addStudent()
// 학습에 속한 모든 학생 정보를 출력하는 기능을 만드시오.
public void showStudents() {
for(int i=0; i<students.length; i++) {
// 방어적 코드 작성
if(students[i] != null) { // students 배열 값에 null 값이 아니면 출력해라
// student[i] ---> [객체주소] ---> heap 영역 객체를 참조
System.out.println("name : " + students[i].getName()+ " , age : " + students[i].getAge());
}
}
} // end of showStudents()
} // end of class
package basic.ch19;
public class Student {
// 멤버 변수
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
} // 생성자
public String getName() {
return name;
} // getter
public int getAge() {
return age;
}// getter
public void setName(String name) {
this.name = name;
} // setter
public void setAge(int age) {
this.age = age;
} // setter
} // end of class
package basic.ch19;
public class ClassroomTest {
public static void main(String[] args) {
Classroom classroomA = new Classroom("C4"); // Classroom 인스턴스 생성
Student student1 = new Student("홍길동", 20); // Student 인스턴스 생성
Student student2 = new Student("이순신", 24); // Student 인스턴스 생성
classroomA.addStudent(student1); // Classroom의 addStudent(Student) 메서드 실행
classroomA.showStudents(); // 학습에 속한 모든 학생 정보를 출력
classroomA.addStudent(student2); // Classroom의 addStudent(Student) 메서드 실행
classroomA.showStudents(); // 학습에 속한 모든 학생 정보를 출력
} // end of main
} // end of class
'Java' 카테고리의 다른 글
| 2024.04.24 다형성(Polymorphism)의 활용 (0) | 2024.04.24 |
|---|---|
| 2024.04.24 다형성(Polymorphism) (0) | 2024.04.24 |
| 2024.04.23 연관, 의존 관계란? (0) | 2024.04.23 |
| 2024.04.23 Composition(포함관계) (2) (0) | 2024.04.23 |
| 2024.04.23 Composition(포함관계) (0) | 2024.04.23 |