添付ファイルの追加

ログイン済のユーザのみが添付ファイルをアップロード出来ます。

添付ファイル一覧

Kind Attachment Name Size Version Date Modified Author Change note
png
»utility_class1.png 5.3 kB 2 01-7-2011 01:01 ytp
png
»utility_class2.png 6.4 kB 2 01-7-2011 01:02 ytp
png
»utility_class3.png 8.3 kB 2 01-7-2011 01:02 ytp
png
»utility_class4.png 4.3 kB 1 02-7-2011 01:24 ytp
png
»utility_class5.png 4.5 kB 2 02-7-2011 02:07 ytp
png
»utility_class6.png 30.7 kB 1 05-7-2011 02:05 ytp
png
»utility_class7.png 9.6 kB 5 31-12-2011 20:50 ytp
png
»utility_class8.png 12.3 kB 5 31-12-2011 20:50 ytp
png
»utility_class9.png 7.4 kB 1 22-7-2011 03:29 ytp

This page (revision-42) was last changed on 14-8-2016 22:57 by ytp

This page was created on 12-4-2011 01:29 by ytp

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

-
Difference between version and

At line 9 changed one line
例外的にとは書きましたが、このケースは割と多く存在します。一言で言うと、
次の二つのケースではユーティリティクラスを例外的に許します。
#メイン関数(メソッド)を持つクラス
#別メモリ空間で稼働するシステムとの間でオブジェクトが持つデータを受け渡す場合
例外的にとは書きましたが、これらの事例は割と多く存在します。
!メイン関数を(メソッド)持つクラス
OSがアプリケーションを起動する場合、メイン関数が起点となります。OSは、起動パラメータをデータとしてメイン関数に渡します。この起動パラメータ(データ)とメイン関数(処理)は分離されざるを得ません。そのため例外となります。\\
メイン関数の中には必要最低限の処理のみを記述するようにし、業務用クラスのインスタンスに処理を早く委譲すべきです。\\
At line 11 changed one line
です。抽象的な言葉過ぎて解りにくいと思うので例を使って説明します。\\
二つ目の例外がこれですが、抽象的な言葉過ぎて解りにくいと思うので具体例を使って説明します。\\
At line 34 changed one line
これをクラス図に描くと次のようになります。RDBユーティリティクラスが、受注伝票や発注伝票のデータのみを使ってRDBMSとの間で受け渡しを実施します。RDBMSは、アプリケーションが稼働しているメモリ空間の外にあります。
これをクラス図に描くと次のようになります。RDBユーティリティクラスが、受注伝票や発注伝票の属性値(データ)のみを使ってRDBMSとの間で受け渡しを実施します。RDBMSは、アプリケーションが稼働しているメモリ空間の外にあります。
At line 44 added one line
At line 37 changed 4 lines
前項で説明したように、外部のメモリ空間で稼働しているシステムとのやりとりが発生する境界ではデータ構造を持たないユーティリティクラス(関数)が必要になります。これは言い方を換えると、「RDB層」「アプリケーション層」などのような層(Layer)があればその境界線でユーティリティクラスが必要になるということです。\\
つまりオブジェクト指向的実装を徹底しようとするならば、層は出来るだけ作らない方が良いということになります。次の図を見て下さい。\\
[{Image src='utility_class7.png'}]
上の図は、一般的な3層構造アプリケーションの動きを書いています。
前項で説明したように、外部のメモリ空間で稼働しているシステムとのやりとりが発生する境界ではデータ構造を持たないユーティリティクラス(関数)が必要になります。これは言い方を換えると、「RDB層」「アプリケーション層」などのような__層(Layer)があればその境界線でユーティリティクラスが必要になる__ということです。次の図を見て下さい。\\
[{Image src='utility_class6.png'}]
上の図は、一般的な3層構造アプリケーションの動きのうち、画面の情報をRDBに格納するまでの流れを表しています。層と層の間はオブジェクトをそのまま渡せないため、電文という形でデータを渡しています。電文を受け取るプロセスは各層での処理の起点の役割、つまりメイン関数と同等の機能を負います。そのため関数にならざるを得ないのです。例外の1番目で書いたのとほとんど同じ理由です。\\
例えばアプリケーション層の起点ではHTTP電文を受け取ってオブジェクトへと変換します。この動きをメイン関数と比較すれば、HTTP電文が起動パラメータと替わるだけであることが解ります。\\
結果として、上記のような__層分けを出来るだけ行わない方が本来のオブジェクト指向に近づけます__。「データと処理の分離」の発生頻度が減るからです。\\
Version Date Modified Size Author Changes ... Change note
42 14-8-2016 22:57 4.816 kB ytp to previous
41 10-8-2016 19:57 5.217 kB JimmiXS to previous | to last cbhXdk http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com
« This page (revision-42) was last changed on 14-8-2016 22:57 by ytp