반응형
객체는 크게 두 가지로 구성된다.
1. 필드변수
2. 메소드
필드변수는 Heap Memory에 저장되므로, 객체가 가비지 컬렉터에 의해 제거 될 때까지 살아있다. 고로, 항시적 데이터는 필드변수에 저장한다. 이전 포스팅에서 다룬 연관관계, 집합관계, 합성관계는 다른 객체의 주소를 필드변수에 저장하는 관계로 언제든 참조 가능한 관계이다.
반면, 메소드에서 생성된 변수는 Stack Memory에 저장되므로, 메소드 호출기간 동안만 살아있다. 메소드 같이, 특정 기능을 수행할 때만 필요한 객체는 임시로 메소드 내 변수에 저장하는데, 이를 의존관계라 부른다. 의존관계는 두 가지 유형이 있다.
1. 객체를 메소드 인수로 받는 경우
public class Car{
public void fillGas(GasPump p){
p.getGas(amount);
}
}
2. 메소드 내부 지역객체로 참조하는 경우
public class Computer{
public void print(){
Printer printer = new Printer();
printer.print();
}
}
1의 경우, 메소드 호출이 끝나도 GasPump 객체는 사라지지 않는다. 반면 2의 경우 메소드 호출이 끝나면 Printer 객체는 사라진다. 고로, 메소드와 의존관계 객체 사이의 결합도에 따라, 1) 과 2) 중에서 적절히 선택하여 구현해야 한다.
참고자료
반응형
'OOP > OOP Basic' 카테고리의 다른 글
[OOP] 일반화(추상화) (0) | 2022.10.17 |
---|---|
[OOP] 캡슐화 (0) | 2022.10.17 |
[OOP] 합성관계와 집합관계 (0) | 2022.10.12 |
[OOP] 연관관계(2) - Vector의 사용 (0) | 2022.01.30 |
[OOP] 연관관계 (1) (0) | 2022.01.29 |