해결된 질문
작성
·
239
답변 1
0
안녕하세요
우선 value object의 생명주기는 불변이니 한번에 생성하고, 삭제되는 성격을 가지고 있습니다.
네 그래서 구현한다면 다음과 같이 하면 됩니다.
public class Money {
public int value;
// Constructor to initialize the value
public Money(int value) {
this.value = value;
}
// Method to add the value of another Money object to the current object
public void add(Money money) {
this.value += money.value;
}
// Main method for testing
public static void main(String[] args) {
Money money1 = new Money(10);
Money money2 = new Money(20);
System.out.println("Before addition:");
System.out.println("Money 1 value: " + money1.value);
System.out.println("Money 2 value: " + money2.value);
// Add the value of money2 to money1
money1.add(money2);
System.out.println("\nAfter addition:");
System.out.println("Money 1 value: " + money1.value);
System.out.println("Money 2 value: " + money2.value);
}
}
아 죄송합니다. 제가 잘못된 예시를 드렸네요.
수정하신 코드가 맞습니다.
값 객체는 불변이므로 새로운 인스턴스를 반환해야 하는데 코드를 잘못 작성했네요.
public Money add(Money money) {
return new Money(this.value + money.value);
}
그리고 2번 질문은 아 제가 생명주기라는 용어를 잘못 사용해서 그런게 느끼신 것 같습니다. 생명주기가 있는 객체가 엔티티고 생명주기가 무의미한 성격을 vo로 모델링 하는 것이 맞습니다.
그리고 엔티티의 속성으로 vo가 정의되었다면 vo 객체를 생성해서 교체 할 수 있습니다.
답변 감사합니다.
몇 가지 더 궁금한게 있어서 질문드립니다!
1. 작성해주신 예시는 값을 변경하는데 괜찮은걸까요?? 불변 객체 처럼 취급 하라는 말이 아니였는지 예시에서 코드를 조금 수정했는데 이렇게 이해하면 잘못 이해한 부분인지 궁금합니다.
VO는 생성 삭제가 자유롭고 따로 생명주기가 없는줄 알았는데 생명주기가 불면 이라면 이미 만들어진 Entity에서 VO의 값을 변경해야 할 때 Entity가 다시 생성되어야 하는건가요? 아니면 그렇기에 VO의 값을 변경할 수 있는건가요?
2-1. https://www.inflearn.com/questions/1124319/vo%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%A7%88%EB%AC%B8%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 이전 질문에서 값의 수정이 필요하다면 VO 보단 Entity를 고려하라고 말씀해주셨는데 작성해주신 예시와 같이 값을 변경할 수 있다면 Entity를 고려해야 하는 이유도 궁금합니다.
2-2. Entity가 이미 생성이 되었는데 VO는 나중에 생성할 수 있나요?