「継承とコンポジション」の編集履歴(バックアップ)一覧はこちら

継承とコンポジション」(2010/06/08 (火) 05:22:46) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

継承とは誰かが作ったクラスを受け継ぐことです。技術の伝承です。 コンポジションは誰かが作ったクラスを取り入れるです。合成とか層化とかいいます。 この2つはよくis-aとかhas-aといった区別をします。 簡単に言えば 親クラスのすべてが子クラスに適用できるなら継承、 子クラスが親クラスを包含している場合や親クラスの一部を使いたいときはコンポジションを使うべきです。 この親子関係は大変ややこしいので、次のように子クラスから親クラスを求めることがあります。 ABのコントロール(スタチックとかエディットボックスとか)を簡単に扱うクラスがほしい! このときこれらコントロールに共通する部分を抜き出します。 すると… コントロールはすべてウインドウハンドルを持っている コントロールはすべてキャプションを持っている コントロールはすべて可視/不可視状態を設定できる コントロールはすべてリサイズ可能である …といった共通部分があります。(他にもあります) これらを親クラスにもたせ、それ以外は子クラスに持たせます。 リストボックスなら特定のアイテムが選択されたとか、チェックボックスなら選択状態とか。 このような子クラスから親クラスを作る方法を汎化(または抽象化)などと言うらしいです。 まあ、N88BASICのころから当たり前のようにやってきたことをクラスとか継承なんてカッコつけてるだけですけどね!
継承とは誰かが作ったクラスを受け継ぐことです。技術の伝承です。 コンポジションは誰かが作ったクラスを取り入れるです。合成とか層化とかいいます。 この2つはよくis-aとかhas-aといった区別をします。 簡単に言えば 親クラスのすべてが子クラスに適用できるなら継承、 子クラスが親クラスを包含している場合や親クラスの一部を使いたいときはコンポジションを使うべきです。 この親子関係は大変ややこしいので、次のように子クラスから親クラスを求めることがあります。 ABのコントロール(スタチックとかエディットボックスとか)を簡単に扱うクラスがほしい! このときこれらコントロールに共通する部分を抜き出します。 すると… コントロールはすべてウインドウハンドルを持っている コントロールはすべてキャプションを持っている コントロールはすべて可視/不可視状態を設定できる コントロールはすべてリサイズ可能である …といった共通部分があります。(他にもあります) これらを親クラスにもたせ、それ以外は子クラスに持たせます。 リストボックスなら特定のアイテムが選択されたとか、チェックボックスなら選択状態とか。 このような子クラスから親クラスを作る方法を汎化(または抽象化)などと言うらしいです。 まあ、N88BASICのころから当たり前のようにやってきたことをクラスとか継承なんてカッコつけてるだけですけどね! **継承とオーバーロード [[C++]]ではオーバーロードは自分の中だけで機能します。 子クラスで親クラスの関数をオーバーロードすることはできません。。。 しかしABではオーバーロードできます。C++厨は気をつけてくださいね。C++使う人がABを使わないか… #asciiart(blockquote){ #N88BASIC Class B Public Sub x(i As Long) Print "B::x" End Sub End Class Class D Inherits B Public Sub x(d As Double) Print "D::x" End Sub End Class Dim d As D d.x(555)'"D::x" d.x(12.354)'"B::x" }

表示オプション

横に並べて表示:
変化行の前後のみ表示: