Help us understand the problem. What is going on with this article?

<2> Clascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi)

2. Clascal のオブジェクト指向拡張

AppleLisa には Lisa Pascal と呼ばれる言語 1 が存在し、これをオブジェクト指向拡張したものが Clascal です。Apple が Pascal に対して行った最初のオブジェクト指向拡張です。

Clascal は Object Pascal ではありません。

See also:

2.1. Clascal のクラス型

Clascal のクラス型は別ユニットで定義する必要があります。プログラム本体で定義する事はできません。

2.1.1. クラス型の定義

Clascal のルートクラス 2TObject です。よって Clascal のすべてのクラスは TObject の下位クラスとなります。

クラスの定義は interface セクションで "クラス型名 = subclass of 親クラス" のように行います。ルートクラスを作るための object があるような記述も見受けられますが、ハッキリしません。

クラスに属するメソッド (関数/手続き) の実装は implementation セクションに "methods of クラス型名; ~ end;" のブロックを作り、グループ化して記述します。

Sample.pas
unit Sample;

interface

type
  TCls = subclass of TObject
    ID: Integer;
    function TCls.CREATE(object: TObject; itsHeap: THeap): TCls;
  end;

implementation

methods of TCls;
  function TCls.CREATE(object: TObject; itsHeap: THeap): TCls;
  begin
    if object = NIL then
      object := NewObject(itsHeap, THISCLASS);
    SELF := TCls(object);
    SELF.ID := 0;
  end;
end;

end.

Clascal のクラス型にはコンストラクタやデストラクタがなく (CREATE メソッドの実装は必須)、プロパティもありません。

  • 多重継承はできません。
  • override 指令の付いたメソッドは、自クラスで上位クラスの同名メソッドを上書きする事を意味します。
  • abstruct 指令の付いたメソッドは抽象メソッドです。自クラスでは機能を実装せず、機能は下位クラスで実装する必要があります。但し、下位クラスで実装されなくてもエラーにはなりません。
  • default 指令の付いたメソッドは、下位クラスで機能を実装される事を前提とします。default 指令の付いたメソッドが上位クラスにある場合、下位クラスで機能を実装せずにメソッドを呼び出してもエラーにならずに、この default 指令の付いたメソッドが呼び出されます。
  • 自クラスを表すにはキーワード SELF を使います。
  • 親クラスを表すにはキーワード SUPERSELF を使います。SUPERSELF は override メソッド内でよく使われます。

2.1.2. クラス型の作成と破棄

var
  Cls: TCls;
begin

  Cls := TCls.CREATE(NIL, mainHeap);
  ...
  Cls.Free;

end;

CREATE メソッドを使ってオブジェクトを生成 (インスタンス化) し、Free メソッド (TObject で実装されている) で破棄します。

2.2. Apple と Pascal

Apple][ の時代から Apple 社のコンピュータには Pascal がありました 3

この Pascal Syntax Posterジェフ・ラスキンが考案したもので、スティーブ・ジョブスがトム・カミフジにデザインを依頼して出来た Apple][ Pascal の構文図です。
image.png
※ 流石ジョブスというか、ラスキンの努力が (半分くらい) 台無しなポスターに仕上がっています (w

古い Mac OS や Lisa OS 等はその大部分が Pascal で書かれていましたし、Adobe のフォトショップも初期のバージョンは Pascal で書かれていました。

See also:

参考文献

image.png

タイトル 著者 ISBN-10
(Amazon)
出版年
オブジェクト指向プログラミング〈下巻〉 カート・J.シュマッカー (著)
大谷 和利 (訳)
4890520929 1990/9/15

Clascal は断片的な情報しかなく、エミュレータ等で実行して検証する事もほぼ不可能に近いです。日本語で書かれた Clascal の情報なんていうのはこの書籍くらいにしか存在しないのではないでしょうか?

索引

[ ← 1. オブジェクト指向拡張とレコード ] [ ↑ 目次へ ] [ → 3. Macintosh 用 Pascal のオブジェクト指向拡張 ]


  1. Apple][ および Apple III Pascal のスーパーセット。 

  2. 親クラスのない (それ以上上位に遡れない) クラスの事。 

  3. 概要は「用語集 (標準 Pascal 範囲内での Delphi 入門)」を参照。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした