예제가 포함된 Java의 구성이란 무엇입니까?

게시 됨: 2021-04-09

Java는 두 클래스 간의 관계를 구축하여 객체 지향 프로그래밍 및 코드 재사용성을 지원하는 다재다능한 언어입니다. 코드를 재사용하고 한 클래스에서 다른 클래스로 중복성을 줄이는 데 사용되는 Java에는 두 가지 유형의 관계 또는 연관이 있습니다.

이러한 관계는 IS-A(상속) 및 HAS-A(연결)입니다. IS-A 클래스 사이에는 긴밀한 결합이 있지만 HAS-A 클래스는 느슨하게 결합되어 프로그래머에게 더 좋습니다.

HAS-A 관계는 Java 의 집계 및 구성이라는 두 가지 유형으로 나뉩니다 . 이 기사는 합성OOP 개념기반으로 합니다 . 우리는 컴포지션이 코딩되는 방식과 구현 시 얻을 수 있는 이점에 대한 많은 실제 사례를 보게 될 것입니다.

목차

Java의 연관 또는 관계에 대한 간략한 설명

객체 지향 프로그래밍에서 객체는 서로 관련되어 있으며 이들 간의 공통 기능을 사용합니다. 여기 에서 Java 프로그램 의 상속, 연관, 집계 및 구성에 대한 주제가 나옵니다.

Java의 상속(IS-A) 및 연관(HAS-A)

1. 상속(IS-A)

IS-A 관계는 한 개체가 다른 개체의 유형임을 나타냅니다. '확장' 및 '구현' 키워드를 사용하여 구현됩니다.

예: HP IS-A 노트북

2. 협회(HAS-A)

HAS-A 관계는 클래스가 다른 클래스와 관계가 있음을 나타냅니다. 예를 들어 클래스 A는 클래스 B의 참조를 보유하고 클래스 B의 모든 속성에 액세스할 수 있습니다.

예: 인체 HAS-A Heart

원천

원천

3. 집계 대 구성

Has-A 관계 또는 Association은 집계와 구성으로 나눌 수 있습니다. 집계 컨테이너 클래스와 참조 클래스는 독립적으로 존재할 수 있습니다. 컨테이너 클래스가 파괴되면 컴포지션 참조 클래스가 존재할 수 없습니다.

집계 및 구성을 이해하기 위해 예를 들어 보겠습니다. 자동차에는 엔진, 바퀴, 음악 플레이어 등과 같은 부품이 있습니다. 자동차는 엔진과 바퀴 없이는 작동할 수 없지만 음악 플레이어 없이는 작동할 수 있습니다. 여기서 엔진과 자동차는 구성 관계가 있고 자동차와 음악 플레이어는 집계 관계가 있습니다. Aggregation의 경우 객체는 주 객체의 일부가 아니어도 존재할 수 있습니다.

원천

자바의 구성

Java에서 서로 연결된 두 개체 간의 구성 은 클래스 와 다른 클래스 간에 강력한 관계가 있을 때 존재합니다 . 다른 클래스는 소유자 또는 상위 클래스 없이 존재할 수 없습니다. 예를 들어, '인간' 클래스는 심장 과 폐 의 구성입니다 . 인간의 대상이 죽으면 그 어떤 부분도 존재하지 않습니다.

컴포지션은 제한된 형태의 집계입니다. 컴포지션에서 한 클래스는 다른 클래스를 포함하고 이에 종속되어 다른 클래스 없이는 기능적으로 존재할 수 없습니다.

자바에서 컴포지션 구현

엔진과 자동차의 관계는 아래와 같이 자바 클래스를 이용하여 구현한다. Java에서는 'final' 키워드 를 사용하여 구성을 나타냅니다. 이는 'Owner' 개체가 부품 개체를 사용할 수 있고 'final' 로 만들어 작동할 것으로 기대하기 때문 입니다.

공개 클래스 자동차 {

개인 최종 엔진 엔진;

일반 승용차 (){

엔진 = 새로운 엔진();

}

}

클래스 엔진 {

개인 문자열 유형;

}

