인터페이스를 사용하는 이유는 무엇입니까?표준화에만 해당됩니까?[닫은]

StackOverflow https://stackoverflow.com/questions/2026054

  •  19-09-2019
  •  | 
  •  

문제

인터페이스를 사용하는 이유는 무엇입니까?

표준화에만 해당됩니까?

도움이 되었습니까?

해결책

인터페이스의 목적

  • 느슨하게 결합 된 소프트웨어를 만듭니다
  • 지원하다 계약에 의한 디자인 (구현자는 전체 인터페이스를 제공해야합니다)
  • 플러그 가능한 소프트웨어를 허용합니다
  • 다른 객체가 쉽게 상호 작용할 수 있도록하십시오
  • 서로의 클래스 구현 세부 사항을 숨기십시오
  • 소프트웨어 재사용을 용이하게합니다

비유 1: 미국 우주 왕복선과 마찬가지로 러시아 콩 우주선과 중국 Shenzhou 5는 동일한 도킹 인터페이스를 구현하기 때문에 모든 국제 우주 정거장에 도킹 할 수 있습니다. (이것은 단지 예일뿐입니다 - 실생활에서 그것이 사실인지 모르겠지만 모범을 위해 우리의 불신을 중단합시다)

유추 2: 다양한 컴퓨터 모니터를 가정용 컴퓨터에 연결할 수 있습니다. 벽 크기 TV, 오래된 CRT (두꺼운 종류), 20 "평면 화면 또는 맹인이"볼 "을위한 맹인을위한 점자 기계에 연결할 수 있습니다. 이러한 다양한/다른 장치와 귀하의 다양한 장치와 호환성이 있습니다. 컴퓨터는 모두 인터페이스 표준에 동의하기 때문에.

C# 인터페이스의 세부 사항 -C#/OOP 인터페이스를 사용하면 동일한 종류의 일을하고 보이지 않는/가상 세계에서 수행됩니다.

당신은 맞습니다 표준화, 또한 유연성, 확장 성, 확장 성, 유지 가능성, 재사용 성, 테스트 가능성 그리고 .

(소프트웨어 인터페이스를 많이 사용할수록 이러한 "버즈 단어"가 더 많이 이해 될 것입니다. 그리고 우리를 똑같이 잘 수행했기 때문에 항상 실제 세계의 인터페이스를 고려하십시오.)

다른 팁

인터페이스는 구현된 작업이 수행할 수 있는 작업을 설명하는 데 사용됩니다.따라서 동일한 인터페이스를 구현하는 여러 개체를 이 인터페이스 유형으로 처리할 수 있습니다.

예를 들어:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

클래스는 여러 가지 방법으로 인터페이스를 구현합니다.하지만 IMyInterface로 사용할 수 있습니다.예를 들어:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

인터페이스가 왜 유용한지 좀 더 명확해졌으면 좋겠습니다.

인터페이스를위한 것입니다 :), 당신이 물건 사이를 인터페이스 할 수 있도록, 당신이 가질 때 유용합니다.

  • 동일한 물건의 여러 구현
  • 이 클래스가 goonna라는 어떤 종류의 컨벤션이 필요하기 때문에 여러 다른 클래스에 인터페이스를 적용 할 때, 어떤 일을 할 수 있거나 기능을 가질 수 있기 때문입니다.

여기에 높은 수준의 시야가 있습니다 ...

인터페이스는 개념에서 큰 역할을합니다 정보 숨기기.

그들은 기본적으로 당신이 숨기는 데 도움이됩니다 구현 세부 사항 전화 클래스가 해당 구현에 의존하지 않도록 수업 중. 따라서 인터페이스를 사용하면 호출 클래스를 변경하지 않고 구현을 수정할 수 있습니다. 이 모든 것이 차례로 복잡성을 제한합니다 당신의 코드의 유지하기가 더 쉽습니다 장기적으로는.

내가 인터페이스를 처음 이해하기 시작했을 때 그들은 "당신의 클래스에 대한 설명을 제공하는 계약"으로 나에게 설명되었습니다. 그것이 당신에게 도움이 될지 확실하지 않지만 자동차에 대한 인터페이스를 생각하면 그렇게 말할 수 있습니다. 운전, 깨진, 그리고 회전. A 지점에서 B 지점으로 나를 데려 오는 한, 그 기능이 어떻게 구현되는지 알 필요는 없습니다.

