Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- document database
- Redis
- NoSQL
- 다이나믹프로그래밍
- 분할정복
- spring security
- 실행 컨텍스트
- JPA
- 레디스
- 영속성 컨텍스트
- sqld
- 동적계획법
- 게시판
- VMware
- MongoDB
- 깃허브
- 정보처리기사
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- in-memory
- SQL
- 자바의 정석
- 정처기
- github
- 캐시
- Spring Boot
- 호이스팅
- 이벤트루프
- 스프링부트
- 스프링 부트
- 스프링 시큐리티
Archives
- Today
- Total
FreeHand
클래스 관계 본문
일반화 관계(상속 관계)
한 클래스가 다른 클래스를 포함하는 상위 개념일 때를 말한다.
자식 클래스는 부모 클래스의 속성과 연산(메서드)를 물려받을 수 있다.
public abstract class HomeAppliancies {
private int serialNo;
private String manufacturer;
private int year;
public abstract void turnOn();
public abstract void turnOff();
}
public class Washer extends HomeAppliancies {
@Override
public void turnOn() {
// ...
}
@Override
public void turnOff() {
// ...
}
}
public class Tv extends HomeAppliancies {...}
공통 속성과 메서드를 부모 클래스에 정의하여 상속한다. 이때 메서드는 세탁기, TV 등 제품에 따라 조금씩 다를 수 있으므로 추상 메서드로 정의하고 자식 클래스에서 구현하여 사용한다.
집합 관계
집약과 합성 두 종류의 집합 관계가 있다.
- 합성: 전체 객체가 없어지면 부분 객체도 없어진다. 부분 객체를 여러 전체 객체가 공유할 수 없다.
- 집약: 전체 객체가와 부분 객체의 생명 주기가 다르다. 부분 객체를 여러 전체 객체가 공유할 수 있다.
// 합성 집합 관계
public class Computer {
private CPU cpu;
private Memory memory;
private MainBoard mainboard;
public Computer() {
this.cpu = new CPU();
this.memory = new Memory();
this.mainboard = new MainBoard();
}
}
생성자에 의해 Computer 객체가 만들어지면서 부품 객체들도 같이 생성된다. 또한 Computer 객체가 사라지면 부품 객체도 같이 사라진다. 즉, Computer 객체(전체 객체)와 부품 객체(부분 객체)의 생명 주기가 같다.
// 집약 집합 관계
public class Computer {
private CPU cpu;
private Memory memory;
private MainBoard mainboard;
public Computer(CPU cpu, Memory memory, MainBoard mainboard) {
this.cpu = cpu;
this.memory = memory;
this.mainboard = mainboard;
}
}
외부에서 생성된 부품 객체를 참조하여 Computer 객체를 생성했다. 따라서 Computer 객체와 부품 객체의 생명 주기는 다르다.
실체화 관계
인터페이스와 구현 클래스의 관계를 말한다.
비행기와 새의 날 수 있다는 공통 능력을 인터페이스로 정의한다.
연관 관계
한 클래스가 다른 클래스를 사용하는 경우이다.
public class Person {
private Car owns;
public void setCar(Car car) {
this.owns = car;
}
public Car getCar() {
return owns;
}
}
public class Car {
// ...
}
Person 클래스가 Car 클래스를 사용하고있다. 연관 관계는 클래스의 속성에서 다른 클래스를 참조하는 경우이다.
의존 관계
연관 관계와 마찬가지로 한 클래스에서 다른 클래스를 사용한다.
차이점은 의존 관계는 메서드의 인자나 메서드 내부의 지역 객체로 참조하고, 연관 관계는 속성에서 참조한다.
public class Car {
//...
public void fillGas(GasPump gp) {
gp.getGas(amount);
//...
}
}
'Language > Java' 카테고리의 다른 글
내부 클래스 (0) | 2024.01.06 |
---|---|
SOLID (0) | 2023.11.22 |
Generics (0) | 2023.08.01 |
[기타] 문자열 붙이기(repeat) (0) | 2023.07.12 |
String 클래스 메서드 (0) | 2023.06.28 |