2017-10-07 14 views
0

Programming Language Pragmatics 4ed by Michael Scott JavaやC#は、CおよびC++のヘッダファイルを模倣できることを言う:JavaとC#はヘッダファイルの構築をどのようにしますか?

初期のヘッダのソフトウェアエンジニアリングの実践を模倣するためにFiのル建設、 JavaやC#のデザインチームは、(のスケルトンバージョンを作成することができますのを担当するプログラマによって、同時に、かつ独立して、であることができるのパッケージまたは名前空間 が含まれています。

それが何を意味するん:「

  • を " そのパッケージまたは名前空間(の公開クラス)のスケルトンバージョンを作成" で、同時かつ独立して、使用

    • フルバージョンを担当するプログラマ "とは何ですか?

    ありがとう。

  • +0

    それは正確に何を意味します。骨格とは何ですか?肉なしの骨。最終的に完成したバージョンが最終的にどのようになるかの定義を意味する。開発中に、たとえその肉が存在しないとしても、最終的な構造の代わりにその骨格を使用することができます。 –

    +4

    この本はあまり役に立たないようです。実際には、これはJavaインターフェース(およびいくつかのデータ・オブジェクト)を定義し、次にモックを使用してクライアントで作業することによって行われます。 – chrylis

    答えて

    1

    設計者が不足している実装の詳細の一部または全てを持つJavaやC#のソースコードを記述することを意味することに

    「をそのパッケージまたは名前空間(の公開クラス)のスケルトンバージョンを作成」。例えばインタフェース

    "完全版を担当するプログラマが同時に、独立して使用する"?

    つまり、プログラマーが残りのコードを書きます。

    1

    これは、実装のないクラスのバージョンを作成することを意味します。 C#では、通常の方法はすべてのメンバーがNotImplementedExceptionをスローするようにすることです。例えば:

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

    同様のアプローチは、例えば、ちょうどそれらを実装するクラスのインタフェースとではなく、作成されます。:

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

    このアプローチは、例えば、いくつかの点であなたのデザインを制限しますがpublic staticメンバーを持つ型には使用できません。

    どちらのアプローチでも、実装がまだ完了していなくても、他のプログラマはDatabase/IDatabaseを使用するコードを書くことができます。このプラクティスの1つの問題は、プログラマーが独自のテスト実装を作成しない限り(例えばモックを使用して)、プログラマーがコードをテストできないことです。

    +0

    ありがとうございます。「パブリックな静的メンバーを持つ型には使用できません」という意味はどうですか?私は2つのアプローチの限界と利点についてもっと知りたいと思っています。 – Ben

    +0

    インターフェイスにはスタティックメンバを含めることはできません。したがって、インターフェイスを使用してpublic staticメンバーを持つクラスのスケルトンとして動作させることはできません。実際のクラスを実装なしで使用する必要があります。 – svick

    関連する問題