2017-10-07 14 views
0

Programming Language Pragmatics 4ed by Michael Scott는 자바와 C#은 C와 C++에서 헤더 파일을 모방 할 수 있다고 말한다 :Java 및 C# 헤더 파일 생성을 어떻게 모방합니까?

이 ( 자바 또는 C# 디자인 팀이 의 골격 버전을 만들 수 있습니다 Fi를 제작 건설 초기 헤더의 소프트웨어 공학 연습을 모방하려면 공용 클래스) 패키지 또는 이름 공간은 전체 버전을 담당하는 프로그래머가 동시에 사용하는 이 될 수 있습니다.

이 의미하는 무엇을 :

  • 가에 의해 독립적으로 동시에 사용

  • ""(의 공개 수업) 의 패키지 나 네임 스페이스의 골격 버전을 만들기 " 가득 차있는 버전을 책임지는 프로그래머? "

감사합니다.

+0

정확히 무엇을 의미 하는지를 의미합니다. 해골이란 무엇입니까? 어떤 고기도없는 뼈. 최종 버전의 최종 버전이 무엇인지 정의하는 것입니다. 개발 중에 최종 구조체 대신에 해당 구조체를 사용할 수 있습니다. 단,이 구조체의 고기는 존재하지 않습니다. –

+4

이 책은 원하는 것보다 덜 도움이되는 것처럼 보입니다. 실제로 이것은 Java 인터페이스 (및 일부 데이터 객체)를 정의한 다음 mock을 사용하여 클라이언트에서 작업하는 방식으로 수행됩니다. – chrylis

답변

1

는 "(의 공개 수업)의 패키지 나 네임 스페이스의 골격 버전을 만들"

디자이너가 일부 또는 누락 구현 세부 사항의 모든 자바 또는 C# 소스 코드를 작성하는 것을 의미한다

; 예 : 인터페이스

"전체 버전을 담당하는 프로그래머가 동시에, 독립적으로 사용"?

즉, 프로그래머가 나머지 코드를 작성한다는 의미입니다.

1

구현이없는 클래스의 버전을 만드는 것을 의미합니다. C#에서 일반적인 방법은 모든 멤버가 NotImplementedException을 던지게하는 것입니다. 예컨대 :

이 방법은 어떤 방법으로 디자인을 제한하지만 유사한 접근 방식은 단지 인터페이스가 아니라이를 구현하는 클래스, 예컨대 :

public interface IDatabase 
{ 
    IEnumerable<Employee> GetAllEmployees(); 
} 

을 만들 것

public class Database 
{ 
    public IEnumerable<Employee> GetAllEmployees() => throw new NotImplementedException(); 
} 

, 예를 들어, public static 멤버가있는 유형에는 사용할 수 없습니다.

두 가지 방법 모두 구현이 아직 완료되지 않았지만 다른 프로그래머는 Database/IDatabase을 사용하는 코드를 작성할 수 있습니다. 이 연습의 한 가지 문제는 해당 프로그래머가 자체 테스트 구현을 만들지 않는 한 (예 : 조롱 사용) 코드를 테스트 할 수 없다는 것입니다.

+0

감사."공용 정적 멤버가있는 유형에는 사용할 수 없습니까?"라는 의미는 무엇입니까? 나는 두 가지 접근법 사이의 한계와 이점에 대해 더 많이 알고 싶어한다. – Ben

+0

인터페이스에는 정적 멤버가있을 수 없습니다. 따라서 인터페이스를 사용하여 공용 정적 멤버가있는 클래스의 스켈레톤 역할을 할 수는 없으므로 구현이없는 실제 클래스를 사용해야합니다. – svick