Python.use(better) #OOP への扉を開く:オブジェクト

記事一覧 Python.use(better)《Python3.1》

OOP への扉を開く:オブジェクト

《著》真樹育未、小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第1版♪1988/05/23 ● 第2版♪2001/01/29 ● 第3版♪2009/12/15

オブジェクト指向プログラミング〔OOP〕の基本概念の理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。

オブジェクトの3要素

オブジェクトを特徴付ける3要素として、

  • 識別性〔identity〕
  • 状態〔state〕
  • 振舞〔behavior〕

が挙げられます。

識別性〔identity〕
2006-01-16 Python.use(better) #OOP: 識別性〔identity〕
識別性は、あるオブジェクトを他のオブジェクト群と区別するのに必要な特性です。その位置だけで各オブジェクトを特定したいなら、アドレスを利用できます。なぜなら、その時刻にそのアドレスに存在するオブジェクトは、ただ1つだからです。コードを記述するときには、変数を用いてそのオブジェクトを区別できます。ただし、変数の識別子(名前)とオブジェクト自身の識別性とを、混同しないように注意が必要です。
2006-01-20 Python.use(better) #OOP:識別性〔identity〕整数オブジェクト
変数を定義することの意義について考察します。リテラル表現を持たないオブジェクトは、それを参照する術がありません。変数は、リテラル表現に代えて、任意のオブジェクトを参照する手段を提供します。@@変数と同様に、関数やクラスを定義するということは、その名前と同じ変数によって、生成した関数オブジェクトやクラスオブジェクトを束縛しているにすぎません。
2006-01-24 Python.use(better) #OOP:識別性〔identity〕関数オブジェクト
関数を定義することの意義について考察します。変数は、任意の「関数」オブジェクトを参照する手段を提供します。変数の束縛を解いて、ある関数オブジェクトを解放すると、別の関数オブジェクトを参照できるようになります。2つの関数オブジェクトは、どちらも同じコード(関数の本体)を持つ、異なるオブジェクトです。変数を介して得られる機能は同じですが、それを実現するのは異なる関数オブジェクトです。
2006-01-25 Python.use(better) #OOP:識別性 -- クラスオブジェクト
クラスを定義することの意義について考察します。変数は、任意の「クラス」オブジェクトを参照する手段を提供します。変数の束縛を解いて、あるクラスオブジェクトを解放すると、別のクラスオブジェクトを参照できるようになります。属性変数は、関数オブジェクトを参照する手段を提供します。2つのクラスオブジェクトは、どちらも同じコード(クラスの本体)を持つ、異なるオブジェクトです。変数を介して得られる機能は同じですが、それを実現するのは異なるクラスオブジェクトです。
状態〔state〕
2006-01-17 Python.use(better) #OOP: 状態〔state〕
状態は、あるオブジェクトの特性と、その特性の現在の値によって確定します。過去の操作を累積した結果が、現在の状態であると考えられます。これは、あるオブジェクトの振舞が、その履歴によって影響を受けることを意味します。つまり、オブジェクトの状態変化とは、変数(インスタンス属性)の束縛を解いて「新たなオブジェクトと関連を結ぶ」ことに他なりません。
2006-01-19 Python.use(better) #OOP: 状態〔state〕
ある分数を表現する、クラス Fraction を取り込みます。インスタンス属性 .numerator を再設定しようとすると、例外 AttributeError を生成して、エラーメッセージが表示されます。これは、インスタンス属性を再設定できないことを意味します。そこで、分数の演算(加算)を試します。すると、@。
振舞〔behavior〕
2006-01-18 Python.use(better) #OOP: 振舞〔behavior〕
振舞は、メッセージを送受信することで、オブジェクトの状態変化に伴って、他のオブジェクトと相互作用する様子を規定します。クラス Fraction のインスタンスは、演算子 +(メソッド呼び出し __add__)に呼応して、分数の和を表わす新たなインスタンスを生成します。つまり、Fraction オブジェクトが演算子 + に反応する振舞は、自身の状態を変化させずに「新たなインスタンスを生成する」という規定を満たすことで、正確に実現されます。つまり、テストケースを記述するのは「オブジェクトの振舞をコードで正確に表現する」ことに他なりません。
□□□□□□

オブジェクトの3表現

オブジェクトを表現(参照)する方法として、

  • リテラル〔literal〕
  • 変数〔variable〕
  • 式〔expression〕

が挙げられます。

リテラル〔literal〕
2006-01-27 Python.use(better) #OOPリテラル
リテラルを利用することの意義について考察します。リテラルは、任意のオブジェクトを参照する手段を提供します。@@
変数〔variable〕
2006-01-23 Python.use(better) #OOP:変数〔variable〕
変数を利用することの意義について考察します。変数は、任意のオブジェクトを参照する手段を提供します。@@
式〔expression〕
2006-01-26 Python.use(better) #OOP:式〔expression〕
式を利用することの意義について考察します。式は、任意のオブジェクトを参照する手段を提供します。@@
□□□□□□


》こちらに移動中です《
TOP


関連記事

Last updated♪2009/12/18