種類の継承とは
「種類」とは、複数の手順や変数を機能ごとに分類して、まとめたものです。
プログラムが大きくなると、手順や変数をたくさん作ることになり、整理する必要があります。
種類を使うことで、手順や変数を一つの固まりにまとめることができます。
また、「作る」命令を使うことで、種類のコピー(インスタンス)を生成することができます。
種類を作ることで、オブジェクト指向のプログラムを作ることができます。
種類を「継承」することもできます。
種類は、一般のプログラミング言語では、クラスと呼ばれるものに相当します。
しかし、宣言した種類はインスタンスを作成することなく、静的に呼び出して利用することができるなど、
JavaやC#におけるクラスとは異なる点もあります。
また、プロデルでは型を宣言する必要がないため、オーバライドなども異なります。
種類を継承する
【もとの種類の名前】を受け継ぐ
別の種類にある手順や変数を受け継いだ新しい種類を作ります。
継承した種類に、さらに手順や変数を追加して定義することができます。
一つの種類で、受け継げる種類の数は、1つです。
プラグインのオブジェクトから継承することもできます。
例えば、ウィンドウを引き継いて、それぞれの機能に合わせたウィンドウを種類として作ることができます。
例
車を受け継いだ消防車という種類を作ります。
消防車には「サイレン」という手順だけが書かれていますが、
車を受け継いでいるため、「鳴る」という手順を呼び出すこともできます。
消防車がサイレン
消防車が鳴る
消防車とは
車を受け継ぐ
[自分]が、サイレンの手順
「ウーウー」を表示する
終わり
終わり
車とは
[自分]が、鳴る手順
「ブッーブッー」を表示する
終わり
終わり
手順の上書き
継承先の種類にて、継承元にある手順と引数が同じ手順を新たに上書き定義できます。
同じ種類内の手順内で、レシーバ補語を省略すると、継承元の種類で呼び出した場合であっても、継承先の手順が優先されて呼び出されます。
レシーバ補語(「自分」)を明示的に指定すると、手順が継承先の手順で上書きされた場合でも、呼び出した種類を基準にして定義された手順が呼び出されます。
車Aという車改を作る
車Aが名前を表示する
車とは
+名前
[自分]を命名する順
名前は、「テスト車」
終わり
[自分]が、名前を表示する手順
自分を命名する //同じ種類で定義された手順(車:命名する)が呼び出されます。
命名する //オーバライドされた手順(車改:命名する)が呼び出されます。
名前を報告する
終わり
終わり
車改とは
車を受け継ぐ
[自分]を命名する手順
名前は、「テスト車改」
終わり
終わり
利用を制限する
種類に属する変数または手順、設定項目は、他の種類からの利用を制限することができます。
たとえば、種類内部でのみの利用を想定した手順に対しては他の種類から実行できないようにすることや、種類所属する変数を他の種類から操作できないようにすることができます。
識別子 意味 説明 + 公開 変数へ設定・取得できる範囲は制限されません。(Public) - 非公開 同じ種類にある手順からのみ利用することが可能です。(Private) # 限定 同じ種類にある手順や継承された種類にある手順からのみ利用することが可能です。(Protected) ~ 内部限定 (現在は無効)同一プログラム内から利用することが可能です。(Internal) (なし) 通常は「+」(公開)と同じ制限になります
例
車の名前は、「ベンツ」
車の色は、「黒」
車の持ち主名は、「カイル」
車の名前を表示する
車の暗証番号を表示する ーー見ることができない
車が内部処理する ーー実行できない
もし[車が「1212」で、持ち主]なら
「この車の持ち主です」を表示する
そうでなければ
「この車の持ち主でありません」を表示する
もし終わり
車とは
+名前
+色
+持ち主名
-暗証番号
-[自分]が、内部処理する手順
暗証番号は、「1212」
終わり
[自分]が、[キー]で、持ち主かどうかを判定する手順
内部処理する
もしキーが、暗証番号なら
○を返す
でなければ
×を返す
もし終わり
終わり
終わり
抽象的な種類
抽象的な種類は、生成できない種類であることを指定します。
このキーワードが指定された種類にて定義された手順や変数は、
継承した種類から利用できます。
実装なしの種類 (インタフェース)
実装なしの種類が手順定義の先頭のみでプログラム文本体を含まないことを指定します。
このキーワードが指定された種類は、インタフェースとして扱われ、具体的な本題がない型情報のみが宣言でます。
他の種類で実装することで使用します。
例文
実装なし(インタフェース)の種類である「水中生物」種類と「生物」種類を定義して、
その両者を実装する「魚」種類を定義するプログラム例です。
【さかな:水中生物】
さかなという魚を作る
//次のように書いて、実装なし種類を生成することはできません
さかなという水中生物を作る
水中生物とは
実装なし
[これ]が、泳ぐ手順
終わり
終わり
生物とは
実装なし
[これ]が、生まれる手順
終わり
終わり
魚とは
水中生物を実装する
生物を実装する
[これ]が、泳ぐ手順
「すいすい」を表示する
終わり
[これ]が、生まれる手順
「うまれる」を表示する
終わり
終わり
単一種類 (シングルトン)
種類が単一種類(シングルトン)であることを指定します。
このキーワードが指定された種類は、プログラム中で1回だけ自動的にインスタンスが生成されます。
「作る」文によってインスタンスを作ることはできません。
オブジェクトに種類名を直接指定することでその種類の手順や変数を利用できます。
例文
スカイツリーの高さを報告する
//次ように書いてインスタンスは生成できません
タワーというスカイツリーを作る
タワーの高さを報告する
スカイツリーとは
単一種類
+高さ=634
終わり
次は 5.種類の中の手順