質問

一般に、ほとんどのプログラミング関連の概念をうまく伝えることができると思います。
それでも、フィールド、クラス、パッケージの関係を要約するのはまだ難しいと思います。


"フィールド"、"クラス"の要約方法および「パッケージ」および「彼らの関係」

役に立ちましたか?

解決

C、C ++、およびJavaを教えてから、同様の問題に直面しました。 ここに私がしていることがあります:

最初に、パッケージを個別に保持し、最後に説明します。

理想的には、私の意見では、生徒はまずADTについて、できればCで学ぶ必要があります。彼らは構造体を持ち、個別の操作を持っています。その場合、フィールドは単に「スロット」になります。構造体では、メモリレイアウトを表示してそれを示すこともできます。関数は、これらの構造体で動作する個別のエンティティです。

次に、クラス、メソッド、およびフィールドに移行し、本質的に(継承といくつかの逸話を除いて)それらが多くの点でADTの構文糖衣であることを示します。

必要に応じて、オブジェクトのレイアウト、継承、仮想テーブルを教えることができます(私の経験では、メモリレイアウトを見ると、継承をよりよく理解できます)。

最後に、クラスを一緒に整理する方法のトピックに到達します。 C ++を教える場合、実際にはパッケージはありませんが、名前空間について説明し、編成と個別のコンパイルについて議論できます。

Javaを使用している場合、これらは同じ名前空間内のクラスのコレクションであり、特別なアクセスルールがあり、それらを表示することを説明するだけです。 Javaのパッケージシステムはとにかく壊れているので、通常はパターン(たとえば、UIパッケージをCから分離する)を実行します。

要約:クラスは、いくつかのフィールドのメモリ配置であるオブジェクトと、それらを操作する関連メソッドの基礎を形成します。パッケージは、もう1つのアクセス制限メカニズムを持つクラスのコレクションです。

他のヒント

説明する方法:

  • オブジェクトはスロットのコレクション、データを保持するスロットはフィールド、コードを保持するスロットはメソッドです。パブリックスロットはオブジェクトの外側にあり、プライベートスロットは内側にあります。オブジェクトはクライアントにサービスを提供するため、メソッドは主にパブリックである必要があります。フィールドはプライベートである必要があるため、クライアントはサービスがどのように機能するかわかりません。したがって、フィールドはオブジェクトの実装の詳細です。
  • クラス名は一意である必要があるため、コードをサードパーティのライブラリと組み合わせることができます。おそらく「リスト」、「顧客」などと呼ばれるクラスが何千もあるため、単純/短いクラス名では不十分です。したがって、クラスをパッケージに配置して、名前をより長く、より難しく作成します。パッケージ内のクラスのサブセットのみがクライアントに表示される必要があるため、パブリックとデフォルトの2つのアクセスレベルがあります。これにより、パッケージをライブラリとして機能させることができます。

フィールドはオブジェクトの実装の詳細であり、そのクラスはパッケージ内に存在し、一意の名前を保証し、ライブラリのようなモジュール性を提供します。

説明しようとしている人の年齢に応じて、使用できる簡単な例えがあります:税務フォーム。税務フォーム(たとえば、1040EZなど)はクラスのようなものであり、フォームに記入する各スペースはフォームのフィールドです。クラスがフィールド内のデータに対して実行されるメンバー関数を含むように、税務フォームには、フィールド内の情報を使用して何を行うべきかについての指示も含まれています。また、税務フォームの完全なセットには、主な税務フォームだけでなく、記入が必要なその他の項目(追加のスケジュールなど)が含まれるため、パッケージには主なクラスだけでなく、やり取りが必要な他のクラスも含まれます

フィールドは、クラスまたはクラスのオブジェクトインスタンスに属する変数です。ローカル変数とフィールドの違いは、フィールドのスコープが広いことです。

クラスは、ユーザー定義のデータ型のテンプレートです。クラスは、状態と動作の両方を持っているため、プリミティブデータ型よりも高度です。

パッケージは、クラスをグループ化し、ネーミングの競合を解決するために使用されます。複数の開発者と公開されているコードライブラリを使用すると、一部のクラスに同じ名前(Math、LinkedList、FileUtilsなど)を付ける可能性が非常に高くなります。クラス名の前に一意のパッケージ名を付けると、コンパイラー(および他の開発者)は使用するクラスを決定できます。

興味深いことに、オブジェクトに言及せずにオブジェクト指向プログラミングに取り組みました。それがあなたの問題かもしれないと思う。

これが私が使用するものです。

オブジェクトは物です。それらには属性(測定、存在の状態など)があります。属性はフィールドと呼ぶことができます。 [私は教室で見つけたものをよく使う-カップ、マーカー、帽子、コートなど、これを説明するために。]

オブジェクトは、メソッド、メソッド関数、または操作と呼ばれる動作にも関与します。

オブジェクトの機能(属性と操作、フィールドとメソッドなど)は、オブジェクトを分類する方法を提供します。

オブジェクトのクラスに共通の機能は、まあ、クラス定義にまとめることができます。クラス定義は、クラスのメンバーであるオブジェクトの属性とメソッドを記述します。

パッケージはクラス定義のコレクションです。理想的には、パッケージ内のクラスには共通点がありますが、これは要件ではなく、有用な区別でもありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top