クラスオブジェクトの登録とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > クラスオブジェクトの登録の意味・解説 

クラスオブジェクトの登録

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)

Smalltalk」の記事における「クラスオブジェクトの登録」の解説

Smalltalk は、クラスの定義メッセージ式による実行環境へのクラスオブジェクトの登録として実現する他の言語異なりクラスオブジェクトの登録は単なる定義ではなく実行環境対す操作である。1度クラスオブジェクト登録してイメージファイル保存すると、明示的にクラスオブジェクト削除しないかぎりはクラスオブジェクトイメージファイル残り続ける。Smalltalk 環境対するクラスオブジェクトの登録は次の様に記述する。 "DerivedクラスSmalltalk環境登録する例"Object"基底クラスオブジェクト"subclass: #Derived"Objectクラス派生として登録するクラスオブジェクト名の指定"instanceVariableNames:'ia ib ic'"インスタンス(実体)オブジェクト所属する変数名(インスタンス変数)の指定(空白区切り)"classVariableNames: 'ca cb cc'"クラスオブジェクト共有する変数名(クラス変数)の指定(空白区切り)"poolDictionaries: 'pa pb pc'"クラス所属する変数(プール変数)を取り込む辞書指定(空白区切り)"category: 'example'."Smalltalk環境上でクラス名表示する際にクラス所属する分類指定" poolDictionaries と category除いては、C++ から派生した言語クラス定義概ね同じである。インスタンス変数はインスタンスメソッドのみから参照でき、クラス変数はクラスメソッドとインスタンスメソッドから参照できる他の言語異なりインスタンス変数をクラスメソッドから参照することはできないSmalltalk におけるクラス作成は、特殊構文ではなく単なるメッセージ送信である。クラス登録する際のメッセージは、上記例のように次のセレクター使用することが多い。 #subclass:instanceVariableNames:classVariableNames:poolDictionaries:category: しかし、クラスの登録はあくまでメッセージであり自由に作れるため、実行環境には大抵その他のメソッド用意されている。例えば、近代的な Smalltalk 環境一つ Pharo では、次のセレクター対応したメソッド用意されている。 #subclass:#subclass:category:#subclass:instanceVariableNames:#subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:#subclass:uses: #subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:#variableByteSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:#variableByteSubclass:uses:ginstanceVariableNames:classVariableNames:poolDictionaries:category:#variableSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:#variableSubclass:uses:ginstanceVariableNames:classVariableNames:poolDictionaries:category:#variableWordSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:#variableWordSubclass:uses:ginstanceVariableNames:classVariableNames:poolDictionaries:category:#weakSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:#weakSubclass:uses:ginstanceVariableNames:classVariableNames:poolDictionaries:category: クラスオブジェクトには、クラス変数とは別途クラスオブジェクトClass クラスから派生したインスタンスとして状態を持つためのインスタンス変数がある。このクラスオブジェクトインスタンス変数クラスオブジェクト内だけで共有され、インスタンスオブジェクトからは直接使用できないSmalltalk 環境対すクラスオブジェクトインスタンス変数の登録は次の様に記述する。 Derived class instanceVariableNames: 'ia ib ic'. "クラスオブジェクトインスタンス変数名(空白区切り)" クラスオブジェクトがもつインスタンス変数には変数登録した基底クラス派生クラスで別々の変数領域確保されるという特筆すべき点がある。これを使用して下記様にクラス所属するオブジェクトだけを保持する変数としてつかったりする事ができる。 Object subclass: #Super.Super class instanceVariableNames: 'objects'.Super class methodsFor: 'accessing'!objects ^ objects ifNil: [ objects := OrderedCollection new ].!!Super class methodsFor: 'instance creation'!new | object | object := super new. self objects add: object. ^ object.!!Super subclass: #Derived. Derived new.Derived objects size. "-> 1"Super objects size. "-> 0"

※この「クラスオブジェクトの登録」の解説は、「Smalltalk」の解説の一部です。
「クラスオブジェクトの登録」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。

ウィキペディア小見出し辞書の「クラスオブジェクトの登録」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「クラスオブジェクトの登録」の関連用語

クラスオブジェクトの登録のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



クラスオブジェクトの登録のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのSmalltalk (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS