새소식

CS

is-a 관계와 has-a 관계

  • -

is-a 관계와 has-a 관계는 클래스들의 관계를 표현할 때 사용된다.

is-a

is-a 관계는 말그대로 A는 B이다(A is B) 관계를 나타낸다.

예를 들어보자. "사과는 과일이다" 라는 문장은 맞는 말이다. 그렇다면 "과일은 사과이다" 라는 문장은 맞는 말일까? 물론 아니다. 과일에는 사과 외에 다른 과일들도 들어갈 수 있기 때문이다.

이러한 관계는 클래스들 사이에서 상속 관계로 나타낼 수 있다. "사과는 과일이다" 라는 문장에서 과일은 사과의 부모 클래스가 되고 다음과 같이 나타낼 수 있다.

public class Fruit {
    int price;
    String color;
}

public class Apple extends Fruit {
    int sweetness_level;
}

has-a

has-a 관계는 A는 B 속성을 가지고 있다(A has B) 관계를 나타낸다.

예를 들어 사과는 아삭한 정도(crispiness)를 나타내는 속성을 가질 수 있고 다음과 같이 나타낼 수 있다.

public enum Crispiness {
    HIGH,LOW
}

public class Apple {
    Crispiness crispiness;
}

속성값 외에도 기능을 포함할 수 있다. 예를 들어, 자동차에 엔진 컴포넌트를 추가하는 방식처럼, has-a 관계는 특정 기능을 포함하기 위한 관계를 나타낸다고 볼 수 있다.

'CS' 카테고리의 다른 글

SOLID  (1) 2024.10.27
절차적 프로그래밍 vs 객체지향 프로그래밍  (1) 2024.10.27
DB의 특징  (0) 2024.10.27
DB를 사용하는 이유는?  (0) 2024.10.27
Data Models, Schemas, Instances  (0) 2024.10.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.