Java에서 컴포지션이란 무엇입니까? 예를 들어

게시 됨: 2023-01-27

목차

Java에서 연결의 기초:

연관성은 별개의 개체를 사용하는 두 개의 개별 클래스 간의 상호 연결로 Java에서 정의할 수 있습니다. Java 연관에서 관리하는 관계 유형은 다음과 같습니다.

  • 일대일: 각 부모 클래스에 대해 하나의 파생 클래스만 존재합니다.
  • 일대다: 단일 상위 클래스는 둘 이상의 하위 클래스를 가질 수 있습니다.
  • 다대일: 단일 자식 클래스는 둘 이상의 슈퍼클래스와 연결될 수 있습니다.
  • 다대다: 다수의 상위 클래스가 단일 하위 클래스와 연관될 수 있으며 더 많은 수의 하위 클래스가 단일 상위 클래스와 연관될 수 있습니다.

관계가 설정되면 파생 클래스는 해당 기본 클래스와 통신하여 특성과 속성을 재사용합니다. Java에는 두 가지 유형의 연결이 있습니다. 그것들은 집계와 구성입니다.

Java의 집계는 컴포지션에 비해 더 일반화된 프로세스입니다. 이러한 형식은 클래스 간에 지원되는 관계 유형을 기반으로 합니다.

자바 컴포지션 소개:

Has-A 관계를 구현하는 Java의 설계 기술을 구성이라고 합니다. 상속 프로세스는 코드를 재사용하는 데 사용됩니다. Java의 구성은 다른 개체를 참조하는 인스턴스 변수를 사용하여 수행할 수 있습니다. 하나의 객체가 주체의 생존 없이 구성 객체가 존재할 수 없는 방식으로 다른 객체를 구성하는 경우, 그러한 관계를 구성이라고 합니다. 구체적으로 구성은 인스턴스 변수의 도움으로 둘 이상의 클래스 간의 참조를 설명하는 측면입니다. 여기서 인스턴트 변수를 사용하기 전에 인스턴스를 생성해야 합니다. '컴포지션' 개념을 명확하게 이해하기 위해 라이브러리의 예를 들어 보겠습니다.

도서관에는 수많은 책이 있습니다. 각 책에는 별도의 저자와 제목이 있습니다. 도서관에는 또한 책의 참조 목록이 있어야 합니다. 도서관에는 동일한 주제 또는 다양한 주제와 관련된 여러 권의 책도 있습니다. 여기서 라이브러리는 메인 클래스에 해당하고 책은 파생 클래스와 관련될 수 있습니다. 책과 도서관의 연관성이나 관계는 구성으로 볼 수 있습니다. 이는 "Books" 클래스가 클래스 라이브러리에 완전히 종속되기 때문입니다. 예를 들어, 도서관이 파괴되면 그 안에 있는 모든 책도 파괴됩니다.

무료 기술 과정을 확인하여 경쟁에서 우위를 점하십시오.

인기 있는 소프트웨어 엔지니어링 과정 살펴보기

LJMU 및 IIITB의 컴퓨터 과학 석사 Caltech CTME 사이버 보안 인증 프로그램
풀스택 개발 부트캠프 블록체인의 PG 프로그램
풀 스택 개발의 임원 PG 프로그램
아래에서 모든 코스 보기
소프트웨어 엔지니어링 과정

Java의 컴포지션에 대한 자세한 설명:

컴포지션은 Java 연관 형식입니다. 두 개의 통신 클래스는 강력하게 연결되어 있으며 파생 클래스는 부모 클래스에 완전히 종속됩니다. 이 경우 파생 클래스의 독립적인 존재는 불가능합니다. 예를 들어 자동차가 없는 엔진은 독립적으로 존재할 수 없습니다. 이 연결 유형은 집계에 비해 매우 제한적입니다. 컴포지션은 디자인 기술이며 Java 기능과 혼동해서는 안 됩니다.

컴포지션은 다른 개체를 구성 요소로 포함하는 개체를 모델링하는 데 사용할 수 있습니다. 이러한 객체 사이에는 has-a 관계가 존재합니다. 이 연결 유형에서 한 개체는 다른 개체를 포함합니다. 따라서 구성 객체는 생존을 위해 주 객체에 완전히 의존합니다. 따라서 포함하는 개체가 망가지면 구성 개체도 영향을 받습니다. 따라서 구성 관계는 전체 없는 부분의 존재가 불가능한 전체 관계의 일부로 볼 수 있다. 즉, 전체 삭제 시 해당 부분도 자동으로 삭제됩니다. 이것은 전체가 부분과 확고한 관계를 맺고 있음을 의미합니다.

세계 최고의 대학에서 소프트웨어 개발 과정을 온라인으로 배우십시오. PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 취득하여 경력을 빠르게 쌓으십시오.

주문형 소프트웨어 개발 기술

자바스크립트 강좌 핵심 Java 과정 데이터 구조 과정
Node.js 과정 SQL 과정 전체 스택 개발 과정
NFT 과정 DevOps 과정 빅데이터 강좌
React.js 강좌 사이버 보안 과정 클라우드 컴퓨팅 과정
데이터베이스 디자인 강좌 파이썬 과정 암호화폐 과정

