Java

연관, 의존 관계란?

H_u 2024. 4. 23. 16:23
728x90
반응형
SMALL

💡 학습 목표

  1. 연관관계(Association) 이란?
  2. 의존관계(Dependency) 에 대해 알아 보자.

 

연관관계(Association)포함관계(Composition)는 객체지향 프로그래밍에서 객체 간의 관계를 나타내는 두 가지 다른 개념입니다.

그러나 이 둘은 완전히 독립적인 개념이 아니며, 포함관계는 연관관계의 특수한 형태로 볼 수 있습니다.

즉, 모든 포함관계는 연관관계입니다만, 모든 연관관계가 포함관계인 것은 아닙니다.

연관 관계(Association)는 일반적으로 한 클래스의 객체가 다른 클래스의 객체와 상호작용을 하지만, 둘 사이의 생명주기에 대한 의존성은 갖지 않는 경우를 의미합니다.

예를 들어, 한 은행(Bank)과 여러 고객(Customer) 사이의 관계가 연관 관계의 사례가 될 수 있습니다.

고객은 하나의 은행에 계좌를 가질 수 있고, 은행은 여러 고객을 가질 수 있지만, 고객의 생명주기는 은행에 의존하지 않습니다.

 

1. 연관관계(Association) 이란?

 

package basic.ch19;

 

public class Bank {

 

private String name;

 

public Bank(String name) {

this.name = name;

}

 

// getter

public String getName() {

return name;

}

 

// 대표적인 Bank 기능 , 상호작용 --> 연관관계

public void provideService(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());

}

 

 

 

}

package basic.ch19;

 

public class Customer {

 

private String name;

 

public Customer(String name) {

this.name = name;

}

 

public String getName() {

return name;

}

 

// 은행 서비스를 이용하는 메서드 - 연관관계

public void useBankService(Bank bank) {

bank.provideService(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.provideService(ServiceType.ACOUNT_INFO, customer);

 

}

 

}

728x90
반응형
SMALL

'Java' 카테고리의 다른 글

다형성(Polymorphism)의 활용  (0) 2024.04.24
다형성(Polymorphism)  (0) 2024.04.24
Composition(포함관계)  (0) 2024.04.23
상속(Inheritance)  (1) 2024.04.23
메서드 오버로딩  (0) 2024.04.23