カレンダー
04 | 2024/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
フリーエリア
最新トラックバック
[1]
[2]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ポリモフィズムってなんじゃい?
と思ったけど、これって「継承」と似たようなものでしょうか?
上位クラスに何か命令をすると、下位クラスもその命令に従うといった感じですか?
たとえば、「社長」が社員にたいして、「起立」と命令すると、部長や課長、平社員まで全員たってしまう。ということ。
「社長」は「社員クラス」に対して命令してるんだけども、「部長クラス」「課長クラス」「平社員クラス」の「社員」は全員が「社長」の言うことを聞いてしまう。(実際はそんな会社ないだろ)
業務の話で言えば、ある会社で扱う商品には、「一般商品」「特売品」「新製品」の3種類あって、その「商品」にたいしても価格計算の必要があるが、3種類それぞれ計算方法が違う場合。
この場合どの「商品」を意識することなく、「商品から価格を取得できる」という形でモデル化します。
具体的には「一般商品」や「特売品」で意識せずに「商品」としてクラスを扱います。
この場合、「商品担当」クラスから価格計算したい時は「商品」の具体的なクラスがなんであろうとも、「商品」クラスに対して価格計算を命令すればいいわけです。
具体的クラス「レア商品」「中古品」が増えても、同じように「商品」にたいして命令すればいいので「商品担当」は何の変更も必要ないというわけ。
これは便利。
なんとなく分かってきたぞぉ。
と思ったけど、これって「継承」と似たようなものでしょうか?
上位クラスに何か命令をすると、下位クラスもその命令に従うといった感じですか?
たとえば、「社長」が社員にたいして、「起立」と命令すると、部長や課長、平社員まで全員たってしまう。ということ。
「社長」は「社員クラス」に対して命令してるんだけども、「部長クラス」「課長クラス」「平社員クラス」の「社員」は全員が「社長」の言うことを聞いてしまう。(実際はそんな会社ないだろ)
業務の話で言えば、ある会社で扱う商品には、「一般商品」「特売品」「新製品」の3種類あって、その「商品」にたいしても価格計算の必要があるが、3種類それぞれ計算方法が違う場合。
この場合どの「商品」を意識することなく、「商品から価格を取得できる」という形でモデル化します。
具体的には「一般商品」や「特売品」で意識せずに「商品」としてクラスを扱います。
この場合、「商品担当」クラスから価格計算したい時は「商品」の具体的なクラスがなんであろうとも、「商品」クラスに対して価格計算を命令すればいいわけです。
具体的クラス「レア商品」「中古品」が増えても、同じように「商品」にたいして命令すればいいので「商品担当」は何の変更も必要ないというわけ。
これは便利。
なんとなく分かってきたぞぉ。
PR
このカプセル化が一番難しいらしいけど簡単だとおもうだよなぁ。
もし、クラスに仕事を割り振ったときに、担当クラスがどういう風に処理をするかは担当クラスだけが知ってるようにして、仕事を頼むほうは中身は知らなくてもいいという風にするのがカプセル化。
従来のやり方で何かのサブルーチンを呼ぼうと思ったら、そのサブルーチンはどのDBを見て、どういう型のデータを引数にして、どういう数値を入力してとか調べた上で呼び出してたけど、クラス化されていれば、そんな煩わしいことが必要ないということ。
ようするに、クスリのカプセル錠と同じ、このクスリを飲めば「風邪が治る」という結果が分かってて、中身の成分を知ってる必要がない。
以上。
もし、クラスに仕事を割り振ったときに、担当クラスがどういう風に処理をするかは担当クラスだけが知ってるようにして、仕事を頼むほうは中身は知らなくてもいいという風にするのがカプセル化。
従来のやり方で何かのサブルーチンを呼ぼうと思ったら、そのサブルーチンはどのDBを見て、どういう型のデータを引数にして、どういう数値を入力してとか調べた上で呼び出してたけど、クラス化されていれば、そんな煩わしいことが必要ないということ。
ようするに、クスリのカプセル錠と同じ、このクスリを飲めば「風邪が治る」という結果が分かってて、中身の成分を知ってる必要がない。
以上。
さっぱり進まない。
継承とは、クラス同士の関連性を表した言葉です。
例えば「乗り物」には、種類があり、人を乗せたり、物を運んだり、走ったりしますが、「クルマ」もそうだし、「スポーツカー」や「RV車」ももちろんそうです。逆に具体的なクラスが持っている性質を、一般的なクラスが持っているとは限りません。「スポーツカー」はエンジンを持っていても、「乗り物」はエンジンを持っているとは限りません。
つまり、具体的クラスは一般的なクラスの性質を持っていても、一般的なクラスは具体的クラスの性質を持っているとは限らない。
一般的クラス
「乗り物」
↓
「クルマ」
↓
具体的クラス
「スポーツカー」「RV車」
このように、
「具体的なクラスが、一般的なクラスの性質を引き継いでいる」
ことを、継承といいます。
ちなみに、
オブジェクトをより大きく(一般的)にくくることを「抽象化」
オブジェクトをより細かく(具体的)にくくることを「具象化」
といいます。
例えば「乗り物」には、種類があり、人を乗せたり、物を運んだり、走ったりしますが、「クルマ」もそうだし、「スポーツカー」や「RV車」ももちろんそうです。逆に具体的なクラスが持っている性質を、一般的なクラスが持っているとは限りません。「スポーツカー」はエンジンを持っていても、「乗り物」はエンジンを持っているとは限りません。
つまり、具体的クラスは一般的なクラスの性質を持っていても、一般的なクラスは具体的クラスの性質を持っているとは限らない。
一般的クラス
「乗り物」
↓
「クルマ」
↓
具体的クラス
「スポーツカー」「RV車」
このように、
「具体的なクラスが、一般的なクラスの性質を引き継いでいる」
ことを、継承といいます。
ちなみに、
オブジェクトをより大きく(一般的)にくくることを「抽象化」
オブジェクトをより細かく(具体的)にくくることを「具象化」
といいます。
オブジェクトは、存在する「もの」の事だったが、クラスは、その「もの」を同じ性質をもったグループに分けたグループのことをクラスという。
例えば、
ピストンは、部品というグループの中では「部品」といえるし、エンジンというグループの中では「エンジン」と言える。もっと大きく「車」というグループに入れることも出来る。
このグループのことをクラスという。
ハイ、まとめ
クラスとは、オブジェクトのうち、共通の性質を持ったグループのこと!
つまり、シリンダやピストン、バルブがオブジェクトで、エンジンがクラスって事か!
なるほど~。納得!
例えば、
ピストンは、部品というグループの中では「部品」といえるし、エンジンというグループの中では「エンジン」と言える。もっと大きく「車」というグループに入れることも出来る。
このグループのことをクラスという。
ハイ、まとめ
クラスとは、オブジェクトのうち、共通の性質を持ったグループのこと!
つまり、シリンダやピストン、バルブがオブジェクトで、エンジンがクラスって事か!
なるほど~。納得!
次のページ
>>