OOP/OOP Basic
[OOP] 연관관계(2) - Vector의 사용
IT록흐
2022. 1. 30. 19:09
반응형
지난 포스팅에서
연관관계란 무엇인지 알아보았다.
이번 포스팅에서는
단방향 연관관계에 대해서 알아보겠다.
단방향 연관관계
객체는 다른 접근의 데이터(필드)나
기능(메소드)이 필요하여 접근한다.
객체A는 객체B의 주소를 알고
객체B는 객체A의 주소를 모르는 관계,
이를 '단방향 연관관계'라 부른다.
위 그림의 객체A와 객체B 처럼
서로 주소를 알고 있는 관계를
양방향 관계라 부른다.
두 객체가 서로 참조한다면
두 객체를 엮는
공통의 목적이 존재한다.
예를들어,
학생 객체와 교수 객체가 있다.
학생은 '강의'를 담당하는 교수에게 접근하고
교수는 '강의'를 수강하는 학생에게 접근한다.
학생 - 교수의 양방향 관계에서
강의 객체를 생성하여
새로운 관계를 형성하였다.
이처럼 양방향 관계는
'서로를 연관짓는 공통의 목적'이 존재하고
그 목적은 객체로 표현될 수 있다.
하나의 책임을 갖는 객체가 많아질수록
각 객체의 응집도는 올라간다.
강의 객체와 학생 객체도
공통의 목적으로 또 다른 관계를 만들 수 있다.
//학생클래스
public class Student{
private Vector<Transcript> transcripts; //Vector 객체
private String name;
}
// 성적 클래스
public class Transcript{
private Student student;
private Course course;
}
//강의 클래스
public class Course{
private Vector<Transcript> transcipts; //Vector 객체
private Professor professor;
private String name;
}
//교수 클래스
public class Professor{
private Vector<Course> course;
private String name;
}
Student 객체는 여러 개의 Transcript 객체와 연관관계이다. Transcript 객체들도 Student 객체에 접근 가능한 양방향 연관관계이다.
Vector를 사용하는 이유
이렇게 다중성이 있는 양방향관계인 경우, 배열을 만들 때, Vector을 이용한다.
Vector는 내부구조는 ArrayList와 동일하지만 메소드가 synchronized로 동기화되어 있어서 여러 객체가 접근해도 데이터를 일관성 있게 유지할 수 있다.
반응형