상속과 구성을 모두 나타내는 또 다른 예를 들어 보겠습니다.

원천

이 프로그램에서 Honda 클래스는 Car이며 클래스 Car에서 확장됩니다. 자동차 엔진 Object는 Honda 클래스에 사용됩니다.

클래스 CarEngine {

공개 무효 StartEngine(){

System.out.println(" 자동차 엔진이 시동 되었습니다.");

}

공개 무효 stopEngine(){

System.out.println(" 자동차 엔진이 멈췄 습니다.");

}

}

클래스 자동차 {

개인 문자열 색상;

개인 int maxi_Speed;

공개 무효 carDetails(){

System.out.println("자동차 색상 = "+color + "; 최대 속도 = " + maxi_Speed);

}

//자동차 색상 설정

공개 무효 setColour(문자열 색상) {

this.color = 색상;

}

//최대 자동차 속도 설정

공개 무효 setMaxiSpeed(int maxi_Speed) {

this.maxi_Speed ​​= maxi_Speed;

}

}

혼다 클래스 확장 자동차{

공개 무효 HondaStart(){

CarEngine Honda_Engine = new CarEngine(); //구성

Honda_Engine.startEngine();

}

}

공개 클래스 메인 {

공개 정적 무효 메인(문자열[] 인수) {

Honda HondaJazz = 새로운 Honda();

HondaJazz.setColor("검은색");

HondaJazz.setMaxSpeed(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

산출:

자동차 색상 = 검정; 최대 속도 = 160

자동차 엔진이 시동되었습니다.

출력은 구성을 사용하여 파생되며 Honda Jazz 자동차의 세부 정보를 보여줍니다.

연관의 UML 표시

Java 에서 클래스 A와 B 사이 의 연관, 집계 및 구성 관계는 UML 다이어그램에서 다음과 같이 표시됩니다.

협회: A—->B

구성: A—–<채워진>B

집계: A—–<>B

세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 학위취득하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

Java에서 구성의 이점

Java에서 컴포지션 디자인 기술을 사용하면 다음과 같은 이점이 있습니다.

  1. "클래스 상속보다 객체 구성을 선호"하는 것은 항상 가능합니다. 클래스는 합성에 의한 다형성 및 코드 재사용을 달성합니다.
  2. 구성은 유연하여 런타임에 포함된 개체를 변경하고 해당 동작을 변경하여 클래스 구현을 변경할 수 있습니다.
  3. 컴포지션 기반 디자인은 클래스 수가 적습니다.
  4. 클래스 간의 "HAS-A" 관계는 "IS-A" 관계보다 의미상 정확합니다.
  5. Java의 컴포지션은 테스트 주도 개발에 특히 유용한 더 나은 클래스 테스트 가능성을 제공합니다.
  6. 여러 객체를 하나로 조합하여 언어에서 "다중 상속"을 달성하는 것이 가능합니다.
  7. 구성에서 메서드 또는 속성 이름 간에 충돌이 없습니다.

결론

Java의 컴포지션은 프로그래밍하는 동안 많은 이점을 제공하며 선호되는 디자인 방법 중 하나입니다. 이 기사에서는 실제 예제와 실용적인 코드를 통해 이 중요한 개념을 이해할 수 있도록 노력했습니다. 컴포지션은 유연성과 강력한 코드를 제공합니다. 코드 재사용성 기능은 코드 중복을 방지하고 비용 효율성을 달성하는 데 도움이 됩니다. 이것은 다양한 프로그램에서 널리 사용되는 방법 중 하나입니다.

소프트웨어 개발 기술을 배우고 업그레이드하는 것을 목표로 하는 컴퓨터 공학 과정에서 upGrad의 이학 석사 와 함께 Java 로 작문을 배우십시오.

적임

50% 또는 이에 상응하는 점수의 AB 학사 학위. 초기 코딩 경험이 필요하지 않습니다.

가격

프로그램 비용은 인도 거주자의 경우 Rs.13, 095/월, 국제 거주자의 경우 USD 5999부터 시작합니다.

당신의 꿈의 직업에 착륙

기계 학습 및 AI 과학 석사 지원