質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

3回答

1527閲覧

ポリモーフィズムは実際の開発でどのように使われるのでしょうか?

k0908

総合スコア102

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2018/09/26 07:49

オブジェクト指向について勉強しています。
ポリモーフィズムは実際の開発でどのように使われるのでしょうか?
ポリモーフィズムはプロパティの値を変えると動きが変えられるもの、と認識していますが、どういうメリットがあるのか理解できていません・・・。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

実際の開発でということだと……

ちょっと特殊なプリンタ制御(直接プリンタのAPIを操作する)をしているシステムがありまして、さらにプリンタ自体が複数社のものを選択使用できます。(つまり中で使うAPIが全然異なる)

で、プリンタ制御システムでは、

  • すべてのプリンタで共通で利用できてほしい機能を定義した基底クラス
  • 個別のプリンタに対応した(実際の制御を各プリンタのAPIで実装した)派生クラス群

という形で作成しています。
プリンタ制御システムではどのプリンタであっても、基底クラスの型として定義した変数に派生クラスを突っ込むので、処理自体は基底クラスのメソッドを呼び出す格好になります。
※で、実際には override によりポリモーフィズムが実現して、正しいドライバとAPIで処理される

なんてのは実際に作って運用してますけどね。
新しいプリンタに対応する場合も、派生クラスを一つ追加する形になるので、既存プリンタに影響を及ぼさず、対応も早くできるようになっています。

※プリンタのつもりで FILE に(ビットマップイメージで)出力する、なんてクラスもあったり

投稿2018/09/26 08:25

編集2018/09/26 08:29
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

ポリモーフィズムはざっくり、異なるものを同じ記述で表現できることです。
つまり、通常はケースバイケースで異なる記述をしないといけないのに、同じ書き方で書けることを意味します。
一々異なる書き方を調べないで済みます。また、相違毎に一々分岐するコードを書かなくて済むケースもあります。その結果、プログラムの開発速度が上がります。

ポリモーフィズムの意味する範囲はかなり広いので、具体例は割愛します。

投稿2018/09/26 08:38

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

pythonでどのオブジェクトに対してもstr()で文字列表現が得られたり、list, tuple, dict, 文字列, numpy配列いずれも[]を使って要素にアクセスできたりすることがポリモーフィズムです。

大雑把に端折って説明すると、前者は__str__()などをオブジェクトのクラスに実装することで、後者は__getitem__()__setitem__()などを実装することで実現されています。

投稿2018/09/26 08:08

編集2018/09/26 08:11
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問