\r\n\r\n
クラスと構造
オブジェクト指向プログラミング言語の主な概念には、カプセル化、継承、ポリモーフィズムなどがあります。クラスと構造体は、既存のほとんどのOOプログラミング言語において、プログラマがこれらの概念を実装するのに役立つOO構成/ツールの2つです(Javaは構造体を提供しません)。クラスは、現実世界のオブジェクトを抽象的に表現したものです。ストラクチャーは、類似の目的を持つクラスと非常によく似ていますが、クラスと比較してほとんど制限がありません。クラスも構造体も、似たような種類のデータを一緒にまとめるために使われます。
クラスとは何ですか?
クラスは実世界のオブジェクトを抽象的に表現し、リレーションシップは各クラスが他のクラスとどのように接続されているかを表現する。クラスとリレーションシップは、どちらもアトリビュートと呼ばれるプロパティを持っています。クラスのメソッドは、これらのクラスの振る舞いを表したり定義したりします。クラスのメソッドやプロパティをクラスのメンバと呼びます。多くの場合、プロパティを非公開とし、そのプロパティにアクセスするためのパブリックメソッドを作成することでカプセル化を実現します。オブジェクトはクラスのインスタンスである。継承では、他のクラス(スーパークラスと呼ばれる)からクラス(サブクラスと呼ばれる)を拡張することができます。ポリモーフィズムにより、プログラマはあるクラスのオブジェクトをそのスーパークラスのオブジェクトに置き換えることができます。問題定義にある名詞がそのままプログラムのクラスとなることも多い。同様に動詞はメソッドになる。public, private, protectedはクラスの典型的なアクセス修飾子である。クラス図は、システムのクラス、クラス間の関係、およびそのプロパティを表します。
構造とは何か?
前述したように、構造体はクラスとよく似た目的を持ったものですが、クラスよりも若干機能が制限されています。実際、クラスは構造の拡張と見なすことができる。例えば、構造体はC++のクラスと同じですが、デフォルトでは共通のメンバを持っています。ユーザは、複合型を表す構造体を定義することができる。クラスと同様に、構造体は複数の型に属することができるメンバーを含んでいます。CやC++では構造体の定義にキーワード構造体を使用し、.NETプログラミング言語では同じ構造体にキーワード構造体を使用します。
クラスと構造体の違いは何ですか?