クラスとインターフェイスの関係を製造業システムの視点で説明してみた。

ファントム品

製造業の生産管理部門では、内示や確定オーダを元に、部品構成表(BOM)から所要量展開を行うことで、購買指図と製造指図を発行しますが、BOMに登録する品目は、入荷実績または製造実績により通常は在庫管理されます。

ただし「工程途中で跳ね出される中間品で、在庫があるものは所要量展開時に引き当てをしたいが、新規に製造指図は発行したくない」という素性の怪しい品目を、ファントム(怪人)品と呼びます。phantom

セット品やキット品など、その品目自体の在庫管理はしないが、個々の部品単位で管理する、という性格の品目もファントム品です。

オペラ座の怪人(Phantom of the Opera)という有名なミュージカルがありますが、この怪しいファントム品はMRP計算のための製造リードタイムは0日に設定しておいて、製造指図も出ないので実績も入れる必要ありません。

クラス(部品)とインターフェイス(ファントム品)

MRP計算により製造指図を生成する部品(例えばクランクシャフト)は、部品自体の属性(寸法・重量など)や用途(ピストン運動を回転運動に変換する)をひっくるめて「CRANK_SHAFT001」という品目コードを定義します。

これは構造体(属性)に関数(用途)を加えてカプセル化(品目コード)したものと言えるかもしれません。

このようにクランクシャフトという部品クラスは、構造体の中に目的を果たす機能を完備していますが、熱処理後に跳ね出されたペンディング品(ファントム品)には、属性も用途も定義されていないにもかかわらず、品目コードとしては存在しています。

言い換えるとクランクシャフトクラスは、クランクシャフトにインスタンス化できますが、用途のないペンディング品はそのままではインスタンス化できないため、前工程のショットブラスト工程上がり品(サブクラス)をオーバーライドします。phantom

ファントム品は自身が、インスタンス化できない抽象クラス(abstract)であり、インスタンス化できない抽象的なクラスをインターフェイスと言います。

DOMオブジェクトが提供するNodeインターフェイス

ブラウザはHTMLの開始タグから終了タグまでを、1つのDOM(Document Object Model)オブジェクトとして要素化(エレメント化)し、DOMはJavaScriptやjQueryからエレメントにアクセスするために、Nodeインターフェイスを提供します。

インターフェイスという言葉は2つの特徴を持っています。

  1. 異なる媒体(JavaScriptとDOM)を繋ぐもの(API)
  2. それ自体をインスタンス化することに意味がないクラス

こんな投稿も読まれています