Java의 느슨한 결합과 단단한 결합: 느슨한 결합과 단단한 결합의 차이점 - 2020 - 다른 사람
게시 됨: 2021-05-02목차
소개
Java는 클래스와 객체를 사용 하는 객체 지향 프로그래밍 언어입니다. Java 언어의 클래스와 객체로 작업하는 경우 결합은 Java에서 중요한 역할을 합니다. 결합은 Java의 한 요소가 다른 요소에 대해 가지고 있는 지식의 정도를 나타냅니다. 다른 클래스에서 한 클래스를 사용하는 정도입니다. 이 기사는 Java 의 커플링 유형에 대한 심층적인 이해를 제공할 것입니다.
자바에서 커플링이란?
커플링은 다른 클래스에 대한 한 클래스의 종속성일 뿐입니다. 코드의 한 개체가 프로그램의 다른 개체를 사용하는 경우 Java에서는 느슨한 결합 이라고 합니다 . 결합에서 두 개의 클래스 또는 개체는 사전 정의된 작업을 완료하기 위해 서로 협력하고 작업합니다. 이는 단순히 한 요소가 기능을 완료하기 위해 다른 요소가 필요함을 의미합니다. 한 클래스가 다른 클래스의 논리를 호출하는 것을 협업이라고 합니다.
커플링의 종류는 무엇입니까?
Java의 결합에는 두 가지 유형이 있습니다.
Java의 느슨한 결합
두 개의 클래스, 모듈 또는 구성 요소가 서로에 대한 종속성이 낮을 때 Java에서는 느슨한 결합 이라고 합니다 . Java에서 느슨한 결합 은 클래스가 서로 독립적임을 의미합니다. 한 클래스가 다른 클래스에 대해 가지고 있는 유일한 지식은 다른 클래스가 느슨한 결합에서 인터페이스를 통해 노출한 것입니다. 상황에 따라 외부에서 개체를 사용해야 하는 경우를 느슨한 결합 상황이라고 합니다.
여기서 부모 개체는 개체를 거의 사용하지 않으며 개체는 외부 소스에서 쉽게 변경할 수 있습니다. Java 의 느슨한 결합 은 코드 유지 관리 및 노력을 줄여주기 때문에 긴밀한 결합보다 우위에 있습니다. 한 클래스의 변경은 다른 클래스의 변경을 요구하지 않으며 두 클래스는 독립적으로 작동할 수 있습니다.
예 1: 프로그램에서 두 개의 클래스 A와 B를 생성했다고 상상해 보십시오. 클래스 A를 부피라고 하고 클래스 B는 실린더의 부피를 평가합니다. 클래스 A 볼륨을 변경하면 클래스 B를 변경할 필요가 없습니다. 이것을 Java에서 느슨한 결합 이라고 합니다 . 클래스 A가 클래스 B를 변경해야 하는 경우 긴밀한 결합이 있습니다.
암호
패키지 느슨한 결합; 클래스 볼륨 { 공개 정적 무효 메인(문자열 인수[]) { 실린더 b = 새 실린더(25, 25, 25); System.out.println(b.getVolume()); } } 최종 클래스 실린더 { 개인 int 볼륨; 실린더(int 길이, int 너비, int 높이) { this.volume = 길이 * 너비 * 높이; } 공개 int getVolume() { 반품량; } } |
설명: 위의 예에서 클래스 A와 클래스 B는 느슨하게 결합되어 있습니다.
실시예 2
가져오기 java.io.IOException; 인터페이스 음식 { 공개 무효 표시(); } 클래스 이탈리아어 { 식품 s; 대중 이탈리아어(음식){ this.s = s; } 공개 무효 표시(){ System.out.println("이탈리아어"); s.디스플레이(); } } 클래스 중국어 구현 음식 { 공용 중국어(){} 공개 무효 표시(){ System.out.println("중국어"); } } 클래스 멕시코 구현 음식 { 공개 멕시코(){} 공개 무효 표시(){ System.out.println("멕시코"); } } 공개 클래스 테스트 { public static void main(String args[]) IOException { 음식 b = new Chinese(); 음식 c = new Mexican(); 이탈리아어 = new 이탈리아어(b); //a.display()는 이탈리아어와 중국어를 인쇄합니다. a.디스플레이(); 이탈리아어 a1 = 새로운 이탈리아어(c); //a.display()는 이탈리아어와 멕시코를 인쇄합니다. a1.디스플레이(); } } |
산출
이탈리아 사람 중국인 이탈리아 사람 멕시코 인 |
설명: 위의 예에서 세 클래스는 모두 느슨하게 연결되어 있습니다. 이는 단순히 구현된 서비스를 주입하여 푸드 인터페이스를 사용하여 서비스를 제공할 수 있음을 의미합니다.
세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 학위 를 취득하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
타이트 커플링
두 클래스가 서로에 대한 의존도가 높으면 긴밀한 결합이라고 합니다. 클래스가 너무 많은 책임을 맡거나 한 클래스의 변경이 다른 클래스의 변경을 요구할 때 발생합니다. 긴밀한 결합에서 개체(부모 개체)는 사용을 위해 다른 개체(자식 개체)를 만듭니다. 부모 객체가 자식 객체가 어떻게 구현되었는지에 대해 더 많이 알고 있다면 부모 객체와 자식 객체가 밀접하게 결합되어 있다고 말할 수 있습니다.
예: 프로그램에서 두 개의 클래스 A와 B를 생성했다고 상상해 보십시오. 클래스 A를 부피라고 하고 클래스 B는 실린더의 부피를 평가합니다. 볼륨을 변경하면 동일한 변경 사항이 클래스 B에 반영됩니다. 따라서 두 클래스 모두 서로에 대한 의존도가 높고 밀접하게 결합되어 있다고 말할 수 있습니다.
암호
패키지 타이트 커플링; 클래스 볼륨 { 공개 정적 무효 메인(문자열 인수[]) { 실린더 b = 새 실린더(15, 15, 15); System.out.println(b.볼륨); }} 클래스 실린더 { 공개 int 볼륨; 실린더(int 길이, int 너비, int 높이) { this.volume = 길이 * 너비 * 높이; }} |
산출
3375 |
설명: 위의 예에서 클래스 A와 클래스 B는 함께 묶여서 팀으로 작업합니다.
느슨한 커플 링과 타이트 커플 링의 차이점
다음 표는 느슨한 커플링 과 단단한 커플 링 의 차이점을 나열합니다 .
느슨한 결합 | 타이트 커플링 |
객체는 서로 독립적입니다. | 한 개체는 작업을 완료하기 위해 다른 개체에 종속됩니다. |
더 나은 테스트 가능성 | 테스트 가능성은 Java의 느슨한 결합 만큼 크지 않습니다 . |
비동기 통신 | 동기 통신 |
조정이 적습니다. 두 클래스 간에 코드를 교환하는 것은 쉽지 않습니다. | 더 나은 조정을 제공합니다. 두 개체 간에 코드를 쉽게 바꿀 수 있습니다. |
인터페이스 개념 없음 | 인터페이스에 GOF 원칙을 따릅니다. |
정보 흐름 감소 | 추가 정보 흐름 |
높은 변화 | 변경 기능이 없습니다. |
결론
간단히 말해서 Java의 느슨한 결합은 긴밀한 결합에 비해 훨씬 낫습니다. 코드의 더 나은 유연성과 재사용성을 제공합니다. 두 클래스가 서로 독립적이므로 코드를 매우 쉽게 변경할 수 있습니다. 또한 더 나은 테스트 가능성을 제공합니다.
소프트웨어 개발에 대해 자세히 알아보려면 LJMU의 컴퓨터 공학 이학 석사를 확인하세요. 이 석사는 일하는 전문가를 위해 설계되었으며 12개 이상의 프로젝트 및 과제, 업계 멘토와의 1-ON-1, 500시간 이상의 학습을 제공합니다.