본문 바로가기
IT개발/Tech Notes

객체지향 핵심 '관계(Relationships)' 완전 분석: 연관, 집합, 포함, 일반화 총정리

by 시간기억자 2025. 6. 5.
반응형

객체지향 패러다임에서 소프트웨어를 설계할 때, 다양한 객체(클래스)들이 서로 어떻게 상호작용하고 연결되는지 명확히 정의하는 것이 매우 중요합니다. 이때 사용되는 개념이 바로 **'관계(Relationships)'**입니다. 관계는 시스템의 구조와 동작을 이해하는 데 필수적인 요소이며, 정보처리기사 시험에도 빈번하게 출제됩니다.

이번 글에서는 객체지향에서 주로 다루는 네 가지 핵심 관계인 연관, 집합, 포함, 그리고 일반화에 대해 자세히 알아보겠습니다.


✅ 1. 연관 (Association)

  • 설명: 두 개 이상의 클래스(객체) 간의 일반적인 연결을 나타냅니다. 가장 느슨한 형태의 관계로, 한 클래스가 다른 클래스의 객체를 참조하거나 사용한다는 의미를 가집니다. 특정 조건이나 수명 주기에 종속되지 않는 단순한 상호작용을 표현할 때 사용됩니다.
  • 예시: '학생'이 '과목'을 '수강한다' (학생과 과목은 각각 독립적으로 존재할 수 있으며, 학생이 과목을 수강하는 행위로 연결됨). '고객'과 '주문' (고객이 주문을 생성).
  • UML 표기: 실선으로 연결하며, 필요에 따라 관계의 역할(role)이나 다중성(multiplicity)을 표기할 수 있습니다.

✅ 2. 집합 (Aggregation)

  • 설명: '전체(Whole)'와 '부분(Part)' 간의 관계를 나타내지만, 부분이 전체와 독립적으로 존재할 수 있는 관계입니다. 즉, 전체가 사라져도 부분은 여전히 그 존재 의미를 가질 수 있습니다. 'has-a' (무엇을 가지고 있다) 관계라고도 표현됩니다.
  • 예시: '팀'과 '팀원' (팀이 해체되어도 팀원은 여전히 독립적인 사람으로 존재할 수 있습니다). '도서관'과 '책' (도서관이 없어져도 책은 여전히 책으로서 존재합니다).
  • UML 표기: 전체를 나타내는 클래스 쪽에 속이 빈 마름모(◇)를 연결하고, 부분 클래스 쪽으로 실선을 긋습니다.

✅ 3. 포함 (Composition)

  • 설명: 집합 관계보다 더 강력한 '전체(Whole)'와 '부분(Part)' 간의 관계입니다. 부분이 전체에 종속적이며, 전체가 사라지면 부분도 함께 사라지는 생명 주기(lifecycle)의 일치를 가집니다. 'part-of' (무엇의 부분이다) 관계라고도 표현됩니다.
  • 예시: '자동차'와 '엔진' (자동차 없이 엔진만으로는 온전한 자동차가 될 수 없으며, 자동차가 폐차되면 엔진도 그 기능을 잃거나 분리됩니다). '건물'과 '방' (건물이 철거되면 방도 더 이상 존재하지 않습니다).
  • UML 표기: 전체를 나타내는 클래스 쪽에 속이 채워진 마름모(◆)를 연결하고, 부분 클래스 쪽으로 실선을 긋습니다.

✅ 4. 일반화 (Generalization)

  • 설명: '상속(Inheritance)' 관계를 의미합니다. 상위 개념(Superclass 또는 Parent Class)과 하위 개념(Subclass 또는 Child Class) 간의 관계로, 하위 클래스가 상위 클래스의 속성 및 연산(메소드)을 물려받고, 자신만의 고유한 특성을 추가하거나 재정의할 수 있습니다. 'is-a' (무엇이다) 관계라고도 표현됩니다.
  • 예시: '포유류'와 '사람'/'강아지' (사람과 강아지는 포유류의 한 종류입니다). '도형'과 '원'/'사각형' (원과 사각형은 도형의 한 종류입니다).
  • UML 표기: 하위 클래스에서 상위 클래스 방향으로 속이 빈 화살표(▲)를 연결합니다.

✅ 관계 이해의 중요성

객체지향 설계에서 이러한 관계들을 명확히 이해하고 적절히 사용하는 것은 다음과 같은 장점을 가집니다.

  • 시스템 구조의 명확성: 복잡한 시스템의 구성 요소를 이해하기 쉽게 만듭니다.
  • 재사용성 및 확장성: 관계를 통해 코드의 재사용성을 높이고, 시스템 확장 시 유연하게 대처할 수 있도록 돕습니다.
  • 유지보수 용이성: 시스템 변경 시 어떤 부분이 영향을 받는지 예측 가능하게 하여 유지보수를 용이하게 합니다.

📌 정보처리기사 시험 팁

  • 각 관계(연관, 집합, 포함, 일반화)의 개념과 특징을 정확히 구분하는 것이 핵심입니다.
  • 특히 집합과 포함 관계의 차이점 (부분의 독립성 유무, 생명 주기 일치 여부)을 예시와 함께 숙지하는 것이 중요합니다.
  • UML 다이어그램에서 각 관계가 어떻게 표기되는지도 함께 알아두세요.

📌 매일 간단히 IT 관련 개념을 익히고 싶다면 구독하세요!👇👇👇

http://www.youtube.com/@itbite_daily

 

오늘의 IT한입

👋 하루 한 입, 쉽게 배우는 IT & 개발 개념! 프로그래밍, 데이터베이스, 운영체제, 네트워크, 보안, 코딩테스트까지! 취업 준비부터 실무 감각까지 매일 짧고 강력하게 정리해드립니다. 📍 매일

www.youtube.com

 

반응형

댓글