예제가 포함된 Java의 구성이란 무엇입니까?
게시 됨: 2021-04-09Java는 두 클래스 간의 관계를 구축하여 객체 지향 프로그래밍 및 코드 재사용성을 지원하는 다재다능한 언어입니다. 코드를 재사용하고 한 클래스에서 다른 클래스로 중복성을 줄이는 데 사용되는 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에서 컴포지션 디자인 기술을 사용하면 다음과 같은 이점이 있습니다.
- "클래스 상속보다 객체 구성을 선호"하는 것은 항상 가능합니다. 클래스는 합성에 의한 다형성 및 코드 재사용을 달성합니다.
- 구성은 유연하여 런타임에 포함된 개체를 변경하고 해당 동작을 변경하여 클래스 구현을 변경할 수 있습니다.
- 컴포지션 기반 디자인은 클래스 수가 적습니다.
- 클래스 간의 "HAS-A" 관계는 "IS-A" 관계보다 의미상 정확합니다.
- Java의 컴포지션은 테스트 주도 개발에 특히 유용한 더 나은 클래스 테스트 가능성을 제공합니다.
- 여러 객체를 하나로 조합하여 언어에서 "다중 상속"을 달성하는 것이 가능합니다.
- 구성에서 메서드 또는 속성 이름 간에 충돌이 없습니다.
결론
Java의 컴포지션은 프로그래밍하는 동안 많은 이점을 제공하며 선호되는 디자인 방법 중 하나입니다. 이 기사에서는 실제 예제와 실용적인 코드를 통해 이 중요한 개념을 이해할 수 있도록 노력했습니다. 컴포지션은 유연성과 강력한 코드를 제공합니다. 코드 재사용성 기능은 코드 중복을 방지하고 비용 효율성을 달성하는 데 도움이 됩니다. 이것은 다양한 프로그램에서 널리 사용되는 방법 중 하나입니다.
소프트웨어 개발 기술을 배우고 업그레이드하는 것을 목표로 하는 컴퓨터 공학 과정에서 upGrad의 이학 석사 와 함께 Java 로 작문을 배우십시오.
적임
50% 또는 이에 상응하는 점수의 AB 학사 학위. 초기 코딩 경험이 필요하지 않습니다.
가격
프로그램 비용은 인도 거주자의 경우 Rs.13, 095/월, 국제 거주자의 경우 USD 5999부터 시작합니다.