Java의 구성과 상속은 어떻게 다른가요?

상속 기능은 Java에서도 구성을 사용하여 수행할 수 있다는 점에 유의해야 합니다. 상속과 구성 모두 관련 클래스에서 코드의 재사용성을 제공하는 데 사용되지만 이 둘 사이에는 미묘한 차이가 있습니다. 두 프로세스의 주요 차이점은 구성이 Java 기능인 상속과 달리 설계 기술이라는 점입니다. 둘 사이의 다른 주요 차이점은 아래 표에 나열되어 있습니다.

모수

구성

계승

기초적인 HAS-A 관계를 통합합니다. IS-A 관계를 통합합니다.
코드 재사용 코드는 여러 클래스에서 재사용할 수 있습니다. 하나의 클래스는 하나의 인터페이스만 확장할 수 있기 때문에 하나의 클래스에서만 코드 재사용이 가능합니다.
범위 런타임에 쉽게 수행할 수 있습니다. 기능은 컴파일 타임에 더 잘 수행됩니다.
결정적인 최종 클래스에서도 코드를 쉽게 재사용할 수 있습니다. 최종 클래스의 코드는 상속의 경우 재사용할 수 없습니다.
행동 양식 메서드는 노출되지 않습니다. 공용 인터페이스는 상호 작용에 사용됩니다. 상속은 기본 클래스의 보호 및 공용 메서드를 모두 노출합니다.

집계와 구성의 차이점:

집합

구성

약한 Java 연관 유형입니다. 집계와 비교할 때 더 강력한 연관 유형입니다.
파생 클래스는 기본 클래스와 독립적입니다. 따라서 파생 클래스는 기본 클래스가 소멸되더라도 계속 존재할 수 있습니다. 파생 클래스는 기본 클래스에 완전히 종속됩니다. 따라서 슈퍼클래스가 소멸되면 서브클래스는 존재할 수 없다.
하위 클래스에는 자체 수명이 있습니다. 자식 클래스의 수명은 부모 클래스에 따라 다릅니다.
부모 클래스는 이러한 연결 유형에서 자식 클래스를 사용합니다. 따라서 파생 클래스는 기본 클래스가 소유하지 않습니다. 이 연관 유형에서 상위 클래스는 하위 클래스를 소유합니다. 따라서 부모 클래스는 자식 클래스의 소유자입니다.
HAS-A 관계를 구성합니다. 파생 클래스에는 기본 클래스가 있습니다. 관계의 일부를 구성합니다. 파생 클래스는 기본 클래스의 일부입니다.
최종 키워드는 집계를 나타내는 데 사용되지 않습니다. 최종 키워드는 구성을 나타내는 데 사용할 수 있습니다.
예: 차에 운전자가 있습니다. 예: 엔진은 자동차의 일부입니다.

소프트웨어 개발과 관련된 인기 기사 읽기

Java에서 데이터 추상화를 구현하는 방법은 무엇입니까? Java의 내부 클래스는 무엇입니까? Java 식별자: 정의, 구문 및 예
예제를 통해 OOPS의 캡슐화 이해하기 C의 명령줄 인수 설명 2022년 클라우드 컴퓨팅의 10대 기능 및 특성
Java의 다형성: 개념, 유형, 특성 및 예 Java의 패키지 및 사용 방법? 초보자를 위한 Git 자습서: 처음부터 Git 배우기

Java에서 컴포지션을 사용할 때의 이점:

  • 구성은 Java 코드의 재사용을 용이하게 합니다.
  • 다중 상속은 Java에서 지원되지 않지만 이 설계 기술로 격차를 메울 수 있습니다.
  • 구성을 사용하면 더 나은 방식으로 클래스의 능력을 테스트할 수 있습니다.
  • 컴포지션을 사용하면 코드가 더 유연해집니다. 구성된 클래스 구현은 향상된 버전으로 대체될 수 있습니다.
  • 컴포지션 관계를 사용하여 프로그램 동작의 동적 변경을 위해 런타임 시 객체 멤버를 변경할 수 있습니다.

Java 구성의 제한 사항:

Java에서 컴포지션을 사용하면 몇 가지 단점이 있습니다. 객체 구성의 가장 큰 단점은 사용자가 소스 코드를 숙고하는 것만으로는 구현된 시스템의 동작을 이해하기 어렵다는 것입니다. 개체 구성을 사용하는 시스템은 본질적으로 매우 동적입니다. 따라서 개체 구성을 사용하는 시스템의 기능을 이해하려면 소스 코드를 더 깊이 분석하고 코드를 실행하여 소스 코드의 개별 개체 간의 기능과 협력을 확인해야 합니다.

Java, 풀스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 소프트웨어 개발 총괄 PG 프로그램 – 작업 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육을 제공하는 풀스택 개발 전문화를 확인하십시오. , 9개 이상의 프로젝트 및 과제, IIIT-B 동문 상태, 실용적인 실습 캡스톤 프로젝트 및 최고 기업과의 취업 지원.

이 기사를 공유하고 싶습니까?

미래의 경력을 준비하십시오

지금 소프트웨어 엔지니어링 석사 지원