인터페이스가 C#/Java와 같은 언어로 사용되는 주된 이유는 해당 언어가 다중 (클래스) 상속을 지원하지 않기 때문입니다 ( 다중 상속의 정확한 문제는 무엇입니까?).

그러나 여러 (인터페이스) 구현이 허가되어 클래스가 다른 방식으로 클래스를 사용할 수 있습니다.

인터페이스는 다소 어색합니다. 그들은 믿음으로 만 계약에 따라 설계를 지원합니다. 같은 이름과 구현 된 인터페이스는 동일한 동작을 의미합니다. 이것은 API 문서 덕분에만 작동합니다. 인간 확인해야합니다. 그것은 인터페이스를 너무 약하게 만듭니다. 그것을 둘러싼 한 가지 방법은 공식적인 사양 일 수 있습니다. 반면에 인터페이스가 너무 강하고 너무 엄격합니다. 종종 재사용에 방해가되는 인터페이스를 발전시킬 수 없습니다. 이것은 메시지를 보내는 동적 언어의 메커니즘 (호출 메소드)과 수신기에서 메시지를 지원하지 않으면 표준 콜백이 호출됩니다. 제약 조건이있는 구체적인 프로토콜을 갖는 것이 더 나을 것입니다.

생각한다 원격...

여기에는 클라이언트와 서버가 있습니다. 인터넷에 의해 물리적으로 분리되어 있다고 가정 해 봅시다. 클라이언트는 서버에서 실제 실행이 발생하는 메소드를 호출하고 있습니다. 클라이언트의 관점에서 클라이언트는 실행을 수행하는 서버의 객체에 대해 아무것도 모릅니다. 그러나 어떤 방법을 호출 해야하는지 알고 있습니다. 클라이언트 프로그램을 구축하는 동안 우리는 인터페이스 (또는 계약)에만 노출됩니다. 우리는 실제로 서버에 살고있는 전체 객체에 노출되지 않습니다. .NET 리모 팅에서 몇 가지 데모 앱을 사용해보십시오. 나머지는 알 수 있습니다. 행복한 프로그래밍.

인터페이스를 사용하는 이유는 무엇입니까?

일부 언어는 vtables를 사용하여 다형성 방법 호출을 구현하고 대부분의 유형 정보를 폐기하여 어렵습니다. ~ 아니다 인터페이스를 정의합니다.

따라서 언어 디자인에 필요하기 때문에 언젠가는 인터페이스를 사용합니다.

인터페이스로 시작하여 대리, 따라서 콘크리트 구현 방법을 호출 할 때 게으른로드 또는 약간의 검증을 수행 할 수 있습니다.

인터페이스는 데이터 유형을 구현 로직과 분리합니다.

인터페이스는 특정 동작의 기능 선언을 포함하는 프로토 타입 모달을 제공합니다.

그리고이 동작을 클래스로 구현하려면 u는 클래스 에서이 인터페이스를 구현해야하며 클래스는이 행동 기능을 갖거나 여러 행동을 가질 수 있습니다.

클래스는 여러 인터페이스를 구현할 수 있기 때문입니다.

다른 사람이 나와 같고 설명만으로 설명하고 설명하는 것이 아니라면 여기에 몇 가지 코드가 있습니다 ....

프로젝트 다운로드를 포함하여 C#에서 신경망의 구현을 발견했습니다. 프로젝트 다운로드는 우아하고 유용한 방식으로 인터페이스를 사용합니다.

http://www.c-sharpcorner.com/uploadfile/rmcochran/ai_oop_neuralnet06192006090112am/ai_oop_neuralnet.aspx

다음은 인터페이스를 사용하는 주된 이유입니다.

  1. 확장 성
  2. 구현 숨기기
  3. 인터페이스를 통해 객체에 액세스합니다
  4. 느슨한 결합.

이것을 방문하십시오 인터페이스에 대해 알 수있는 링크 다운로드 가능한 코드 예제

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top