私は訴訟に取り組んでおり、参照できる「クラスライブラリ」の定義が必要です。私が見つけることができるすべての本とすべてのドキュメントは、読者がライブラリとは何かをすでに知っていると想定しているようです。 「ライブラリ(コンピューティング)」に関するウィキペディアのエントリでさえ、参照が少ない。そしてそれが持っている参照は80年代以前のものです。
では、C#のコンテキストでは、クラスライブラリとは何でしょうか。 (参考文献付き)
私は「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」から適切な数の定義を取得していますが、ライブラリが何であるかを読者が知っていることも前提としています。
「クラスライブラリ」という用語は、言語、ランタイム、および規則によって大きく異なる可能性があるあいまいなアサーションです。議論をC#だけに限定したとしても、クラスライブラリであるものとクラスライブラリではないものについて有用な定義を見つけるのは困難です。
「クラスライブラリ」は、NuGetパッケージ、別のプログラムでの使用を目的としたアセンブリ、親クラスまたは特殊なケースのクラスを提供するための* .csファイルのコレクションなど、C#の特定の機能により実際にこれがさらに複雑になります。同じのいくつかの組み合わせ。混乱を招くとしても、上記のいずれにも複数の「クラスライブラリ」、または「クラスライブラリ」の一部ではないコードを含めることができます。
訴訟について言及したため、おそらく「クラスライブラリ」であるかどうかに依存する何らかの不一致があり、問題の契約は正確な定義を指定していないか、またはあなたまたは他の当事者のいずれかが破棄したいものを含んでいた。そのような場合は、たとえ明確で明確な定義を見つけたとしても、法廷でその定義を議論することから逃れることはできません。全国プログラマー組合。
もちろん、「クラスライブラリ」の定義が訴訟にとって重要ではない場合は、あいまいな定義を使用してください。 (1つ以上のクラスのグループ。これは、任意の形式で提示され、すべて同じ名前空間に含まれる場合も、同じ言語で記述されない場合もあります。
オブジェクト指向言語によって提供される中心的なプログラミング抽象化は、objectsおよびclasses。オブジェクトは、データを含み、特定のメッセージに応答できる、実際に機能するプログラムエンティティを表します。クラスは、オブジェクトの世界を定義および編成する手段です。クラスは、オブジェクトのグループのデータと動作を定義します。たとえば、プログラマーが大学用の学生データベースアプリケーションを構築したいとします。そうすることで、彼女は生徒の関連する特性を定義する
Student
というクラスを作成する場合があります。これらの特性には、名前、学生ID番号、GPAなどのデータが含まれる場合があります。また、学生が実行できる動作が含まれている場合もあります。たとえば、学生は試験を受ける方法、不平を言う方法、質問をする方法を知っているかもしれません。最後に、クラスはinheritanceによって相互に関連付けられます。この例では、プログラマは、動作を特殊化および/または拡張するStudent
と呼ばれるGradStudent
のサブクラスを作成する場合がありますいくつかの方法でStudent
の。たとえば、GradStudent
は彼または彼女のアドバイザーについて不満を言うのを好むかもしれませんが、一般的なStudent
は通常成績について不満を好むかもしれません。 スーパークラスの特定のデフォルトの動作をオーバーライドするサブクラスを定義することにより、継承により、プログラマは既存のクラスの機能の多くを簡単に再利用できます。 (C++などの一部のオブジェクト指向言語では、スーパークラスには基本クラスという用語を使用し、サブクラスには派生クラスを使用します。明らかな理由により、ここではそれらの用語の使用を避けます。)
テクノロジー入門 (ワシントン大学法科大学院からも)のページでは、ソフトウェア分解についての詳細も説明しています。これにより、法的な定義を必要とせずに、クラスが何であるかをわかりやすく説明できます。