「オブジェクト指向プログラミング」の版間の差分
削除された内容 追加された内容
特徴の加筆修正 |
|||
25行目:
#**[[ジェネリックプログラミング]](''generic programming'')
#*[[派生型|サブタイプ多態性]](''subtyping'')
#**
#**{{仮リンク|動的ディスパッチ|en|Dynamic dispatch|label=}}(''dynamic dispatch'')
#**[[多重ディスパッチ]](''multiple dispatch'')
54行目:
=== 抽象化 ===
純粋抽象クラスの仕組みがこれに相当する。実例としては[[ソフトウェアコンポーネント]]や[[Java]]などのプログラミング言語で用いられている[[インタフェース (抽象型)|インターフェース]]がある。これは[[カプセル化]]の{{仮リンク|プロトコル(OOP)|en|Protocol (object-oriented programming)|label=プロトコル}}、[[継承 (プログラミング)|継承]]の{{仮リンク|サブタイピング|en|Subtyping|label=}}、[[ポリモーフィズム|多態性]]の
この「設計と実装の分離」はよく聞かれる言葉であるが、プログラミング(コーディング)レベルでは、ソースコードの随所に抽象ポイントを設ける事を意味する。OOPにおける抽象ポイントとは上述の[[インタフェース (抽象型)|インターフェース]]にアクセスする為のアドレス置場の事である。アドレスは実装面ではグローバルなネットワーク番地、ローカルなメモリ番地、または特殊なアドレス指定キーワードなどで表現される。抽象ポイント=アドレス置場に収納されるインターフェースのアドレスは、プログラム実行時に随時切り替えられて柔軟な多分岐プロセスを可能にし、これがOOPの利点とされる仕様変更とエラー修正が比較的容易な保守性と堅牢性につながるものになる。なお、抽象ポイント=アドレス置場の積極利用は決して新しい考え方ではなく、その原点は[[プロセッサ]]の間接アドレス参照(後年に[[ポインタ (プログラミング)|ポインタ]]と定義されるもの)機能であり、[[機械語]]と[[アセンブリ言語|アセンブラ]]の時代から存在する古典的な標準手法でもある。当時は処理の多分岐化の為だけでなくコードサイズ節約やクロック数削減のテクニックとしても使われていたが、プログラムの構造化などが十分に普及していない黎明期においては、間接アドレス参照の多用はプログラムの可読性を下げるものとしてやがて倦厭されるようになった。C言語の学習でもポインタが鬼門とされており、この方面の理解の難しさを示している。しかし[[プログラミングパラダイム|プログラミング理論]]と[[ソフトウェア工学]]の発展に伴い、[[クラス図]]を始めとする[[統一モデリング言語|各種ダイアグラム]]による綿密な設計の下で抽象ポイントを用いれば、可読性を損ねずに保守性や堅牢性を向上させる事が知られるようになった。
=== メッセージング ===
|