학습 목표
1. 연관관계(Association) 이란?
2. 의존관계(Dependency) 에 대해 알아 보자.
**연관관계(Association)**와 포함관계(Composition)는 객체지향 프로그래밍에서 객체 간의 관계를 나타내는 두 가지
다른 개념입니다. 그러나 이 둘은 완전히 독립적인 개념이 아니며, 포함관계는 연관관계의 특수한 형태로 볼 수 있습니다.
즉, 모든 포함관계는 연관관계입니다만, 모든 연관관계가 포함관계인 것은 아닙니다.
연관 관계(Association)는 일반적으로 한 클래스의 객체가 다른 클래스의 객체와 상호작용을 하지만, 둘 사이의 생명주기에 대한 의존성은 갖지 않는 경우를 의미합니다.
예를 들어, 한 은행(Bank)과 여러 고객(Customer) 사이의 관계가 연관 관계의 사례가 될 수 있습니다.
고객은 하나의 은행에 계좌를 가질 수 있고, 은행은 여러 고객을 가질 수 있지만, 고객의 생명주기는 은행에 의존하지 않습니다.
연관관계(Association) 이란?

package basic.ch19;
/*
* enum - 열거형
* : 데이터의 범주화를 만들고 싶다면 사용 한다.
* : domain --> 범주화
*/
public enum ServiceType {
// 범주화
ACOUNT_INFO,
DEPOSIT,
WITHDRAW
}
package basic.ch19;
public class Bank {
private String name;
public Bank(String name) {
this.name = name;
} // 생성자
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 대표적인 Bank 기능 , 상호작용 --> 연관관계를 구성하고 있는 상황
public void proviedService(ServiceType serviceType, Customer customer) {
switch (serviceType) {
case ACOUNT_INFO:
System.out.println(customer.getName() + "계좌 정보 조회를 합니다.");
break;
case DEPOSIT:
System.out.println(customer.getName() + "입금을 진행 합니다.");
break;
case WITHDRAW:
System.out.println(customer.getName() + "출금을 진행 합니다.");
default:
System.out.println("해당 서비스는 제공하지 않습니다.");
}
}
// 상호 작용
public void showAccountInfo(Customer customer) {
System.out.println("사용자 이름을 출력합니다.");
System.out.println("이름 : " + customer.getName());
customer.getName();
}
}
package basic.ch19;
public class Customer {
private String name;
public Customer(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 은행 서비스를 이용하는 메서드 - 연관관계
public void useBankService(Bank bank) {
bank.proviedService(ServiceType.DEPOSIT, this);
}
}
package basic.ch19;
public class BankTest {
public static void main(String[] args) {
Bank bank0 = new Bank("우리은행"); // 독립적인 생명주기를 가진다.
Bank bank = new Bank("그린은행"); // 독립적인 생명주기를 가진다.
Customer customer = new Customer("홍길동"); // 독립적인 생명주기를 가진다.
// 연관관계라고 한다.
customer.useBankService(bank);
System.out.println("------------------------");
// enum type 연습
bank.proviedService(ServiceType.ACOUNT_INFO, customer);
}
}
'Java' 카테고리의 다른 글
| 2024.04.24 다형성(Polymorphism) (0) | 2024.04.24 |
|---|---|
| 2024.04.24 의존관계 (0) | 2024.04.24 |
| 2024.04.23 Composition(포함관계) (2) (0) | 2024.04.23 |
| 2024.04.23 Composition(포함관계) (0) | 2024.04.23 |
| 2024.04.23 상속(Inheritance) (0) | 2024.04.23 |